プログラミングで頭のいいロジックを思いつくためにはどうすればいいのか教えて

1: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 11:25:42.656 ID:8vR3jSDf0
アホみたいな効率のものしか思い付かない

2: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 11:26:14.873 ID:kCgg/XCZ0
人気フレームワークのソース読んでパクる

4: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 11:27:19.128 ID:8vR3jSDf0
>>2
規模がでか過ぎて読み解けないんだが

16: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 11:40:31.270 ID:8Nxo9Sdhr
>>4
為せば成る

3: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 11:27:14.202 ID:/AT1tRyx0
製品作るわけでもないならこだわる必要ないだろ

7: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 11:29:12.260 ID:8vR3jSDf0
おまえら馬鹿にしてきそうだけどpaizaってサイトあるじゃない?
あそこのスキルチェック問題を何問か解いてるんだけど「これどうやって解くの…」って問題が多いの……
>>3
製品作るんだけども!

5: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 11:28:49.893 ID:9AinwBVoa
沢山考えて経験してるだけ
学生時代にベースの地頭育ってないともたろんキツい

8: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 11:30:04.714 ID:8vR3jSDf0
>>5
中卒ニートでおちんちんしごくことしか考えずに10年近く生きてる人間はもう間に合わないん?
ほんと日々どうやってちんちん気持ちよくするかってことしか考えてこなかった

11: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 11:33:53.405 ID:9AinwBVoa
>>8
当たり前だけど高学歴理系大学出て順調に育った奴に勝てるわけないぞ
数年努力すれば底辺には食い込めるかもしれんが

12: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 11:34:42.594 ID:8vR3jSDf0
>>11
うぇぇぇぇぇぇ……!!!!

10: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 11:32:49.622 ID:8vR3jSDf0
マジかよ知らずのうちに思考力高まってたのか

14: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 11:35:39.936 ID:8vR3jSDf0
や…やだ…頭良くなりたい……
頭良くなりたいよぉ……

18: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 11:43:03.329 ID:8vR3jSDf0
例えばさお前らさ
是非お昼の頭の体操として聞いてほしいんだけど
1~20までランダムの数字が10個あるとしてその中から2つの数値をつくる
この時2つの値が同値になる最小の値はいくつか
って問題があったらとしたらどういうふうに考える?

20: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 11:47:03.115 ID:UfWWjtaS0
>>18
その程度の個数なら全組み合わせ作らせる総当たり法でいいんじゃね?
昔の8bitパソコンでもすぐ終わるっしょ

22: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 11:52:37.539 ID:8vR3jSDf0

>>21
値はランダムだから
1,1,1,1,1,1,1,1,1,1の場合も
20,20,20,20,20,20,20,20,20,20の場合もあるよ
つまり10個の値は毎回異なるけど最小で同値の組み合わせを導き出せるロジックを組みたいの

>>20
俺もそう思ったんだけどそれって雑魚じゃない?

30: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 11:59:39.516 ID:UfWWjtaS0
>>22
いやいやいや、何万回も同じ計算させるのなんてCPUにやらしときゃいいんだよ
文句も言わずに全組み合わせ試して「これです」って言ってくれるぞ
かわいいヤツだ

36: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:04:24.217 ID:8vR3jSDf0
>>30
たしかにそうだけどさぁ……そうなんだけどさぁ…!
なるべく計算量少なくして上げてコンピューターちゃんに楽させてあげたいってのが親心ってものじゃない?
>>33
ほんとそれ!!!
他人のソースコードなんか読んでたら頭破裂しちゃうよね

21: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 11:47:44.742 ID:mUCtzBEcM
>>18
すまん問題の意味がよく分からん
1=1が最小じゃね

23: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 11:53:41.849 ID:81NQRc+00
>>18
1から20の範囲の乱数が10個でしょ?
同値のものが1つも出ない可能性があるよね?

24: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 11:54:17.330 ID:8vR3jSDf0
>>23
多分あるね
その場合はないよーってしたい

26: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 11:56:13.990 ID:8vR3jSDf0
>>23
あっ違う多分曲解してる
こんな感じ
no title

187: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 15:40:41.457 ID:81NQRc+00

189: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 15:42:08.205 ID:8vR3jSDf0
>>187
Cわかんないよ……

192: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 15:46:52.711 ID:8vR3jSDf0
お前らのおかげで過去最大級にプログラムと向き合えてる!
この調子で>>187も読み解くわ!

