1 名前:デフォルトの名無しさん mailto:sageteoff [2015/10/07(水) 20:19:06.64 ID:c4LYwtKo.net] プログラミングのお題スレです。 前スレ プログラミングのお題スレ Part7 peace.2ch.net/test/read.cgi/tech/1429195275/ 【出題と回答例】 1 名前:デフォルトの名無しさん お題:お題本文 2 名前:デフォルトの名無しさん >>1 使用言語 回答本文 【ソースコードが長くなったら】 (オンラインでコードを実行できる) ideone.com/ codepad.org/ compileonline.com/ rextester.com/runcode runnable.com/ code.hackerearth.com/ melpon.org/wandbox https://paiza.io/ 宿題は宿題スレがあるのでそちらへ。
357 名前:デフォルトの名無しさん mailto:sage [2016/03/04(金) 18:38:25.99 ID:pEnisYEU.net] お前の業務?
358 名前:デフォルトの名無しさん mailto:sage [2016/03/04(金) 18:46:32.50 ID:9GjrgxFP.net] >>349 ideone.com/LlnUM2
359 名前:デフォルトの名無しさん mailto:sage [2016/03/05(土) 19:06:23.29 ID:CXefnPD8.net] >>342 J f =: 3 : 0 a =. (\: +/"1 =/~ y) { y b =. ~. a (/:~ b i. a) { b ) f 'Hello world' lllooHe wrd f 3 1 4 1 5 9 2 6 5 3 5 8 9 7 9 3 2 3 8 4 6 3 3 3 3 5 5 5 9 9 9 1 1 4 4 2 2 6 6 8 8 7
360 名前:デフォルトの名無しさん mailto:sage [2016/03/06(日) 00:31:45.05 ID:WEeJcjtE.net] >>340 haskell main = mapM(putStrLn) [p x|x<- sequence $ [1]:[[x,-x]|x<-[2..9]],1==sum x] p=concat.map(\x ->if x>1 then "+"++show x else show x)
361 名前:デフォルトの名無しさん mailto:sage [2016/03/06(日) 15:24:05.92 ID:/EFFTfcH.net] >>342 C >>344 を参考に ideone.com/7vKXrk
362 名前:デフォルトの名無しさん mailto:sage [2016/03/07(月) 10:29:38.19 ID:+tQLURZK.net] >>351 ありがとうございます。自分で作ったのに比べると格段にすっきりしてます。 each_with_indexもto_hもgroup_byも初めて知りました。勉強になります。
363 名前:デフォルトの名無しさん mailto:sage [2016/03/11(金) 08:14:24.51 ID:fvdAjVDF.net] あら、新規来ないと思ったら移動してたか。 >>335 ある程度起動してから気づいたから遅かった。 >>337 別の目的で作ったコードなので、これ用というわけじゃなかったのです。 追記型がほしかったので作りました。
364 名前:デフォルトの名無しさん mailto:sage [2016/03/11(金) 08:17:33.24 ID:fvdAjVDF.net] >>340 ideone.com/H6yZDw C++。作ってあったコードをいじっただけなので変なコードになってます。 多分あってると思います。
365 名前:デフォルトの名無しさん mailto:sage [2016/03/11(金) 08:49:31.19 ID:fvdAjVDF.net] >>347 ,348 ideone.com/VaNTzl C++。デバッグはほとんどしてない。手を抜いたから遅いよ。
366 名前:デフォルトの名無しさん mailto:sage [2016/03/11(金) 09:16:36.16 ID:fvdAjVDF.net] >>342 ideone.com/fpJYFp C++。最近、あんまり効率考慮したコードが書けてないな〜。
367 名前:デフォルトの名無しさん mailto:sage [2016/03/11(金) 23:07:01.52 ID:4PxK/ADg.net] 変数A1, A2, A3, A4, A5 に整数が入っているとして、 全部同じか、そうでないかを判定したいのですが、 もっとも効率よい方法教えて下さい。 if(A1==A2&&A2==A3&&A3==A4&&A4==A5){ ... }else{ ... } みたいなのしか思いつきません。
368 名前:デフォルトの名無しさん mailto:sage [2016/03/11(金) 23:55:40.35 ID:fvdAjVDF.net] それ以外だとSIMD使うとかになりそうな・・・。
369 名前:デフォルトの名無しさん [2016/03/14(月) 11:38:06.21 ID:7hslT/Gl.net] お題:平和な動物園を作ろう www.hisenkei.net/~tohru/LaTeX/Poster/whatisQAPa4.pdf
370 名前:デフォルトの名無しさん mailto:sage [2016/03/14(月) 12:34:29.93 ID:DTR/fUtN.net] 宿題じゃね?
371 名前:デフォルトの名無しさん mailto:sage [2016/03/14(月) 13:20:59.04 ID:W5wCaIkX.net] NP困難問題とか総当りするぞ
372 名前:デフォルトの名無しさん mailto:sage [2016/03/14(月) 19:24:58.74 ID:MNFRtT1Y.net] >>362 相性度の大小が逆じゃない?相性が悪いほど相性度の数値が大きくならないと‥
373 名前:デフォルトの名無しさん mailto:sage [2016/03/14(月) 22:37:30.95 ID:DTR/fUtN.net] よーしぱぱ、ねくすとぱーみゅてーしょんつかっちゃうぞー。
374 名前:デフォルトの名無しさん mailto:sage [2016/03/14(月) 23:24:37.10 ID:DTR/fUtN.net] >>362 ideone.com/YXrksL C++。かき捨て。デバッグ一切してないのでバグってたら御免。 だって、スカイレークのリリースで11秒かかるんだもん。
375 名前:デフォルトの名無しさん mailto:sage [2016/03/16(水) 00:17:53.91 ID:a7Xs+q4N.net] 不満度2160であってるんかね
376 名前:デフォルトの名無しさん mailto:sage [2016/03/16(水) 00:31:47.47 ID:a7Xs+q4N.net] >>367 Calc内のstd::vector<DType> Angryとstd::vector<DType> Lengthが毎回作られてるから遅いんじゃね?
377 名前:デフォルトの名無しさん mailto:sage [2016/03/16(水) 00:40:17.12 ID:6w3U5gAP.net] std::arrayを使ってはどうか
378 名前:デフォルトの名無しさん mailto:sage [2016/03/16(水) 01:13:48.78 ID:PW1OJjjf.net] >>368 知らんよ。適当に書き捨てただけだし。 >>370 リリースで消えてる事をただ願うだけ。2重ループ何回も起動してるから遅いもんだと・・・。 >>370 カスタマイズはご自分で。 特にこだわりはないから、MITライセンスでどうぞ。
379 名前:デフォルトの名無しさん mailto:sage [2016/03/16(水) 01:14:38.03 ID:mfi8kYDa.net] >>368 俺も(2160,[6,9,3,8,7,4,1,5,10,2])になった。
380 名前:デフォルトの名無しさん mailto:sage [2016/03/16(水) 01:19:02.65 ID:PW1OJjjf.net] あ、バグってら。たぶん。 2重ループの中ループの初期値間違ってるかも。 今、ひらめいた。 多分不満度結果の半分くらいだと思う。 まぁいいや。
381 名前:デフォルトの名無しさん mailto:sage [2016/03/16(水) 01:23:09.89 ID:a7Xs+q4N.net] ideone.com/Jb9lqV 何も考えずにstd::vector<DType> Angryとstd::vector<DType> Lengthを外に出しただけで1.74s
382 名前:デフォルトの名無しさん mailto:sage [2016/03/16(水) 01:24:01.73 ID:PW1OJjjf.net] ideone.com/aZUgRP こうかもしれん。 静的変数にしたら超絶早くなった。
383 名前:デフォルトの名無しさん mailto:sage [2016/03/16(水) 01:25:15.50 ID:PW1OJjjf.net] あいたたた・・・・。 まぁ、宿題を真面目にやる気はないんで、適当にごまかしてください。
384 名前:デフォルトの名無しさん mailto:sage [2016/03/16(水) 05:12:24.47 ID:/v9qNF/y.net] arrayにしたらかえって遅くなった ideone.com/mHquNO
385 名前:デフォルトの名無しさん mailto:sage [2016/03/16(水) 07:06:29.01 ID:PW1OJjjf.net] >>377 >>375 は微妙にコード最適化してるからねぇ。 リザルト変わってるし。 一応それとしては早くなってるんじゃないかと。
386 名前:デフォルトの名無しさん mailto:sage [2016/03/16(水) 11:48:35.59 ID:j8iobkYx.net] >>362 Squeak/Pharo Smalltalk | N animals cages ans | N := 10. animals := #( (0 2 6 4 6 2 4 4 2 4) (2 0 4 2 2 2 2 2 2 6) (6 4 0 2 6 8 8 6 4 8) (4 2 2 0 4 2 6 6 2 6) (6 2 6 4 0 2 4 4 2 4) (2 2 8 2 2 0 6 6 6 8) (4 2 8 6 4 6 0 6 6 4) (4 2 8 6 4 6 6 0 6 6) (2 2 4 2 2 6 6 6 0 6) (4 6 8 6 4 8 4 6 6 0)). cages := #( (0 3 4 5 8 10 9 6 2 4) (3 0 4 4 7 9 9 8 5 9) (4 4 0 2 4 7 5 4 4 8) (5 4 2 0 3 5 5 5 5 9) (8 7 4 3 0 3 5 6 8 12) (10 9 7 5 3 0 4 7 10 14) (9 9 5 5 5 4 0 3 8 11) (6 8 4 5 6 7 3 0 5 8) (2 5 4 5 8 10 8 5 0 4) (4 9 8 9 12 14 11 8 4 0)). ans := Set new -> Float infinity. (1 to: N) permutationsDo: [:perm | | sum | sum := 0. 1 to: N do: [:i | 1 to: N do: [:j | sum := ((animals at: (perm at: i)) at: (perm at: j)) * ((cages at: i) at: j) + sum]]. ans value = sum ifTrue: [ans key add: perm copy]. ans value > sum ifTrue: [ans := (Set with: perm copy) -> sum]]. ^ans "=> a Set(#(6 9 3 8 7 4 5 1 10 2) #(6 9 3 8 7 4 1 5 10 2))->2160 "
387 名前:デフォルトの名無しさん mailto:sage [2016/03/16(水) 13:31:34.17 ID:NZyRjPzO.net] >>377 VSでプロファイラ取ってみたらCalcとstd::next_permutationの2つで全体の半分位 時間食ってんな 特に単純ループのCalcが全体の1/3ほど食ってる std::next_permutationは仕方ないとしてCalcはどこか改善できんかな 配列の配列の要素取ってるから出来るだけ連続したキャッシュに乗る単なる配列の方がいいのかも 連続してないクラスの配列の配列取るもんだから、こういう単純なループがインライン展開されてないのも 原因の一つかと
388 名前:デフォルトの名無しさん mailto:sage [2016/03/16(水) 15:44:17.23 ID:NZyRjPzO.net] ×インライン展開 ○ループのアンロール
389 名前:デフォルトの名無しさん mailto:sage [2016/03/16(水) 17:59:47.71 ID:PW1OJjjf.net] ねくすとぱーみゅてーしょん切って動的計画法に切り替えるとかがベターかもしれん。 アッチはメモリめちゃくちゃ食うけど、早い。 しかし、俺は動的計画法を理解してないのだ・・・。Orz
390 名前:デフォルトの名無しさん [2016/03/16(水) 18:03:36.31 ID:VFJu78ei.net] >>362 なんか計算が微妙に合わないなと思ったら ニシキヘビとカバの相性度が対象になってないわ あー時間を無駄にした
391 名前:デフォルトの名無しさん mailto:sage [2016/03/16(水) 18:37:37.89 ID:PW1OJjjf.net] >>362 の資料いくつか間違いがあるっぽい。 不満度も重複に計算してるし、なんか仕様表として欠陥がある。
392 名前:デフォルトの名無しさん mailto:sage [2016/03/20(日) 08:30:05.20 ID:e/Ot8AcY.net] お題:ダーツのダブルアウトの組み合わせ 問題の前にダーツのルール(501ゲーム)を簡単に説明。 1〜20のマス目があって、それぞれにダブル(最外周の細い領域)と トリプル(中間の細い領域)があり、ダブル、トリプルは得点が2倍、3倍になります。 中心の2重円は最内の円がダブルブル(50点)、その外側の円がブル(25点)。 持ち点501点から1ターン(1ラウンド)3投ずつプレイして当たった得点を減算していき、 最後残り点数がちょうど0になれば勝ち。 ただし、最後はダブルに当ててフィニッシュする必要があります(ダブルアウトという)。 例:最後5点残っていた場合は、5点は直接狙えず、1点を当ててから2点のダブル(計5点)、 あるいは3点を当てて1点のダブル(計5点)のように最後がダブルになるようにフィニッシュします。 参
393 名前:考動画 https://www.youtube.com/watch?v=GfC17dQntFA この動画の下のスコアで、残り点数が少なくなってくると左側にT20 T18 D16のような表示が 出てきますが、これは次の3投で上がれる組み合わせの一例を示しています。 この動画だと1:45あたりで残り146点のフィニッシュの組み合わせ例として出ていますね。 (数字の頭のDはダブル Tはトリプル 20x3 + 18x3 + 16x2 = 146) 問題: 1.残り点数を与えられた場合に、1ラウンド3投でフィニッシュできる全ての 組み合わせを求めてください。 例:残り4の場合は[D2][2 D1][D1 D1][1 1 D1]の4通り 例として残り10の場合を求めてみてください。 2.1ラウンド3投以内のフィニッシュで最も組み合わせの多い残り点数を求めてください。 解答例:http://ideone.com/LWu1WM (C言語 合ってるかちょっと自信ない) [] [ここ壊れてます]
394 名前:デフォルトの名無しさん mailto:sage [2016/03/20(日) 09:03:48.16 ID:e/Ot8AcY.net] >>385 外した場合を考えてませんでした。 残り10をD5でフィニッシュする場合、1投目でフィニッシュと、1投目はずして(0点) 2投目でフィニッシュ、同じく1,2投目はずして3投目でフィニッシュがありますが、 これは全て[D5]に含むこととします。(外した分は無視) 外した分も考慮して組み合わせを考えてみても面白いかもしれません。 (上の例だと[D5][0 D5][0 0 D5]に分かれることになります)
395 名前:デフォルトの名無しさん mailto:sage [2016/03/23(水) 03:54:21.46 ID:SSV1rQef.net] お題:配列やリストの累積和を求める 90 10 54 3 6 22 77 78 75 16 -> 90 100 154 157 163 185 262 340 415 431
396 名前:デフォルトの名無しさん mailto:sage [2016/03/23(水) 04:48:29.17 ID:dWvJC0mF.net] >>387 ideone.com/mik4Ne C++。適当に書いた。結構短くかけたと思う。
397 名前:デフォルトの名無しさん mailto:sage [2016/03/23(水) 16:03:47.29 ID:NkT0dmTC.net] >>387 haskell map sum.tile.inits
398 名前:デフォルトの名無しさん mailto:sage [2016/03/23(水) 19:13:26.12 ID:l5rfZdo+.net] >>387 C++ ideone.com/xtXdpi
399 名前:デフォルトの名無しさん mailto:sage [2016/03/23(水) 20:01:16.70 ID:1UFsClL1.net] >>387 F# Seq.scan (+) 0
400 名前:デフォルトの名無しさん mailto:sage [2016/03/23(水) 20:59:24.58 ID:NkT0dmTC.net] scanいいなーと思って探してみたらhaskellにもあった しかも標準ライブラリだった。 scanl1(+)
401 名前:デフォルトの名無しさん mailto:sage [2016/03/23(水) 21:07:05.34 ID:NkT0dmTC.net] 標準ライブラリじゃなくて、Preludeでした、すみません。
402 名前:デフォルトの名無しさん mailto:sage [2016/03/23(水) 21:24:19.74 ID:jwiGmJgq.net] >>387 Python3 itertools.accumulate(L) もはや標準ライブラリの紹介、ジェネレーターを返すので煮るなり焼くなりして使う
403 名前:デフォルトの名無しさん mailto:sage [2016/03/24(木) 13:07:49.70 ID:5hctbNOo.net] >>387 C ideone.com/QBhptw
404 名前:デフォルトの名無しさん mailto:sage [2016/03/24(木) 14:14:51.89 ID:BKOgASSO.net] >>387 C++ ideone.com/98mJmC 長くなり過ぎワロタ
405 名前:デフォルトの名無しさん mailto:sage [2016/03/25(金) 23:54:10.03 ID:aGSq1f0l.net] >>387 PowerShell もっと短くできなかったものかなあ function Accumulate() { $t = @(); $args | % {$t += $t[-1] + $_}; $t }
406 名前:デフォルトの名無しさん mailto:sage [2016/03/26(土) 00:50:33.88 ID:/XUmDgkC.net] >>342 PowerShell function SortGroupByCount($o) { $o.GetEnumerator() | group | sort Count -d | select Group | %{ Write-Host -n "$($_.Group) " } } > SortGroupByCount "Hello world" l l l o o H e w r d > SortGroupByCount 3,1,4,1,5,9,2,6,5,3,5,8,9,7,9,3,2,3,8,4,6 3 3 3 3 5 5 5 9 9 9 1 1 4 4 2 2 6 6 8 8 7
407 名前:デフォルトの名無しさん mailto:sage [2016/03/26(土) 00:57:47.15 ID:/XUmDgkC.net] >>398 よく見たらselect Groupいらんかった function SortGroupByCount($o) { $o.GetEnumerator() | group | sort Count -d | %{ Write-Host -n "$($_.Group) " } }
408 名前:デフォルトの名無しさん mailto:sage [2016/03/26(土) 06:52:33.07 ID:lsHN8L8S.net] @Mathematica In[1] := x = {90, 10, 54, 3, 6, 22, 77, 78, 75, 16}; In[2] := x// Accumulate Out[2] = {90, 100, 154, 157, 163, 185, 262, 340, 415, 431}
409 名前:デフォルトの名無しさん mailto:sage [2016/03/27(日) 01:17:51.47 ID:7ndxGIoM.net] >>387 Io f := method(a, s := 0 a map(v, s = s + v) )
410 名前:デフォルトの名無しさん mailto:sage [2016/03/28(月) 00:26:57.54 ID:K457tFb7.net] >>387 Ruby a=%w(90 10 54 3 6 22 77 78 75 16).map(&:to_i) a.inject(0){|acc,e|acc+=e;p acc}
411 名前:デフォルトの名無しさん mailto:sage [2016/03/28(月) 13:28:14.63 ID:ObwLfSdF.net] >>387 Squeak/Pharo Smalltalk | fn | fn := [:arr | arr inject: #() into: [:a :x | a, {x + (a at: a size ifAbsent: 0)}]]. fn value: #(90 10 54 3 6 22 77 78 75 16) "=> #(90 100 154 157 163 185 262 340 415 431) "
412 名前:デフォルトの名無しさん mailto:sage [2016/03/28(月) 13:51:42.42 ID:ObwLfSdF.net] >>342 Squeak/Pharo Smalltalk | fn | fn := [:seq | | rule | rule := [:a :b | a key > b key or: [ a key = b key and: [(seq indexOf: a value) < (seq indexOf: b value)]]]. seq class streamContents: [:ss | (seq asBag sortedCounts sort: rule) do: [:kv | kv key timesRepeat: [ss nextPut: kv value]]] ]. fn value: 'Hello world'. "=> 'lllooHe wrd' " fn value: #(3 1 4 1 5 9 2 6 5 3 5 8 9 7 9 3 2 3 8 4 6). "=> #(3 3 3 3 5 5 5 9 9 9 1 1 4 4 2 2 6 6 8 8 7) "
413 名前:デフォルトの名無しさん mailto:sage [2016/03/29(火) 23:25:45.53 ID:UAhYeBNf.net] sage>>402 >a.inject(0){|acc,e|acc+=e;p acc} これって a.inject(0){|acc,e|p acc+e} でいいんじゃないの
414 名前:デフォルトの名無しさん mailto:sage [2016/03/30(水) 02:01:04.35 ID:00BHzwP5.net] >>342 Rubyで。 a=[3,1,4,1,5,9,2,6,5,3,5,8,9,7,9,3,2,3,8,4,6] a=a.inject({}){|acc,e| acc[e]||=0 acc[e]+=1 acc } p a .to_a .sort_by .with_index{|s,i| [s[1], i] } .reverse .map{|e|e[0].to_s*e[1]} .join
415 名前:デフォルトの名無しさん mailto:sage [2016/03/30(水) 05:39:51.79 ID:ij4V+9+M.net] >>>342 Python3 def f(L): return sorted(L, key=lambda x: (-L.count(x), L.index(x))) print("".join(f("Hello world")))
416 名前:デフォルトの名無しさん mailto:sage [2016/03/30(水) 08:05:32.53 ID:ZA7ECi0z.net] ideone.com/AjZqQq どうでもいいんだけど、追記型素数検出器を書き直した。 爆速になった。イデオンで動かす感じで27ビット2.4秒。 要するにエラトステネスの篩なんだけど、思ったより早かったなぁ。 肝心の追記はまだ試してない・・・。Orz
417 名前:デフォルトの名無しさん mailto:sage [2016/03/30(水) 09:35:35.02 ID:ZA7ECi0z.net] www.dotup.org/uploda/www.dotup.org798848.zip ウラム螺旋に移植した。一応小さい解像度では試してるがデカいのは知らん。 素数列挙は超早くなったが、画像生成がまだ重ひ。 暇な人むけ。
418 名前:デフォルトの名無しさん mailto:sage [2016/04/01(金) 00:36:24.19 ID:oZji/N9B.net] >>406 実行結果が "333399955588662244117" になってしまいます
419 名前:デフォルトの名無しさん mailto:sage [2016/04/04(月) 21:56:44.86 ID:w9r+G2YN.net] お題:nで始まる最小の素数を求める n=4 -> 41 n=777 -> 77711 n=403 -> 40343
420 名前:デフォルトの名無しさん mailto:sage [2016/04/04(月) 22:48:25.37 ID:mfUNWB3k.net] >>411 Java ideone.com/vV7Vs9
421 名前:デフォルトの名無しさん mailto:sage [2016/04/05(火) 21:02:49.40 ID:V1X87Hw6.net] >>411 C ideone.com/OtX2Wc
422 名前:デフォルトの名無しさん mailto:sage [2016/04/05(火) 21:05:24.30 ID:ZlseDTbh.net] フリーセルソルバー 問題によっては1秒内で終るものもあれば3分かかったり 評価関数色々用意したがすべて1秒以内にできるようにしたいが...
423 名前:デフォルトの名無しさん mailto:sage [2016/04/06(水) 01:55:40.63 ID:HGCmMFVS.net] >>411 ideone.com/eqFkbn C++。コードの半分は以前のものを流用した。 なんかランタイムエラーになってるけど、よくわからん。 答えはあってると思う。
424 名前:デフォルトの名無しさん mailto:sage [2016/04/06(水) 02:00:45.11 ID:HGCmMFVS.net] >>414 フリーセル自作しないといけないのでめんどくさい。 フリーセルってここ数年やってないなー。
425 名前:デフォルトの名無しさん mailto:sage [2016/04/08(金) 13:12:03.72 ID:opSE2XAx.net] >>411 Rubyで。 require 'prime' def func1 n nStr = n.to_s nLen = nStr.length Prime::instance.each{|e| return e if e.to_s[0, nLen] == nStr } end p func1 4 p func1 777 p func1 403
426 名前:デフォルトの名無しさん mailto:sage [2016/04/08(金) 20:22:10.75 ID:JfY7ulrA.net] >>415 20 32 51 あたりの結果がおかしいんじゃないかな? 20 -> 2003になるところが2011になってる。
427 名前:デフォルトの名無しさん mailto:sage [2016/04/08(金) 20:59:33.30 ID:OyooKXkj.net] >>411 Io isPrime := method(n, if(n < 2, return(false)) if(n < 4, return(true)) if(n % 2 == 0, return(true)) for(i, 3, n sqrt, 2, if(n % i == 0,return(false))) true ) f := method(n, a := 1 loop( for(i, n * a + 1, n * a + a - 1, 2, if(isPrime(i), return(i)) ) a = a * 10 ) ) Io> list(1,777,403)map(v,f(v)) ==> list(11, 77711, 40343)
428 名前:デフォルトの名無しさん mailto:sage [2016/04/09(土) 00:47:11.89 ID:8UqsZWln.net] >>418 あーそれバグですな。失礼。 ゼロ埋めは試してないのでそういう結果になってます。 思いつきもしませんでした。ごめんなさい。 どう書けばいいかちょっと妙案が思いつかないので保留。
429 名前:デフォルトの名無しさん mailto:sage [2016/04/09(土) 23:01:46.01 ID:UGeAL8lU.net] お題:各桁の数字が奇数、偶数、奇数、偶数...のように 最上位の桁から奇数と偶数が交互並ぶ自然数を考える。 小さい方からn番目のこのような数を求める n=1 -> 1 n=10 -> 18 n=1000 -> ?
430 名前:デフォルトの名無しさん mailto:sage [2016/04/10(日) 00:12:29.27 ID:0xtkUQ3n.net] >>421 Java ideone.com/V6gNa4
431 名前:デフォルトの名無しさん mailto:sage [2016/04/10(日) 03:27:38.19 ID:GVWrhGxP.net] >>411 >>418 ideone.com/oAQHTp C++。半ば暇なのとか色々まざってぶち切れ気味に書き直した結果。 なおったかな? 手を抜いて新規構造考えたまではよかったが結局古い道を選ばざるを得なかった。 ゼロパティングなんてふつう考えないがこういうケースもあるんだな。勉強になった。 以上。
432 名前:デフォルトの名無しさん mailto:sage [2016/04/10(日) 04:31:37.37 ID:GVWrhGxP.net] >>421 ideone.com/W3pgTU C++。なんかつじつまが合わないので>>422 をの結果を参考にさせてもらった。 どうにも盛大に勘違いしてたようだ。 しかし、先頭が必ず奇数であるとは書いてないので混乱した。
433 名前:デフォルトの名無しさん mailto:sage [2016/04/10(日) 11:04:10.71 ID:yfpRB3fX.net] >>421 @Mathematica ideone.com/JtmqOO
434 名前:デフォルトの名無しさん mailto:sage [2016/04/10(日) 22:30:50.62 ID:SKXiL2tD.net] >>421 F# ideone.com/AKL4fU お題スレ参加は半年ぶりくらい。。。 さらにF#の勉強開始して1ヶ月程度なので、ちょっとアレな感じかもしれませんが・・・
435 名前:425 mailto:sage [2016/04/10(日) 23:49:40.35 ID:SKXiL2tD.net] >>421 F# ideone.com/2pgKqN たびたびスマン・・・ちょっとブラッシュアップしました 見た目がちょっとキレイになった
436 名前:デフォルトの名無しさん mailto:sage [2016/04/11(月) 19:11:43.16 ID:U9aEtrvs.net] >>411 Squeak/Pharo Smalltalk | primeStartsWith | primeStartsWith := [:n | | exp min max ans | exp := 0. [ min := n * (10 raisedTo: exp). max := n+1 * (10 raisedTo: exp). ans := (Integer primesUpTo: max) detect: [:prime | prime >= min] ifNone: nil. exp := exp + 1. ans notNil. ] whileFalse. ans ]. primeStartsWith value: 4. "=> 41 " primeStartsWith value: 777. "=> 77711 " primeStartsWith value: 403. "=> 40343 "
437 名前:デフォルトの名無しさん mailto:sage [2016/04/11(月) 19:31:44.71 ID:U9aEtrvs.net] >>421 Squeak/Pharo Smalltalk ideone.com/hCH8lT
438 名前:デフォルトの名無しさん [2016/04/12(火) 06:07:51.10 ID:IvlGS
] [ここ壊れてます]
439 名前:XDX.net mailto: たまにage [] [ここ壊れてます]
440 名前:デフォルトの名無しさん mailto:sage [2016/04/13(水) 23:39:53.84 ID:xdVnQQp5.net] >>387 F# 勉強中 ideone.com/h9oJuH ローカル環境だとList使って実装して動いたんだけど ideoneだと動かなくて、調べたらideoneのF#のバージョンが低いのかもしれない Arrayを使って書き直したら動いた
441 名前:デフォルトの名無しさん mailto:sage [2016/04/13(水) 23:56:54.81 ID:49N/1I8V.net] >>421 Io f := method(n, a := list while(n > 0, n = n - 1 a = a prepend(n % 5) n = (n / 5) floor ) a map(i, v, v * 2 + (i + 1) % 2) join asNumber )
442 名前:デフォルトの名無しさん mailto:sage [2016/04/14(木) 22:38:40.17 ID:hWzlQv+3.net] お題:効率は無視してコードをできるだけ単純にしたバブルソート
443 名前:デフォルトの名無しさん mailto:sage [2016/04/14(木) 23:39:12.31 ID:rplj63Da.net] >>4 F# 勉強中 ideone.com/UtnUWJ プログラム自体はちゃんと動いてるっぽいが、 コードがF#的になんかいろいろと間違えてるような気がする・・・
444 名前:デフォルトの名無しさん [2016/04/15(金) 02:29:59.73 ID:7tix3D6p.net] >>433 Ruby def mysort a (a.length - 1).times{|i| if a[i] > a[i + 1] a[i], a[i + 1] = a[i + 1], a[i] mysort a end } a end a = (1..10).map{rand(10000)} p a p mysort a
445 名前:デフォルトの名無しさん mailto:sage [2016/04/15(金) 05:28:13.90 ID:UEolzSKG.net] >>433 ideone.com/Xjvay4 C++。残念なコードになった。こんなコード書きたくなーい。Orz
446 名前:デフォルトの名無しさん mailto:sage [2016/04/15(金) 21:30:03.75 ID:uCMMU+7S.net] >>433 F# let rec sort = function | ([] | [_]) as x -> x | l::rs -> let r::rs = sort rs if l < r then l::sort(r::rs) else r::sort(l::rs) let r = System.Random() let xs = List.init 10 <| fun _ -> r.Next 10 printfn "%A = sort %A" xs <| sort xs
447 名前:デフォルトの名無しさん mailto:sage [2016/04/16(土) 01:41:35.90 ID:8gZGJMh1.net] >>433 F# 勉強中 ideone.com/mHKjpZ 勉強中ゆえ(?)、>>437 のコードとか正直よく分からん・・・ とりあえず、自分の理解できる範囲で書いてみたら 殆ど手続き型と変わらん作りになってしまったw
448 名前:デフォルトの名無しさん mailto:sage [2016/04/16(土) 21:13:38.41 ID:uCxyrvwI.net] >>436 選択ソート?
449 名前:デフォルトの名無しさん mailto:sage [2016/04/16(土) 23:39:51.82 ID:LiAu7R50.net] >>439 え?バブルソートでしょ。ちょっと調べてくる。
450 名前:デフォルトの名無しさん mailto:sage [2016/04/16(土) 23:43:07.03 ID:LiAu7R50.net] https://ja.wikipedia.org/wiki/%E3%83%90%E3%83%96%E3%83%AB%E3%82%BD%E3%83%BC%E3%83%88 これの疑似コードのちょっと悪い感じ? シンプルにするためにオーダー悪くなってる。
451 名前:デフォルトの名無しさん mailto:sage [2016/04/16(土) 23:47:56.31 ID:LiAu7R50.net] おっとー、交換条件がおかしいか。 そんなの些細な違いよ!
452 名前:デフォルトの名無しさん mailto:sage [2016/04/16(土) 23:56:43.13 ID:8gZGJMh1.net] >>37 F# 勉強中 ideone.com/Q1ZFMv 2進⇔10進変換の復習ができてよかった
453 名前:デフォルトの名無しさん mailto:sage [2016/04/17(日) 20:39:22.16 ID:cB2Ml+fZ.net] >>433 @Mathematica ideone.com/hKhw79
454 名前:デフォルトの名無しさん mailto:sage [2016/04/17(日) 20:55:49.84 ID:cB2Ml+fZ.net] 調べたらこんなのもあった。 @Mathematica 「パターンと規則を使ってバブルソートアルゴリズムを実装する」 https://reference.wolfram.com/language/example/ImplementTheBubbleSortAlgorithmWithPatternsAndRules.html
455 名前:デフォルトの名無しさん [2016/04/17(日) 21:55:03.28 ID:8hbCthlc.net] >>440 隣同士の要素を比較・交換するのがバブルソートだと思うけど
456 名前:デフォルトの名無しさん mailto:sage [2016/04/17(日) 22:19:43.05 ID:chPSqpJT.net] >>411 F# 勉強中 ideone.com/3e3eOt 素数判定はWikipediaの同名項目に書かれてるCソースの丸パクリです・・・ あと、最初に挑戦したときは>>418 と全く同じ症状だったので断念・・・ なんだか、イマイチな感じなので後でコッソリとリファクタリングするかもです
457 名前:デフォルトの名無しさん mailto:sage [2016/04/17(日) 22:30:35.60 ID:DiLcHZEv.net] 4×4の15パズルの、解ける盤面を作るのに、 空いているマスに、ランダムに100回ほど移動して、 盤面を作っている本を読んだが、 ランダムに盤面を作って、それが解ける問題かどうか、簡単に判別できる方法はないの? 3×3の盤面で、ランダムに盤面を作って、解ける問題かどうかを判別して。 上は解ける。下は解けない 0,1,2 3,4,5 6,7,空 0,1,2 3,4,5 7,6,空