1 名前:デフォルトの名無しさん [2019/02/03(日) 11:21:53.20 ID:72eosYJ+.net] プログラミングのお題スレです。 【出題と回答例】 1 名前:デフォルトの名無しさん お題:お題本文 2 名前:デフォルトの名無しさん >>1 使用言語 回答本文 結果がある場合はそれも 【ソースコードが長くなったら】 (オンラインでコードを実行できる) https://ideone.com/ codepad.org/ compileonline.com/ rextester.com/runcode https://runnable.com/ https://code.hackerearth.com/ melpon.org/wandbox https://paiza.io/ 宿題は宿題スレがあるのでそちらへ。 ※前スレ https://mevius.2ch.net/test/read.cgi/tech/1538096947/
555 名前:デフォルトの名無しさん [2019/03/07(木) 03:21:20.86 ID:QS9GxyX4.net] >>494 Kotlin https://paiza.io/projects/w5ywqyfGfQpwllH68rmt5A 入力はカラム名の行が最初にあり、次の行からはデータが続き「# カラム名」の行で終わり、 そこで指定したカラム名の列の合計値が出力される。 エラーはデータが数値として解釈できない文字列、項目数がカラム名の数と一致しない行、 同一カラム名があった場合に出る。一度エラーになると # の行まで読み飛ばされる。
556 名前:デフォルトの名無しさん [2019/03/07(木) 17:22:14.11 ID:bbRk4M8e.net] お題 R言語にandmaginsとうう関数がある。 m行n列の行列を渡すと行ごとの合計と列ごとの合計を追加して (m+1)行(n+1)列の行列を返す。 同様の関数をつくる。 1 2 3 4 5 6 が 1 2 3 6 4 5 6 15 5 7 9 21 となる
557 名前:デフォルトの名無しさん mailto:sage [2019/03/07(木) 19:35:31.07 ID:gyMjU+f2.net] >>544 C++ https://ideone.com/XhFw95
558 名前:デフォルトの名無しさん mailto:sage [2019/03/07(木) 23:35:37.41 ID:bSfNx8gZ.net] >>544 Squeak/Pharo Smalltalk | fn | fn := [:arr | arr, {arr sum} collect: [:row | row, {row sum}]]. fn value: #( (1 2 3) (4 5 6) ). "=> #( (1 2 3 6) (4 5 6 15) (5 7 9 21) ) "
559 名前:デフォルトの名無しさん mailto:sage [2019/03/08(金) 00:35:43.62 ID:N66/0TP0.net] 大文字小文字だけが異なる、ファイル名を見つける 入力 aB.txt Ab.txt xx cd cD CD 出力 aB.txt : Ab.txt cd : cD : CD
560 名前:デフォルトの名無しさん mailto:sage [2019/03/08(金) 04:41:32.92 ID:JrzgN4oN.net] #!/bin/sh infile="aB.txt Ab.txt xx cd cD CD" for f in ${infile}; do echo $f $(echo $f | tr [:lower:] [:upper:]) done | awk ' { save[$2] = save[$2] " : " $1 } END { for (i in save) print save[i] }' | sed 's/^ : //' | sort | awk 'NF > 1 {print}'
561 名前:デフォルトの名無しさん mailto:sage [2019/03/08(金) 09:23:36.88 ID:iTwHpxzE.net] >>547 Squeak Smalltalk | fn | fn := [:arr | | groups | groups := arr groupBy: #asLowercase having: [:group | group size > 1]. groups values collect: #asArray ]. fn value: #('aB.txt' 'Ab.txt' 'xx' 'cd' 'cD' 'CD'). "=> #(('cd' 'cD' 'CD') ('aB.txt' 'Ab.txt')) "
562 名前:デフォルトの名無しさん [2019/03/08(金) 09:47:13.60 ID:pv8HlopZ.net] >>547 それはWindowsとかでは試せないのでは?ディレクトリが違うならできるだろうけど。 (まあWindowsでもWSLでUbuntuとか動かせばできるが)
563 名前:547 mailto:sage [2019/03/08(金) 11:48:57.26 ID:N66/0TP0.net] 同一フォルダ内での、大文字小文字だけが異なるファイル名は、Windows では作れないけど、 Linux では作れてしまうので、それをチェックする目的です Linuxでも、こういうファイル名は作らない方がよい
564 名前:デフォルトの名無しさん mailto:sage [2019/03/08(金) 16:35:28.24 ID:VhFMuL/G.net] >>551 死ね
565 名前:デフォルトの名無しさん mailto:sage [2019/03/08(金) 17:12:36.80 ID:qP6cz7Aj.net] 時々死ねと言うやついるけど同じやつなのか? いい加減で大人になれ。
566 名前:デフォルトの名無しさん [2019/03/08(金) 18:19:49.57 ID:aY8HpC9F.net] イ`
567 名前:デフォルトの名無しさん mailto:sage [2019/03/08(金) 18:42:00.27 ID:eAQ60MzF.net] お題: 1=2を証明しろ 証明出来ないは無しで
568 名前:デフォルトの名無しさん mailto:sage [2019/03/08(金) 18:49:56.10 ID:qP6cz7Aj.net] >>555 それは言語によるんじゃないの? 論理的にはあり得ない。 一般的には、0がFalse でそれ以外がTrueと言うだけでは?
569 名前:さまよえる蟻人間 mailto:sage [2019/03/08(金) 18:58:42.07 ID:8R2ZaOuQ.net] 整数のオーバーフロー使えば楽に証明できるけど、それはもはや基礎数学の整数じゃないし。
570 名前:デフォルトの名無しさん mailto:sage [2019/03/08(金) 19:14:26.55 ID:2owB+W9f.net] >>544 octave https://ideone.com/JoTcaP
571 名前:デフォルトの名無しさん mailto:sage [2019/03/08(金) 19:17:05.52 ID:ru9qZk5w.net] お題: N人の人物がある部屋に出入りしています。 i番目の人は時刻a[i]に入室し、時刻b[i]に退室します。(1 <= a[i] < b[i]) すべての人は入退室時に以下の通り行動します。 ・入室時に、照明がOFFならば照明をONにする。 ・退室時に、室内に自分以外に誰もいなければ照明をOFFにする。 最初は照明がOFFになっていて室内には誰もいません。 複数の人物が同時に入退室することはないものとします。 照明がONになっている時間の合計を求めなさい。 a={1,3,5} b={2,4,6} => 3 a={1,2} b={5,6} => 5 a={100,1,2} b={105,3,4} => 8
572 名前:デフォルトの名無しさん mailto:sage [2019/03/08(金) 20:42:26.76 ID:q/o0JPH8.net] >>364 brainf*ck >++++++++++<+[,.>.<]
573 名前:デフォルトの名無しさん mailto:sage [2019/03/08(金) 20:42:27.70 ID:AweN/YnK.net] ★ぁりがdヾ(。・ω・。)ノぁりがd★
574 名前:デフォルトの名無しさん mailto:sage [2019/03/08(金) 20:54:42.10 ID:2owB+W9f.net] >>559 ruby https://ideone.com/yo3mvc
575 名前:デフォルトの名無しさん [2019/03/08(金) 21:22:26.01 ID:QMcItLTV.net] >>559 Common Lisp https://ideone.com/2hHoAC
576 名前:デフォルトの名無しさん mailto:sage [2019/03/08(金) 21:55:03.73 ID:2owB+W9f.net] >>547 ruby https://ideone.com/faTKf5
577 名前:デフォルトの名無しさん [2019/03/09(土) 08:53:56.42 ID:irV15TzB.net] >>410 J f =: 3 : 0 > , { ;/(,. toupper) y )
578 名前:562 mailto:sage [2019/03/09(土) 09:29:27.51 ID:8CAUa/TL.net] >>559 ruby すこーしすっきり f = ->a, b {a.zip(b).map {|c| (c.first...c.last).to_a}.inject(:|).size} ↓ f = ->a, b {a.zip(b).map {|c, d| [*c...d]}.inject(:|).size}
579 名前:547 mailto:sage [2019/03/09(土) 10:58:09.02 ID:GVs3bbIF.net] >>564 たった2行とは、素晴らしい! JavaScript(JS)とか、関数型プログラミングだね f(&:upcase), f(&:chomp) 関数型でも、こういうように呼ぶ関数名が明確にわかる点では、Ruby はJS をしのぐ! 漏れが以下で作ったけど、手続き型の処理で、10行以上も掛かったw 情けない Ruby 初心者スレッド Part 65 https://mevius.5ch.net/test/read.cgi/tech/1545421414/234
580 名前:デフォルトの名無しさん mailto:sage [2019/03/09(土) 12:51:20.88 ID:C6v7oEvs.net] クソみてーな恣意的な記号使いはperl譲りだな
581 名前:デフォルトの名無しさん mailto:sage [2019/03/09(土) 13:17:28.26 ID:capoU8RA.net] アンダースコア_はprologの時点であるんじゃね それに記号なら恣意的だろ
582 名前:デフォルトの名無しさん [2019/03/09(土) 19:25:50.03 ID:hBO8FWAE.net] >>544 Haskell main = mapM_ print $ newxss ++ [zipWith (+) (newxss!!0) (newxss!!1)] xss = [[1,2,3],[4,5,6]] newxss = map (\xs -> xs ++ [sum xs]) xss
583 名前:デフォルトの名無しさん mailto:sage [2019/03/09(土) 19:49:27.50 ID:R3sqYFdd.net] お題:文字列と数値nが与えられるのでn番目の文字とそれ以外の文字を上下にスライドさせて表示する 入力 abc 2 出力 *b* a*c
584 名前:デフォルトの名無しさん mailto:sage [2019/03/09(土) 19:57:53.65 ID:C6v7oEvs.net] お題か出力のどっちかが間違っている 日本語勉強した方がいい
585 名前:デフォルトの名無しさん [2019/03/09(土) 19:58:57.39 ID:hBO8FWAE.net] >>544 ,570 任意の数の行列だったか。。。 修正 main = mapM_ print $ newxss ++ [lastxs] xss = [[1,2,3],[4,5,6],[7,8,9]] newxss = map (\xs -> xs ++ [sum xs]) xss lastxs = map sum $ retsu newxss retsu ([]:xs) = [] retsu xss = map head xss:retsu (map tail xss)
586 名前:デフォルトの名無しさん [2019/03/09(土) 20:10:49.99 ID:0OOZ8KrR.net] >>557 オーバーフローは数学ですらないだろ。こっちは数学。 宇宙を支えていたのは、驚異のたし算だった 私がこのたし算を知ったのは20歳のころでした。その衝撃は、私の運命を変えるまでの威力を持っていました。 私の大学は2年生で所属学科を決めるシステムになっており、私はアインシュタインに憧れて物理学科に進もうとしていました。 その私が出会ったのがラマヌジャン(1887-1920)です。彼が描いた2つの絵を見た瞬間、私の中で何かが変わりました。 jbpress.ismedia.jp/mwimgs/4/b/400/img_4b7f33022b840f792a0324a10b89a24d369437.jpg jbpress.ismedia.jp/articles/-/46939
587 名前:さまよえる蟻人間 mailto:age [2019/03/09(土) 20:18:26.71 ID:XY+I2Bbh.net] >>574 応用数学ではオーバーフローも数学の一種。
588 名前:デフォルトの名無しさん [2019/03/09(土) 20:25:11.72 ID:hBO8FWAE.net] >>364 Haskell main = mapM_ (\c -> putStrLn $ c:[]) "hello"
589 名前:デフォルトの名無しさん [2019/03/09(土) 20:38:18.94 ID:1xJckQ5D.net] >>544 kotlin https://paiza.io/projects/cL6xIQA--yDFZ1pjndvzAw Double型でやったら出力に小数点以下が付加されたが値として間違ってるわけではないのでそのままにする。
590 名前:デフォルトの名無しさん mailto:sage [2019/03/10(日) 01:41:18.58 ID:5A3UW8N7.net] >>544 Python import numpy as np # 何行何列でも良い ar =[ [1,2,3,4], [4,5,6,7], [7,8,9,10] ] #縦に足して行を追加 r=np.vstack((ar,np.sum(ar,axis=0))) #横に足して列を追加 ans=np.hstack((r,np.sum(r,axis=1).reshape((-1,1)))) print('ans=\n',ans) ''' ans= [[ 1 2 3 4 10] [ 4 5 6 7 22] [ 7 8 9 10 34] [12 15 18 21 66]] '''
591 名前:デフォルトの名無しさん mailto:sage [2019/03/10(日) 03:08:27.84 ID:LqrBe0vy.net] >>571 ruby s = "abc" n = 2 t = "*" * s.length t[n - 1] = s[n - 1] u = s.clone u[n - 1] = "*" puts(t, u)
592 名前:デフォルトの名無しさん [2019/03/10(日) 11:41:34.27 ID:x4ZRCWyR7] >>544 ,573 n = 3 xss = (take n.iterate (map (+ n))) [1..n] もっと大きな行列渡したくて、n*nのリスト(行列)作る関数作った。 こういうのって、手続き型と宣言型で違いが顕著だと思った。
593 名前:デフォルトの名無しさん [2019/03/10(日) 11:57:40.70 ID:e6SI07pl.net] >>571 J f =: 4 : 0 |: ((,. -.) (<:x) = i. # y ) {"1 '*' ,. y ) 2 f 'abc' *b* a*c
594 名前:デフォルトの名無しさん [2019/03/10(日) 13:31:21.17 ID:vqbsu7fW.net] >>571 Haskell main = do putStrLn $ seclet "abc" (==) 2 putStrLn $ seclet "abc" (/=) 2 seclet lst func num = seclet' lst func 1 num where seclet' [] _ _ _ = [] seclet' (x:xs) f n a | f n a = x: seclet' xs f (n + 1) a seclet' (_:xs) f n a = '*': seclet' xs f (n + 1) a
595 名前:デフォルトの名無しさん [2019/03/10(日) 13:56:33.99 ID:vqbsu7fW.net] >>571 >>582 引数の順序入れ替えてmapM_ 使って、main部分を一行にまとめた。 main = mapM_ (putStrLn.seclet "abc" 2) [(==),(/=)] seclet lst num func = seclet' lst 1 num func where seclet' [] _ _ _ = [] seclet' (x:xs) n a f | f n a = x: seclet' xs (n + 1) a f seclet' (_:xs) n a f = '*': seclet' xs (n + 1) a f
596 名前:デフォルトの名無しさん mailto:sage [2019/03/10(日) 17:19:36.82 ID:lsf+n+kn.net] >>571 Perl5 ($s, $n)= qw{abc 2}; @s = split'',$s; @t = qw{*} x @s; $n--; ($s[$n], $t[$n]) = ($t[$n], $s[$n]); print @t, "\n", @s, "\n"; 実行結果 ~ $ perl 13_571.pl *b* a*c
597 名前:デフォルトの名無しさん mailto:sage [2019/03/10(日) 17:47:53.28 ID:lsf+n+kn.net] >>544 Perl5 @a = ([1, 2, 3,], [4, 5, 6]); use List::Util sum; push @$_, sum(@$_) for @a; for $i (0..$#{$a[0]}) { push @b, sum(map{$a[$_][$i]} 0..$#a) } print "@$_\n" for @a; print "@b\n"; 実行結果 ~ $ perl 13_544.pl 1 2 3 6 4 5 6 15 5 7 9 21
598 名前:デフォルトの名無しさん mailto:sage [2019/03/10(日) 20:48:09.83 ID:z5UigTCL.net] >>571 octave https://ideone.com/fEaJMh
599 名前:デフォルトの名無しさん mailto:sage [2019/03/10(日) 21:12:33.92 ID:ObNpfzdX.net] ここっておっさんが多いイメージ
600 名前:デフォルトの名無しさん [2019/03/10(日) 21:16:39.36 ID:KcIurEvX.net] >>559 Java https://paiza.io/projects/uoq0pfsAO5vRexzfWg1Mdw?language=java
601 名前:デフォルトの名無しさん mailto:sage [2019/03/10(日) 21:20:18.73 ID:z5UigTCL.net] >>571 ruby https://ideone.com/6NM2Z2 >>567 String#lines ←これの存在知らなかった 勉強になりました
602 名前:デフォルトの名無しさん [2019/03/10(日) 21:46:22.59 ID:KcIurEvX.net] >>547 Java https://paiza.io/projects/2ff8V2wS29AjINHLm-bgYw?language=java
603 名前:デフォルトの名無しさん mailto:sage [2019/03/10(日) 21:59:51.08 ID:5renFNS0.net] >>571 @Mathematica https://ideone.com/gDkzl4
604 名前:567 mailto:sage [2019/03/10(日) 22:01:14.30 ID:bEzyp4mc.net] >>589 余談だが、Ruby のString#lines の所を見たら、chomp: true で改行も削除できる! Rubyは、色々と便利なものを作っている p ary = <<"EOT".lines( chomp: true ) # 配列 a b EOT #=> ["a", "b"]
605 名前:デフォルトの名無しさん [2019/03/10(日) 22:14:16.51 ID:SJp/1k7U.net] >>571 Common Lisp https://ideone.com/cnTKML
606 名前:デフォルトの名無しさん [2019/03/10(日) 22:19:23.44 ID:KcIurEvX.net] >>579 Java https://paiza.io/projects/eCieLwJTqtEDvaYM4uknOA?language=java
607 名前:デフォルトの名無しさん [2019/03/10(日) 22:19:48.10 ID:KcIurEvX.net] ごめん間違えた >>571 です
608 名前:デフォルトの名無しさん mailto:sage [2019/03/10(日) 23:51:29.55 ID:THpHptm5.net] >>571 Node.js https://ideone.com/l4XmDp
609 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 00:57:47.40 ID:HrDBQthw.net] >>571 Squeak/Pharo Smalltalk。nを複数指定可で | fn | fn := [:str :ns | | ans | ans := (String new: str size withAll: $*), String cr, str. ns do: [:n | ans swap: n with: n + str size + 1]. ans ]. fn value: 'abc' value: #(2). "=> '*b* a*c' " fn value: 'abcdef' value: #(2 3 5). "=> '*bc*e* a**d*f' "
610 名前:デフォルトの名無しさん [2019/03/11(月) 01:39:23.53 ID:+Nlo5Elt.net] >>547 Kotlin https://paiza.io/projects/fxNs_pgfP7MwmXYp2xQ1YA
611 名前:デフォルトの名無しさん [2019/03/11(月) 02:41:21.51 ID:+Nlo5Elt.net] >>559 Kotlin https://paiza.io/projects/rbSY9Q6oTve1ILy1AIIj_g
612 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 07:59:46.54 ID:hFtMxxmn.net] >>547 Perl5 https://ideone.com/Mbj5Hz push @{$h{lc $_}}, $_ for <STDIN>; print "@{$_}" for grep{@$_ > 1} values %h;
613 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 09:18:51.69 ID:D2PSGRy3.net] >>571 Python def split3(s,p=1) : r0= s[:p]+'*'+s[p+1:] r1= '*'*p + s[p] + '*'*(len(s)-(p+1)) return r0+'\n'+r1 print(split3('abcd',2)) print(split3('abc',0)) '''結果 ab*d **c* *bc a** '''
614 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 10:48:42.57 ID:u4Ymakq9.net] お題: 下の例のような入力から例の出力のアスキーアートを出力する。それ以外は自由 例: 入力: >>>>>vvvvv<<<<^^^^ 出力: >>>>> ^****v ^****v ^****v ^****v <<<<v
615 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 11:00:20.46 ID:JmszPBJl.net] これって一歩目はなんでもいいよね
616 名前:デフォルトの名無しさん [2019/03/11(月) 11:35:10.21 ID:AGCERQh7.net] >>571 Io f := method(s,n, "*" repeated(s size)atPut(n - 1, s at(n - 1)) println s asMutable atPut(n - 1, 42)println ) f("abc",2) 実行結果 *b* a*c
617 名前:デフォルトの名無しさん [2019/03/11(月) 11:45:13.16 ID:+cahZmCl.net] >>602 それ3番目と4番目は必ず1番目と2番目の長さ-1になってるの?
618 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 11:48:56.08 ID:u4Ymakq9.net] >>603 >>605 そういうめんどくさい質問がこないように、 それ以外は自由と付け加えてある
619 名前:デフォルトの名無しさん [2019/03/11(月) 13:45:52.04 ID:+cahZmCl.net] >>606 仕様をきっちり決めないと解釈の違いから沢山の違った回答が出てくる可能性があるのだが、それで良いと。
620 名前:デフォルトの名無しさん [2019/03/11(月) 16:12:48.47 ID:TMb+YRHxP] >>571 >>597 Haskellでも複数対応してみた。 main = mapM_ (putStrLn.secret "abcdef" [2,3,5]) [elem,notElem] secret xs ns = secret' xs 1 ns where secret' [] _ _ _ = [] secret' (x:xs) n as f | f n as = x:secret' xs (n + 1) as f secret' (_:xs) n as f = '*':secret' xs (n + 1) as f
621 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 15:42:22.28 ID:7+lrfCi1.net] >>605 そもそも4方向にいくらかずつ進んで四角形で終わりという形とは限らないのでは? ランダムに方向や距離を生成して既に通った道も上書きするような入力を許容すると考えたっていいはず。
622 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 16:07:33.07 ID:5vEtkzIB.net] >>606 何でこれ以外の形は許さんと言えないんだ? 自由にどうぞなんて問題じゃ無いだろ。
623 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 16:18:14.19 ID:ZVqwh3rP.net] >>607 ,610 こいつらホント掃き溜めのゴミだな
624 名前:デフォルトの名無しさん [2019/03/11(月) 16:19:55.06 ID:+cahZmCl.net] >>571 Kotlin https://paiza.io/projects/fOvQDvJ6VoTchgVL3pYJpw
625 名前:デフォルトの名無しさん [2019/03/11(月) 16:25:40.59 ID:+cahZmCl.net] >>609 なるほど。しかしそれならばその事を書いておいて欲しかったな。 >>611 何を作れば良いのかよくわからないから質問しているだけなのだが。それが君にとって何か不都合なのか?
626 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 16:58:12.79 ID:PGatxMde.net] >>602 出力おかしくねぇ?最初と最後の行は5列だけど 間の行ぜんぶ6列になってるぞ? 出力: >>>>> ^****v ^****v ^****v ^****v <<<<v こうじゃね? >>>>> ^***v ^***v ^***v ^***v <<<<v
627 名前:デフォルトの名無しさん [2019/03/11(月) 17:14:58.23 ID:+cahZmCl.net] ま、いいや。よくわかんない問題は放っておこう。
628 名前:デフォルトの名無しさん [2019/03/11(月) 18:14:45.27 ID:I7wjNxVQq] >>547 Haskell import Data.Char main = (mapM_ print.filename) ["a","aB.txt","Ab.txt","xx","cd","cD","CD","f"] filename [] = [] filename (xs:xss) |length a > 1 = a:(filename.drop (length a)) (xs:xss) where a = filter ((map toUpper xs ==).map toUpper) (xs:xss) filename (_:xss) = filename xss
629 名前:デフォルトの名無しさん [2019/03/11(月) 19:08:54.88 ID:TMb+YRHxP] ソートするの忘れてた…。 import Data.Char main = (mapM_ print.filename) ["a","aB.txt","Ab.txt","xx","cd","cD","CD","ab.txt","f"] filename [] = [] filename (xs:xss) | length a > 1 = a:(filename.drop (length a)) sorted where a = filter ((map toUpper xs ==).map toUpper) sorted sorted = ssort (xs:xss) filename (_:xss) = filename xss ssort [] = [] ssort xs = minimum xs:(ssort.delete (minimum xs)) xs delete _ [] = [] delete n (x:xs) | n == x = xs delete n (x:xs) = x:delete xs
630 名前:デフォルトの名無しさん [2019/03/11(月) 19:49:55.14 ID:TMb+YRHxP] 度々ごめん・・・ バグが有った。 そもそもソートとか関係なかった。 import Data.Char main = (mapM_ print.filename) ["a","aB.txt","Ab.txt","xx","cd","cD","CD","ab.txt","f"] filename [] = [] filename (xs:xss) | length a > 1 = a:filename b where a = func (==) b = func (/=) func f = filter (f (map toUpper xs).map toUpper) (xs:xss) filename (_:xss) = filename xss
631 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 19:21:39.70 ID:PGatxMde.net] >>602 javascript 長くなっちった https://ideone.com/vzncKq 入力: <<<<^^^^>>>>>vv<<<<<<<<<<<vvv>>>^^^^^^^>>>>>>>>>>vvvvvv 出力: ***^>>>>>>>>>> ***^*********v ***^**^>>>>>*v ***^**^****v*v <<<^<<<<<<<v*v v**^**^******v v**^**<<<<***v v>>>**********
632 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 19:36:33.05 ID:/Vx80pKW.net] お題 m×nマスのチェス盤を考える。 1つのナイトが最も左上のマスにあり、そこから任意の回数動かすことができる。 ナイトが訪れることのできるマスの個数を求めよ。 m=1, n=1 => 1 m=3, n=3 => 8 (真ん中のマスを訪れることができない) m=4, n=4 => 16
633 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 19:36:35.88 ID:DXpwYxNa.net] >>619 説明がないと何をどうやってるのかわけわからん。 先ずは入力と出力をどう解釈して作ったのか? 形にも一貫性があるとは思えないけど。 しかしこんなのがどんどん出てきたら、煩わしいだけ。
634 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 20:02:17.74 ID:JmszPBJl.net] いや、その通りに歩くんだろ
635 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 20:07:58.88 ID:5vEtkzIB.net] 出題通り以外の回答はやめてほしいな。 それ以外の回答をする場合は、解説文も日本語で書いてくれよ。 不慣れなプログラムもあることだろうし、長いプログラムなんて見る気にもならないし、プログラムを見
636 名前:黷ホわかるというのは無し。 [] [ここ壊れてます]
637 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 21:26:59.93 ID:ALw/TkKR.net] >>623 ソースの中身まではちゃんと確認してないけど、ちゃんと出題通りにできてると思う。 出題の"入力例"通りではないが、複雑な入力パターンに対して正しく動いてそうと思える実行例だと思うぞ。
638 名前:デフォルトの名無しさん [2019/03/11(月) 21:31:45.37 ID:1OBeL2+Y.net] >>602 Common Lisp, >>619 の移植 https://ideone.com/B76Dki
639 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 22:12:51.52 ID:+V1dboU8.net] >>>v<^^>> の場合 *^>> >^> *<v
640 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 22:40:32.65 ID:6pdTomDX.net] >>571 octave 複数列指定可能版 https://ideone.com/UqKcNb h = @(m, n) cell2mat(arrayfun(@(c, i) {['*'; c] [c; '*']}(1 + (i == n)), m, 1:numel(m))); ↓ h = @(m, n) cell2mat(arrayfun(@(c, i) {['*'; c] [c; '*']}(1 + any(i == n)), m, 1:numel(m)));
641 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 23:02:42.18 ID:GdRfR4uu.net] 以下の整形式の.ini ファイルから、すべての値を取得して、 「セクション名 : キー名 : 値」で表示する [sec1] key1=val1 [sec2] key2=val2
642 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 23:51:36.77 ID:/Vx80pKW.net] >>628 C++ https://ideone.com/V4sf81
643 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 00:26:56.22 ID:XpXqAgCh.net] >>628 Perl5 while (<DATA>) { $s = $1 if /\[(\w+)\]/; print "$s:$k:$v\n" if ($k, $v) = /(\w+)=(\w+)/; } __DATA__ [sec1] key1=val1 [sec2] key2=val2 実行結果 ~ $ perl 13_623.pl sec1:key1:val1 sec2:key2:val2
644 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 00:37:42.27 ID:XpXqAgCh.net] >>630 も少し簡潔に書けるんだった… while (<DATA>) { $s = $1 if /\[(\w+)\]/; print "$s:$1:$2\n" if /(\w+)=(\w+)/; } __DATA__ [sec1] key1=val1 [sec2] key2=val2
645 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 01:38:34.08 ID:nghHbW0D.net] >>628 javascript(es2018 named capture groups) ` [sec1] key1=val1 [sec2] key2=val2 `.replace(/\[(?<section>.+)\]\n(?<key>.+)=(?<value>.+)\n/g, '$<section>:$<key>:$<value>').trim(); 結果: sec1:key1:val1 sec2:key2:val2
646 名前:デフォルトの名無しさん [2019/03/12(火) 05:56:44.85 ID:KPetEW8/.net] >>547 Haskell import Data.Char main = (mapM_ print.filename) ["a","aB.txt","Ab.txt","xx","aBc.txt","cd","cD","CD","ab.txt","z"] filename [] = [] filename (xs:xss)| length a > 1 = a:filename b where a = func (==) b = func (/=) func f = filter (f (map toUpper xs).map toUpper) (xs:xss) filename (_:xss) = filename xss
647 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 17:03:25.03 ID:+VdOvnK/.net] >>620 0 <= m,n <=10億 と仮定して int64_t cal(int m, int n){ if( m>n ) swap(m, n); if( m<=1 ) return m; if( m==2 ) return (n + 1) / 2; if( n==3 && m==3) return 8; return (int64_t)n * m; }
648 名前:デフォルトの名無しさん [2019/03/12(火) 18:21:10.69 ID:MLSq27aG.net] >>628 Io f := method(s, s split("\n\n")map(splitNoEmpties("[","]","\n",=")join(":")) )
649 名前:デフォルトの名無しさん [2019/03/12(火) 18:30:10.82 ID:M/w6PjEF.net] >>624 出題通りなのかどうかがわからんのだが。どう解釈したら出題通りとなるのか?
650 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 19:26:28.38 ID:mUEXbKn8.net] お題 数列a[i]を考える。 a[0] = p a[i+1] = q * a[i] + r [入力] p q r n (p,q,r,nは整数) (0≦p,q,r≦99) (0≦n≦10^10) [出力] a[n] mod 13 を求めよ 1 2 0 8 => 9 (2^8 mod 13) 1 0 99 0 => 1 1 2 3 2 => 0 (a[0]=1, a[1]=2*1+3=5, a[2]=2*5+3=13) 1 3 5 10000000000 => ?
651 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 20:52:19.49 ID:2hm/Dong.net] つまらん
652 名前:デフォルトの名無しさん [2019/03/12(火) 21:03:21.90 ID:KPetEW8/.net] >>624 >>547 に対して、ナチュラルソートされて無くても(普通のソートでも正しい答えが得られるとは限らない)正しい答えを出せるとか、出題者の意図を踏まえながら、意図を超えた範囲もカバーするのはいいんじゃ無いか? 意図を無視するのは論外だが。
653 名前:デフォルトの名無しさん [2019/03/12(火) 21:07:56.58 ID:KPetEW8/.net] >>637 マシンパワーがあれば式を入れればいいだけってのはね。。。 解くのに頭使う。解いてみたら案外簡単(アルゴリズムが浮かぶのがキモ)。あえて難しくて最適化の道がある。とかが望ましい。 いあ、無茶振りだろうから、どれか2つ満たせればおkだが。
654 名前:デフォルトの名無しさん [2019/03/12(火) 21:12:06.00 ID:KPetEW8/.net] 例えば[[1,2,3],[4,5,6],[7,8,9]]みたいな任意のn*nなリスト(または配列)を非破壊的に作れ。とか。
655 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 21:43:25.40 ID:rf03pH6k.net] >>641 一般的なミューテートするカウンタも使っちゃダメってことかな?