25: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 11:54:40.644 ID:8vR3jSDf0
ないよーって出力したい、ね!

27: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 11:57:44.893 ID:ZInUSSoK0
問題がわからん

31: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:01:12.642 ID:8vR3jSDf0

>>27
no title

簡単に説明するとこんな感じ!!!

37: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:06:05.550 ID:qLosupcl0

>>31
問題の意味が分からんのだが

10個の数字がランダムに選ばれたら
2個の数字の和がどれかの数字にならない場合もあるだろ

例えば、全部1だったらどれを選んでも
1+1=1にはならない

39: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:07:39.191 ID:8vR3jSDf0
>>37
その場合は1と1が同値になるわけだから答えは1でいいよ!

48: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:15:19.765 ID:qLosupcl0

>>39
ランダムに選ばれた10個の数字から
合計が等しくなるように2組の数字を選ぶ
合計値を最小にしたい

ということな

49: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:15:41.206 ID:8vR3jSDf0
>>48
うゅん!

55: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:21:34.847 ID:qLosupcl0

>>49
考えてやるけど
こういう問題考えるの時間の無駄だぞ
実際のプログラムではくその役にも立たないアルゴリズム

競技プログラムはこういう糞アリゴリズムばかり出す印象
時間の無駄だから競技プログラムはやめとけ

57: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:23:26.109 ID:8vR3jSDf0
>>55
んぇぇ……
でも解けたらパワーアップ出来そうな気がしない…?

59: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:25:37.119 ID:qLosupcl0
>>57
ならない
実際のシステムを構築しとけ
糞アプリでもこんなの考える100万倍は役に立つ

65: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:31:23.194 ID:8vR3jSDf0
>>59
実際のシステム組むのは組むので大変じゃん
フロントもバックも一応書けるんだけど細かいとこがわかんないから途中で投げちゃう

69: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:35:32.287 ID:JHCHjIfsM
>>65
例えば昔中学生がBMI算出するだけのチープなアプリ作って少し話題になったことがあっただろ?
そんなんでも良いんだよ
職業プログラマでも何もないところからさあ作れ!と言われると何もできなくなるようなの意外といるんだよ
信じられないことにな

74: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:38:19.963 ID:8vR3jSDf0
>>69
それ計算式知ってれば猿でもできちゃわない?
>>71
ホリエモンみたいなこと言わないで

78: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:42:08.242 ID:JHCHjIfsM
>>74
と思うだろ?
それが出来ないのも実際いるんだよ
お前が考えてるほど敷居は高くないよ
こういう問題考えるのもそれはそれで意義があるけどわからないからってどうということはないよ多分な

93: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:49:19.678 ID:8vR3jSDf0
>>78
ネットでpaizaの問題とか全問正解余裕で出来るだろwww
とか書かれてたからこういう問題バリバリ解けないとプログラマーになれないと思ってた…
ちなみにやっぱatCorderのほうが難しいん

96: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:51:02.160 ID:h4LdOz5I0
>>93
paizaのスキルチェック楽しいよね
俺は最近ランクCになったよ

102: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:54:03.048 ID:8vR3jSDf0
>>96
ふふっ…!
おれもCランクだよー!
一緒にいつかSランクやっつけようね

104: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:56:00.524 ID:h4LdOz5I0
>>102
今何歳?
俺は専門卒(公務員試験のための糞学校)卒業してニートになって借金200万あるよ!
ニート中おちんちんに気持ちよさによがって今28になってしまった
おたがいPGに・・・なれるといいね・・・!

107: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:58:48.839 ID:8vR3jSDf0
>>104
23歳だよ
>>103
実はこの問題はBランク問題の内容だったりするよ
でもたしかNとMは結構上限デカかった気がする

100: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:52:59.953 ID:JHCHjIfsM
>>93
paizaはAランクまでは簡単なのがほとんどだけどSランクから一気に跳ね上がるから全問余裕はかなり優秀な部類なんじゃねえの?

105: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:57:09.721 ID:8vR3jSDf0
>>100
Aランクも難しいの多くない?
以前詰み防止チェックってのをやったことあるんだけど頭がギチギチギチィ!!!ってなったよ
Sランクは一問だけめちゃくちゃ簡単なのあるけどほかはすごく難しかったね…
ロジックが思い付かないんだよぉ!

101: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:53:26.570 ID:qLosupcl0
>>93
騙されんなよ
だからこういう問題は考えるだけ時間の無駄
動くもの作れ

72: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:37:56.831 ID:qLosupcl0

>>65
こんな糞アルゴリズム考えてる暇あるなら
動くもの組め

途中で投げる奴は適性ないから諦めろ

81: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:43:20.376 ID:8vR3jSDf0
>>72
途中で投げちゃう癖はどうすれば治るの
いつも15分くらいコード書いたら疲れたー昼寝するーってなっちまうんだけど
そんで再開するのは二ヶ月後とかそんなもん
>>73
多分アルゴリズム見て実装できるのバブルと選択くらいだよ
他のはロジックもそうだし実装も結構大変じゃないですか?

82: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:45:02.128 ID:qLosupcl0
>>81
適性ない
あるいは人生舐めてる

85: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:46:05.874 ID:8vR3jSDf0
>>82
ぐぇぇ……
やっぱ10年間おちんちんしごくことしか考えてなかった人間成せることなんてなにもなかったんだ…

87: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:47:01.531 ID:1QlnkKBMr
>>85
お前の過去を聞いてバカにしたいんだけどどんな原因で何をして無駄な10年過ごしたの?

98: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:51:46.978 ID:8vR3jSDf0
>>87
中学生の頃におちんちんしごきの気持ちよさに気づいて四六時中扱いてるうちに不登校になって今に至るんだよ
いまでも1日5時間はちんちんいじってる

92: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:48:38.897 ID:qLosupcl0
>>85
どうやって考えればいいか?ならアドバイスもできるけど
やる気ないけどどうすればいい?に対しては
やる気ない奴には無理としか答えられんよね

84: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:45:41.581 ID:qLosupcl0
>>81
ソートなんて今どき自分じゃ書かねえよ
提供されてるもの使え

46: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:12:32.970 ID:ZInUSSoK0
>>31
プログラミング詳しくないけど、値(a1-a10)を昇順にソートしてa1,a2を足してa3-a10に同じ値があるか総当りするしかなくね?

47: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:13:37.251 ID:8vR3jSDf0
>>46
俺の説明が下手だっただけで>>38みたいなパターンも考慮しなくちゃならないよ

28: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 11:58:58.330 ID:duLdEuYaM
問題を伝えられない時点で察した

34: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:02:51.179 ID:8vR3jSDf0
>>28
うぅ…!うぅううううう!!!!!!

38: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:07:38.120 ID:+WW+0+N+d
4 6 7 9 12なら19が答え?

40: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:08:40.166 ID:8vR3jSDf0
>>38
そうそう!!!!!
説明上手くて助かります!!!!
なんか上手い数字ないかなって探してたんだけど見つからんかった!

53: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:19:28.863 ID:+WW+0+N+d
すまん、>>38は答え13だった

54: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:20:18.024 ID:8vR3jSDf0
>>53
あっほんとだ
気が付かんかった!!!!

51: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:18:02.602 ID:5t1/o7Jfp
足し算だけ?引き算で作っても良いの?

52: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:18:46.720 ID:8vR3jSDf0
>>51
引き算はだめだよ!!!

58: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:24:43.115 ID:ZT/Cbm6c0
まず既存のものをしっかり勉強することじゃね

61: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:28:40.893 ID:8vR3jSDf0
>>58
うーん…
ソートのアルゴリズムとか?
一回クイックソートとか実装してみよっかな…

63: キュアイッパンハケン ◆PYoPbZwyyI 2019/11/19(火) 12:29:40.748 ID:BG/7V6sBH
>>61
listオブジェクトに.sortって書くだけでできるんやで

64: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:30:57.488 ID:JHCHjIfsM
>>63
標準のソートは大抵の場合単純なクイックソートではないぞ
例えばC++だと今の標準はクイックソートとシェルソート合わせたような奴だったと思うぞ

67: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:34:26.663 ID:8vR3jSDf0
>>63
そんぐらいしってっし!!?!
でもそういうののロジックを知らずに使うのってプログラマーとして雑魚くなっちゃうんじゃないかって思ってんです

73: キュアイッパンハケン ◆PYoPbZwyyI 2019/11/19(火) 12:38:05.858 ID:BG/7V6sBH
>>67
ソートには種類があることだけ知ってればいいよ
既存のソートだと問題があるときに他のソート手法の存在を知っていればググって実現できるよね
知らなくてググることも出来ないと困るかな

62: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:28:58.432 ID:9AinwBVoa
足し算は2つまで?
それとも3つでも4つでもいいの?

66: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:32:24.182 ID:8vR3jSDf0
>>62
何回でもオッケーだよ

70: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:36:56.843 ID:qLosupcl0

工夫のないそのままのやり方だけど

与えられた数を合計する
これの半分が各組の合計値の上限、これを超えたらその条件でそれ以上調べても見つからない
maxとする

与えられた数をソートする
先頭をxとする
1個ずつ比較、xより大きい数が出たら1個ではヒットしない
xの次の数をyとする

2個を足す、x+yとする
x+yと次の数を比較する
x+yより小さければ別の数を足す
x+yより大きいならヒットしないのでyをずらして2個パターン検証しなおし

3個足す、以降同様にmaxまでやる

最初のxがすべて失敗したら2個目の数をxとして同様の処理をする
1個目の数についてはヒットなしだと確認できてるので9個についてのみ操作する

どこかで等しいのが見つかれば答え

75: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:38:40.260 ID:JHCHjIfsM
>>70
俺が思いついたのもそんな感じだけどPaizaの問題はその手の解法はほぼ全部ダメ
実行時間に引っかかる

83: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:45:18.408 ID:8vR3jSDf0
>>75
そうなんよね
高難度の問題になってくるとまっさきに思いつくやりかただとタイムオーバーです地獄になる…

112: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 13:01:38.433 ID:8vR3jSDf0
あっそんなことなかった
数値の個数は上限10で値の上限は100だった
>>106
ごめんなさい…
でもちゃんとロジックは参考にさせてもらってますからね!

115: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 13:03:37.361 ID:qLosupcl0

>>112
プログラマになりたいなら
こんな問題解くより動くもの作れよ
こんな問題解いても時間の無駄

解いた俺が言ってるんだから間違いない

118: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 13:05:50.318 ID:8vR3jSDf0
>>115
動くもの作るの疲れるんだって!!!
俺のポンコツ頭じゃ途中で投げ出しちゃうんだよ!
文章題より計算問題解くほうが続くのと同じ話です!
paizaの問題は考える量が少なくて良き!

121: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 13:08:36.271 ID:8vR3jSDf0
>>120
目指してんだけど…!
目指してんですけども……!

122: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 13:10:53.258 ID:qLosupcl0
>>121
ならこんな問題やっても時間の無駄
動くもの作れ
動くもの作れないなら諦めろ

124: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 13:15:18.687 ID:8vR3jSDf0
>>123
俺もそうするのがいいんだろうなーってgithubで良さげなコード拾って読んだんだけど
どうしてそう書くの?ってのが多いのにコメントが英語なせいで理解できなかった…
>>122
どんなもん作ればいいの
作りたいものいっぱいあんだけど作れそうにないから簡単に作れるものから始めたいかなって

127: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 13:18:49.531 ID:qLosupcl0
>>124
今はWebシステムがメインだからWebシステム
データベース使った掲示板システムを構築できりゃ
どこかは採用する

114: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 13:03:26.021 ID:vZ8F31eFM

Xは昇順ソート済みとし、添字は1からと定義する。

def
int f(X1,X2,X3,X4) = X1 + X2 – X3 -X4

for X1 in X
for X2 in X[2:]
for X3 in X[3:]
for X4 in X[4:]
if f(X1,X2,X3,X4) == 0
return (X1,X2,X3,X4)
end
end
end
end
end

116: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 13:04:00.161 ID:8vR3jSDf0
>>114
ォォオオェェ………

119: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 13:07:10.599 ID:8vR3jSDf0
あってかお前らが逐一書き方教えてくれるなら俺もなんかプロダクト作れそうだよ

144: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 14:27:49.106 ID:8vR3jSDf0

ねぇお前ら、この記述のArrayList<> hogeちゃんの作成を再帰処理の初回にしたいんだけどどうすればいいの
処理を完遂したhogeくんを戻したい
要はstaticフィールド一個も使わずに再帰したいんですけども!
for文使えってうんちなことはどうか言わないで!

public class Saiki {
static int[] test = {1 , 2, 3 , 4};
static ArrayList<Integer> hoge = new ArrayList<>();
static int loop = 0;
public static void main(String[] args) {
hoge();
hoge.forEach(System.out::println);
}
public static void hoge(){
while(hoge.size() < 4) {
System.out.println(loop+”回目”);
hoge.add(test[loop]);
loop++;
hoge();
}
}
}

146: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 14:33:52.443 ID:8vR3jSDf0
びぇえええええん!!!!!
びぇえええええええええんっ!!!!!

148: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 14:39:43.564 ID:AGoDxPM4d
てかなんだこのコード…
戻り値でリスト返せばいいだけだろ

150: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 14:46:52.980 ID:8vR3jSDf0
>>148
arrayList最初に作んないといけないじゃん?
どうやって作ればいいのかなって…
再帰メソッドの中でarrayList作るって書いたらarrayListいっぱい作られちゃうじゃない?
となると初回限定のarrayList作りってどうすりゃいいの…?

152: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 14:51:01.629 ID:AGoDxPM4d
>>150
いや、whileの外に書きゃ1回しか作られねーだろ…

149: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 14:45:09.893 ID:AGoDxPM4d
そもそも何したいんだこれ…
配列をリストに詰め替えるだけならそれ用の組み込み関数くらいあるだろ

151: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 14:47:22.348 ID:8vR3jSDf0
>>149
再帰メソッドの作り方が知りたいの!!!!

153: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 15:00:00.028 ID:8vR3jSDf0

雰囲気はこんな感じで書きたい
でもこれじゃあhoge2の一行目に書かれたArrayList君が何度も生成されてしまう
初回かどうか確認してarrayList作らせないようにするとしたらcntで制御するしかない?
ってかarrayListはインスタンスだからいいけどプリミティブ型のものをで再帰で値を変えてくとしたらオーバーロードしてもう一個メソッドかくしかないん?
よくわかんね・・・

public static void main(String[] args) {
int[] unko = {0 , 1 , 2 , 3 };
ArrayList<Integer> result = hoge2(unko, 0);
result.forEach(System.out::println);
}

public static ArrayList<Integer> hoge2(int[] unko , int cnt){
ArrayList<Integer> hoge = new ArrayList<>();
while(hoge.size() < unko.length) {
hoge.add(unko[cnt]);
hoge2(unko, ++cnt);
}
return hoge;
}

157: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 15:06:21.060 ID:8vR3jSDf0
ごめんwhileじゃなくてifだわ
whileで書いてるからややこしくなっとる

158: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 15:08:28.462 ID:AGoDxPM4d
えっ、ifなのか?
再帰の練習がしたいんじゃなかったのか?

162: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 15:11:54.279 ID:8vR3jSDf0
>>158
hoge2()の中でhoge2()呼んでるじゃん?

168: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 15:15:56.228 ID:AGoDxPM4d
>>162
ああ、そうね
よく見てなかった

159: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 15:08:49.887 ID:AGoDxPM4d
もはや何がなんだか…

161: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 15:10:53.701 ID:8vR3jSDf0

こんな感じにしたかったんだけどこれどっちがreturnしてるのかよく分かんねえ・・・

public static void main(String[] args) {
int[] unko = {0 , 1 , 2 , 3 };
ArrayList<Integer> result = hoge2(unko, 0);
result.forEach(System.out::println);
}

public static ArrayList<Integer> hoge2(int[] unko ,int cnt){
ArrayList<Integer> hoge = new ArrayList<>();
if(hoge.size() < unko.length) {
hoge.add(unko[cnt]);
hoge2(unko, ++cnt , hoge);
}
return hoge;
}

public static ArrayList<Integer> hoge2(int[] unko ,int cnt , ArrayList<Integer> hoge){
if(hoge.size() < unko.length) {
hoge.add(unko[cnt]);
hoge2(unko, ++cnt , hoge);
}
return hoge;
}

164: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 15:13:32.966 ID:AGoDxPM4d
空のリスト作って直後に長さ確認して何がしたいの…

166: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 15:14:50.805 ID:8vR3jSDf0
>>164
たしかに!!!

165: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 15:13:51.383 ID:8vR3jSDf0
ああよく考えなくても二回目以降のhoge2のreturnがいらねえわ

167: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 15:15:55.486 ID:8vR3jSDf0

これで完成かにゃあ・・・

public static void main(String[] args) {
int[] unko = {0 , 1 , 2 , 3 };
ArrayList<Integer> result = hoge2(unko, 0);
result.forEach(System.out::println);
}

public static ArrayList<Integer> hoge2(int[] unko ,int cnt){
ArrayList<Integer> hoge = new ArrayList<>();
hoge.add(unko[cnt]);
hoge2(unko, ++cnt , hoge);
return hoge;
}

public static void hoge2(int[] unko ,int cnt , ArrayList<Integer> hoge){
if(hoge.size() < unko.length) {
hoge.add(unko[cnt]);
hoge2(unko, ++cnt , hoge);
}
}

178: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 15:25:54.681 ID:qLosupcl0
>>167
設計できない奴のコードは汚いなあ
処理に合わせて変数名とメソッド名を付けないバカは死んで欲しい

169: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 15:16:32.005 ID:dCjo4ZqrM
ランクAまではアルゴリズム系の知識なくても行ける感じがする。
Sランクともなると厳しい

171: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 15:18:00.536 ID:8vR3jSDf0
>>169
Sランクはタイムオーバーとの戦い感あるよね
あと文字列の問題はstringが持てる長さの範囲超えてエラー吐いたりとか…

172: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 15:19:22.598 ID:8vR3jSDf0
やべぇ!!!再帰出来た!!!!!軽く感動してる!!!!
じわじわ感動してきた!!!
でもこれ本当にオーバーロードは必要なのかどうなのかよく分かんない…

173: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 15:19:32.407 ID:AGoDxPM4d
てか再帰なのにカウント渡してこれじゃfor文と変わらんやん…

175: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 15:20:49.332 ID:8vR3jSDf0
>>173
えぇ…
じゃあどうすればいいのぉ………
cnt持ってないと配列の添字がわけ分かんなくなっちゃうじゃん……

180: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 15:27:13.137 ID:AGoDxPM4d
>>175
そもそもJavaで再帰自体どうかと思うけど、先頭除いた残りを渡すとかした方が再帰としては自然だよね

181: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 15:28:00.960 ID:8vR3jSDf0
>>180
ひゃぁああああ!!!!
何それすげぇ!!!!!!!
そんな考え方があんのんね!!!
ちょっと試す!!!

176: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 15:24:16.559 ID:8vR3jSDf0
すげぇプログラミング楽しくなってきた…!!
再帰が動くってほんと気持ち良い……!
これぞプログラミング…!

182: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 15:29:34.073 ID:qLosupcl0

やりたいことをエスパーで予想すると

リストの要素すべてを処理したいんだろ?

次の要素を処理するメソッド(要素)
受け取った要素のnextをチェック
あればnextについて再帰呼び出し
なければ終了

これだけだ

183: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 15:31:55.509 ID:qLosupcl0

>>182
でもこんなことするより
リストの要素を受け取ってループ処理がJava

やろうとすることが再帰に向いていない

186: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 15:39:22.357 ID:8vR3jSDf0

これもまた味があるコードだ…!ふふっ…ふふふっ・・・!

public static void main(String[] args) {
int[] unko = {0 , 1 , 2 , 3 };
ArrayList<Integer> result = hoge3(unko);
result.forEach(System.out::println);
}
public static ArrayList<Integer> hoge3(int[] unko){
ArrayList<Integer> hoge = new ArrayList<>();
hoge.add(unko[0]);
hoge3(delete(unko), hoge);
return hoge;
}

public static void hoge3(int[] unko , ArrayList<Integer> hoge){
if(hoge.size() < unko.length) {
hoge.add(unko[0]);
hoge3(delete(unko), hoge);
}
}

public static int[] delete(int[] unko) {
for(int i = 1; i < unko.length; i++) {
unko[i – 1] = unko[i];
}
unko[unko.length -1] = -1;
return unko;
}

193: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 16:09:50.532 ID:8vR3jSDf0
よくわかんなかったけど動いてるのはわかった…

194: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 16:11:33.981 ID:qLosupcl0
1は違う道に進んだほうがいい
努力もやる気も適性も足りない
たぶん勉強した気になってる数年を無駄にして終わる
運よく(運悪く?)どこかに入っても地獄が待ってる

195: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 16:28:44.353 ID:8vR3jSDf0
なんでそんなひどいこというの…
俺だって頭使う仕事したいんだよ…!?

71: 以下、5ちゃんねるからVIPがお送りします 2019/11/19(火) 12:37:15.524 ID:TP0Il3Yp0
車輪の再発明はやめろ

引用元

管理人からひと言

センス

スポンサーリンク
スポンサーリンク
スポンサーリンク

シェアする

フォローする