プログラミングのお題スレ Part10

レス数が1000を超えています。これ以上書き込みはできません。
2018/01/01(月) 11:15:04.40ID:2Vr1CPKy
プログラミングのお題スレです。

前スレ
プログラミングのお題スレ Part9
https://mevius.5ch.net/test/read.cgi/tech/1480579110/

【出題と回答例】
1 名前:デフォルトの名無しさん
  お題:お題本文

2 名前:デフォルトの名無しさん
  >>1 使用言語
  回答本文

【ソースコードが長くなったら】 (オンラインでコードを実行できる)
http://ideone.com/
http://codepad.org/
http://compileonline.com/
http://rextester.com/runcode
http://runnable.com/
http://code.hackerearth.com/
http://melpon.org/wandbox
https://paiza.io/

宿題は宿題スレがあるのでそちらへ。
2018/04/18(水) 15:36:58.27ID:8LhMtFC1
このスレを見ると
世の中のソフトが重くなる理由がよく分かる
2018/04/18(水) 17:14:39.91ID:AXVF0Rxy
>>903
それ1000までの間に半素数が200個存在するってあらかじめ分かってなきゃ使えなくない
2018/04/18(水) 17:19:26.83ID:8LhMtFC1
あらかじめ調べておけばいい
どうせなら半素数自体もしらべてテーブルにしておけば
2018/04/18(水) 18:12:40.76ID:AXVF0Rxy
だから調べてテーブル作るお題やろ
2018/04/18(水) 18:20:10.32ID:8LhMtFC1
コンパイラが究極に進化するとそうなる
今でも純関数&定数指定にすれば
2018/04/18(水) 18:35:30.37ID:MXcoXWvI
究極に進化して、ある数を素因数分解しろとか離散対数求めろと言われたら、
何桁でもテーブルにあって即答ってか?
暗号死ぬわ。
2018/04/18(水) 18:51:51.73ID:8LhMtFC1
当然限度はある
当たり前
2018/04/18(水) 19:18:25.23ID:SkflZos/
君さ、ちょっと黙ってて
912デフォルトの名無しさん
垢版 |
2018/04/18(水) 20:18:15.86ID:mfkhz8pH
>>816 J
>>817のやり方で
/:~~.,*/~p:i.20
913デフォルトの名無しさん
垢版 |
2018/04/18(水) 23:38:59.46ID:BI6oaZDa
>>871
Kotlin
https://paiza.io/projects/BHMBjMpBsKkeWxw_1WxpQw
何も考えずに総当たり。7桁以上は多すぎるのでやらないようにした。
914デフォルトの名無しさん
垢版 |
2018/04/18(水) 23:39:47.19ID:BI6oaZDa
ごめん。アンカ間違えた。>>869だった。
2018/04/18(水) 23:57:26.29ID:+652BqLv
トップバストとアンダーバストがmm単位で与えられるので
JIS L 4006におけるカップ体型区分を出力せよ
なお、与えられた体系が当該規格の数値と一致しない場合は
最も差の少ない体型区分を選べ

-*- input -*-
880 815
999 799
755 480

-*- output -*-
AA
E
H
2018/04/19(木) 00:17:12.74ID:7EnHL2Zb
JISの抜粋はよ
2018/04/19(木) 01:14:32.58ID:AYGORpen
三人目、人間?
2018/04/19(木) 01:50:36.78ID:uvuGKqvu
>>915 Ruby
2018/04/19(木) 01:51:08.23ID:uvuGKqvu
ミス
>>915 Ruby

#!ruby -na
puts ['AA',*?A..?I][(eval($F*?-)/25.0-3).round.clamp(0,9)]
2018/04/19(木) 02:02:41.15ID:FEDLlhkO
Jアニキはよ
2018/04/19(木) 04:01:30.95ID:4mrmpy84
このスレは、素数表を使う問題が多い

一方、プログラミング・コンテストでは、自作ライブラリも持ち込めるから、
素数表・ZDD を持ち込んで、解けるような問題は少ない

数学的な解法がなくて、全探索して見つけるものが多い
2018/04/19(木) 09:28:13.47ID:/i49YDDr
じゃあここで出てる問題をまず最初にNP完全かどうかを判定すればいい
競技プログラミングに適している問題かどうかを証明してから、改めてプログラミングにあたる
2018/04/19(木) 09:46:04.07ID:6rKghp/7
出題者がPと証明してから出すのが筋だろ
2018/04/19(木) 09:51:24.98ID:4mrmpy84
プログラミング・コンテストの良問は、
持ち込みの自作ライブラリでは解けないもので、

素直に全探索すると、計算回数が1億回以上になって、2秒以内に解けないもの

ここで、パズル的に考えて、数学的な法則を使うことで、
枝切り・ショートカットして、計算回数が1千万回以下になるもの
925デフォルトの名無しさん
垢版 |
2018/04/19(木) 10:05:22.86ID:ffBaMipw
>>915 J
f=:{&(25#'AA'';;/'ABCDEFGHI')@<.@-&62.5&(-/)
2018/04/19(木) 12:09:31.59ID:2nanKMvG
>>925
分かりにくいのは毎度の事だが今回はあんまり短くもならないんだな。
2018/04/19(木) 20:55:00.88ID:WIjUPUdP
JアプリみつけたのでJで遊んでる初学者だけど
参考にするコード見つけにくい(少ない検索し難い読みにくい)から
>>925の人の存在は有り難い

見所はインデックスを25で割らずテーブルを25倍にしてるとこか
2018/04/21(土) 20:19:05.79ID:ZknFSnjD
お題:文字列の配列をカンマ区切りで表示せよ
複数の方法を用いること

ruby
https://ideone.com/cKprYN
2018/04/21(土) 21:12:35.96ID:nWGazij5
配列を、って言ってるのに%wでスペース区切りの文字列から作るの?
てかrubyの%wって何のためにあるの?
splitあるのに組み込みので提供するほどのもの?
他言語者からしたらsplitは分かってもらえると思うが%wは分からんと思うぞ?
やっぱ書くだけの書き捨て言語なんかな。
2018/04/21(土) 21:20:16.29ID:20hKSpui
>>928 common lisp

(let ((a '("java" "ruby" "rust")))
  (format t "~{~A~^, ~}~%" a)
  (princ (reduce (lambda ($0 $1) (concatenate 'string $0 ", " $1)) a))
)
; java, ruby, rust
; java, ruby, rust
2018/04/21(土) 22:20:27.52ID:6J3G0l4e
>>929
>てかrubyの%wって何のためにあるの?

まさに今回のような場合に配列リテラルを作るためのものだろ
各要素が所与なのになんでわざわざ繋いだ文字列リテラル書いてsplitしようとするの?
2018/04/21(土) 22:36:51.73ID:QInDazsH
>>928 ruby
puts a[0...-1].inject(''){|r,s| r << s << ',' } + a.last
puts a.inject(''){|r,s| r << s << ',' }.chop
puts a.map{|s| [s, ','] }.join.chop
b = a.join
a[0...-1].inject(0){|r,s| r += s.length + 1; b = b.insert(r-1, ','); r }
puts b
2018/04/21(土) 22:45:40.32ID:QInDazsH
>>929
Perl だと
@week = qw(Sun Mon Tue Wed Thu Fri Sat)
2018/04/21(土) 23:51:06.09ID:Ktcilsrm
>>931
今回のような??
今回の問題文、「文字列の配列をカンマ区切りで表示せよ」ってなってんだが…
スペース区切りの文字列から始めてどうする。
それじゃ%wで配列にするまでもなく正規表現でスペースをカンマに置換すればいいじゃん。
935デフォルトの名無しさん
垢版 |
2018/04/22(日) 02:37:42.05ID:J/MYnpG1
>>928
Kotlin
https://paiza.io/projects/ZW2Hjc9tfnlrMwqvblaKlw
文字列は1行づつ入力から読んで MutableList に add して終わったら Array に変換して文字列の配列にしている。
2018/04/22(日) 02:46:31.80ID:9vFMU6Rd
>>928 javascript

var langs = ['javascript', 'python', 'go']
console.log(langs.join()) //ES5
console.log(langs.reduce((acc, elm) => `${acc},${elm}`)) //ES2015
langs |> ary => ary.join() |> console.log //ESNext
console.log((langs + ',').slice(0, -1)) //ES5
2018/04/22(日) 03:13:36.97ID:9vFMU6Rd
一番かんたんなの忘れてた
console.log(langs.toString())
console.log(langs + '')
console.log(`${langs}`)
2018/04/22(日) 03:19:59.16ID:9vFMU6Rd
console.log(String(langs))
langs |> String |> console.log //ESNext
2018/04/22(日) 06:29:12.88ID:xtwb4rw1
>>928 Squeak Smalltalk

| arr |
arr := #(java rust ruby).
arr asCommaString. "=> 'java, rust, ruby' "
arr asCommaStringAnd. "=> 'java, rust and ruby' "

String streamContents: [:ss |
arr do: [:each | ss << each] separatedBy: [ss << ', ']
]. "=> 'java, rust, ruby' "
2018/04/22(日) 10:27:04.31ID:H/AU6k7y
>>928
join一発でできるようなことをわざわざ問題にするなよ...
2018/04/22(日) 12:09:53.80ID:q7xT1ItO
誰かにコードを教えてもらう為に「お題」と言ってるだけじゃね?
2018/04/22(日) 13:43:01.03ID:RVJCTQ5T
不快に思うなら取り組まなきゃいいだけ
2018/04/22(日) 13:54:40.34ID:teaX0R9Y
サムダウンボタンがあったら容赦なく押していたよ
2018/04/22(日) 13:57:18.11ID:6NfC/koQ
数学センセが嫉妬かみっともない
開口の広いお題が繁盛すんのは当たり前
2018/04/22(日) 14:03:07.52ID:vUs8xFXM
餌ならなんでも構わない卑しい豚だからでは?
2018/04/22(日) 15:12:26.16ID:6BdKES38
そろそろ次スレの予感
947デフォルトの名無しさん
垢版 |
2018/04/22(日) 15:37:13.02ID:J/MYnpG1
>>841
Kotlin
https://paiza.io/projects/IMnM2t1z4XvL1y3JtdIScg
948928
垢版 |
2018/04/22(日) 15:38:01.72ID:tE7JnHSh
蛇足で無粋でしょうけど寸評をもってお礼に代えさせて下さい

寸評:
>>930 素早くreduce拾って下さったのと、コードのリズム感が目に優しくてすこ
formatたる謎の戦法も興味深い
>>932 chop戦略を出して下さって感謝。bを使ったほうはフフッときた
>>935 Kotlinのコードいつも楽しく拝見してます
「先頭別で、二個目からカンマくっつけ戦法」出してくれて感謝
>>936 joinでカンマついちゃうのが他言語から見たら興味深い
>>939 いつも楽しく拝見してます、相変わらずギョッとさせられる
じつは当初、andつきのほうをお題にしようかとも迷いましたが
不要な複雑さを持ち込んでしまうと危惧して止めたんですがさすがのSmalltalk

総評:
joinでの解決一個だけで回答されるのが一番つまらないので
それを暗に防ぐために複数の方法っていう指定をした
二番目三番目の方法となると、見てて楽しい、言語ごとの工夫が見えてくる
おまえらありがとう
949デフォルトの名無しさん
垢版 |
2018/04/22(日) 15:42:18.97ID:J/MYnpG1
そういや昨日本屋に行ったら「C言語による標準アルゴリズム事典」が売られてて、うわー懐かしいまだ売ってたのかこれ
と思ってよく見たら今年出たばかりの第2版だった。

[改訂新版]C言語による標準アルゴリズム事典 Software Technology
http://amzn.asia/bjcCLfp

この本はある意味お題になりそうな問題の宝庫ではないかと思う。
2018/04/22(日) 15:52:17.03ID:LFntnsZQ
まだJニキの回答が来てない…
2018/04/22(日) 15:57:34.72ID:bjDlbJPk
>>949
おう!
pascal 版を見たことがある、と思ってたんですが、気のせいだったのかな?
2018/04/22(日) 17:34:57.39ID:xCJicIF5
>>939
その文字列化メソッドの充実っぷりはすごい
953デフォルトの名無しさん
垢版 |
2018/04/22(日) 18:31:51.83ID:J/MYnpG1
>>951
それはおそらくこれだな。著者は同じ奥村さんだ。

Software Technology 12 コンピュータアルゴリズム事典
http://amzn.asia/b82A7jP

こちらは Pascal なので再販されそうな感じがしないね。
2018/04/22(日) 19:36:01.52ID:YjWQK7FP
[[['[] ]]] { {] ]][ '[][][] [][] [][][]  [] '[] []
2018/04/22(日) 19:59:42.16ID:bjDlbJPk
>>953
thx!
956デフォルトの名無しさん
垢版 |
2018/04/22(日) 21:54:24.98ID:DtOQlBfz
お題

再帰関数を使ってC++で次の問題の会を出すプログラム書いたんですけど、なんかミスばっかでダメなので、だれかどういうプログラム書けばいいのか教えてもらえませんか?

九つの椅子が正方形に並んでおり、はじめに数字の書いた札を持った何人かが座っているとする


○○5
○9○
12○

さらに他にも何人か数字の書いた札を持った人がいて、その人たちが空いてる席に順番に座って行くとする
全員座った後、それぞれの点数を数えるとする、ただし点数は前後左右の人が持ってる札の数字を足し算する


○○5
○9○
12○
で 3さん→4さん→7さん とすわり
○75
493
12○
となった、9の点数は7+4+3+2

この時、それぞれが自分の点数を最大になるように座ったら最終的にはどういう配置になるでしょう?ただし
・それぞれは座る順番を知っている
・その次に座る人達がどこに座るかまで考慮に入れて考える
・自分以外の点数は気にしない
・誰もいないところは0
・次の人が何箇所か座る候補があり絞れない時は常に予想図の最小値をとって考えるとする、つまり極端にリスクを恐れる
2018/04/22(日) 22:21:48.98ID:l7RA/Oa5
>>702
宿題は自分で解くから価値があるんだよ
2018/04/22(日) 22:38:26.14ID:7GS5N7oQ
自分より後の人のならび順、番号、人数はわかっている?

全員が天才で、その事を自分は知っている?
2018/04/22(日) 22:39:06.13ID:bjDlbJPk
>>957
このスレでそんな発言に意味があるのかな?
お題として面白ければ回答がつくだろうし糞だったら回答はつかないし、少なくともそれが宿題かどうかは関係ない
2018/04/22(日) 22:47:33.55ID:7GS5N7oQ
みんなが宿題を「お題」としてあげはじめたら
糞「お題」率が上がる

糞「お題」ばかりだとおれはこのスレを見なくなるだろう
2018/04/22(日) 22:56:47.60ID:l7RA/Oa5
>>959
宿題を書く奴は問題の解き方を理解できていないので、
ここに書かれる問いは「不完全な」問題になる。

お題として不適切なんだから、スレ違い
2018/04/22(日) 22:59:00.47ID:bjDlbJPk
>>960
宿題問題がすべて糞お題とは限らないだろう?
問題が宿題かどうかは問題ではなくて、問題が糞お題じゃなくて良問かどうかだろう?
2018/04/22(日) 23:01:16.13ID:bjDlbJPk
>>961
確かに宿題お題を出そうとする人間は、その問題が良問かどうかの判断すらできないから、必然的に「不完全な」出題になる傾向にある、というのはいえるかもしれないね
2018/04/22(日) 23:09:15.49ID:7GS5N7oQ
>>962
率の話

女は会社を辞める率が高いとか
黒人は犯罪率が高いとか
2018/04/22(日) 23:13:50.93ID:h9VBvdWZ
何のために宿題スレから分離したんだよ
2018/04/22(日) 23:19:32.66ID:bjDlbJPk
>>964
実は、出題者は(それが一部にせよ)教育的意図を抱いて問題を作成しているのだから、宿題問題には良問題が少ないとはいいきれない、と考えている
宿題問題でもそれが良問であれば、このスレで取り上げられてもいい、と思っている、まあ、ここんところは私見だが
で、ついた回答の多寡でこのスレの意志がある程度あらわされるんじゃないか、あからさまな宿題問題だったらこのスレでは回答はつかないからね

だから >>957 のようなことを書く人の考えていることがわからない、というか、>>957 は何も考えずに言葉のオートマタ(自動機械)的にレスを書いているんだね
そりゃなにも考えていないんだから、「考えていることがわからない」のも道理だと思いました
2018/04/22(日) 23:30:42.42ID:9Np5N8Zp
ふーん、でムーミン谷はどこにあるの?
2018/04/22(日) 23:31:41.45ID:7M0SJ8xj
>>966
お前の方こそ>>957がレスしてる元の流れを読まずにレスしてるオートマタでないか?
2018/04/23(月) 00:36:44.58ID:TheGSrgB
>>966
出題スレで「教えて下さい」「これ解いて下さい」等という感じの

「本人が問題の肝を理解していない」

ものに関しては須く「宿題は自分でやれ」と回答するのが出題スレだと思うが。
宿題なのか自作アプリで詰まってるのか知らんけど
出題スレで質問が許容されると他の人も懸念してる通り。
2018/04/23(月) 01:01:35.25ID:zSvvNM2R
問題が不完全だと思ったら好きに解釈して条件を決めて答えるのがこのスレ
宿題スレじゃないので出題者の意図・期待はどうでもいいからうっちゃって
面白そうだと思えば回答するのみ
2018/04/23(月) 01:41:00.51ID:Lxhtz3Yj
>>968
流されずに良く読んでるな
注意深いw
2018/04/23(月) 01:57:48.83ID:vGDXyrLu
>>969

>出題スレで質問が許容される
と糞お題が増える」
という懸念は、
このスレの性質上必然的に淘汰されるので、一時的に勃興したとしても、自然になくなるのでは?
必要のない縛りはない方がいい

>>971
>>968 は感心するほど注意深いね…
2018/04/23(月) 06:31:57.22ID:lnjW6wzS
「必要のない縛り」とは思ってない

「お題」スレであり質問スレではない
スレチを許容してたらスレの質が下がるのは明らか
2018/04/23(月) 06:33:05.46ID:lnjW6wzS
宿題は宿題スレがあるのでそちらへ。
2018/04/23(月) 09:49:33.46ID:7KuSA8wR
スレチが許されるなら数学の話も許されるはずだね
ましてや出題に関連した数学ならスレチとも言えないはずだが
2018/04/23(月) 10:42:43.85ID:n8Ml8Rp3
このスレで宿題が許容されたら宿題スレの存在意義が無くなるんでないか?
実質、スレタイの違う宿題スレが二つあるようなものなのでは?
2018/04/23(月) 11:00:07.86ID:7mKpSOdS
宿題にも良問があるかもと思う奴が自分で宿題スレを覗いて良問を待ってればいいだけの話で、このスレでは宿題は一切禁止でいいと思う。
2018/04/23(月) 13:39:48.59ID:jMm7sVs3
漏れは、数学的な問題や、宿題は解かない

プログラムの問題しか解かない
2018/04/23(月) 14:26:32.44ID:jMm7sVs3
>>956
すべての空席に、自分が座ったとしてループする

自分の前後左右が埋まるまで、ループする。
ただし、最終の人まで

次の人から、最後の人まで、ループする。
全通りを調べて、各人の次の人が、何箇所か座る候補があるときは、
最小値を、各人が選んだ、座席の値として使う
2018/04/24(火) 00:03:07.86ID:GlvNukAo
>>928 Perl
$ cat 10_928.pl
@s = ('java','ruby','rust');
$" = ',';
print "@s\n";

$ perl 10_928.pl
java,ruby,rust

簡単すぎる気が…
なんかオレ、出題意図を誤解してる?
2018/04/24(火) 00:17:11.44ID:RoXKv00p
あってんじゃねーの
joinを使うとおもしくないとか言ってるヴァカだし
無視していいんじゃね

出題意図を誤解できないように厳密に明文化する能力がないアフォだろ
それかわざと誤解するような引っかけ問題作ってるキティガイだ
2018/04/24(火) 00:21:58.25ID:GlvNukAo
まぁまぁ。
複数の方法と書いてあるし、
配列としてindexアクセスしてprintsするとか、
他の意図があるかと最初オモタ
2018/04/24(火) 00:29:59.28ID:RoXKv00p
>>948を見てみろ、
評論家気取りで
>joinでの解決一個だけで回答されるのが一番つまらない
とか言ってるぞ

だから>>980、お前はこのヴァカのなかでは最高級につまんねー人間だよ
どれだけヴァカがヴァカなことをするかほくそえんでるクソ野郎の出題だよ

出題意図は「joinだけで書いたヴァカをヴァカにすること」、それ以外は読み取れない
相当な悪意があると気付かねーの?
2018/04/24(火) 01:23:08.86ID:GlvNukAo
>>982
まぁまぁ、その経緯は知らなかったけど、そんなに腹立てないで。
本気になるべきもっと大事なことは他にある。

本音を言うと >>980 よりもっと短いゴルフっぽいコード書いて遊ぼうかと一瞬考たけど、
小学校の演習にもないような文字列リストのカンマ区切り印字
そこまで考える値打ちのかったのでやめといた。
2018/04/24(火) 01:33:15.52ID:GlvNukAo
実は、>>980 を書いた意図は、

>>928 は 別に頭を使ってプログラムロジックを書かなくても、
printがリストを印字する区切り文字設定の変更で出来ることであり、
プログラミングのお題としての意義がそもそも乏しい
みたな そんなつもりだったし テヘペロ
2018/04/24(火) 14:50:43.11ID:1HH7nATC
joinだけだとつまらんなら出題時に禁止しとけばいいだけだし、確かに性格悪いな
2018/04/24(火) 17:14:39.22ID:73+jN4z4
「○○禁止」は多言語で回答を出し合う場では忌み嫌われるから逆に避けたのでは?

「各要素列挙の間隙に何か処理を挟む」とか「最初(あるいは最後)の要素だけ例外扱いで列挙」とかにして
なおかつ、joinでは対処できないお題にすべきだった
2018/04/24(火) 18:17:50.56ID:GZnIDV7t
>>928 Ruby
puts a.to_s.tr(' "[]','')
puts a*','
2018/04/24(火) 18:39:57.08ID:b5LehDYo
お題:与えられた文字列を逆順にして出力する関数を定義しなさい。ただし、関数の呼び出しに十回に一回は失敗し、失敗した場合は文字列をランダムにシャッフルするようにしなさい。
2018/04/24(火) 18:42:05.36ID:b5LehDYo
>>989
訂正
十回に一回は失敗し ×
十回呼び出したら必ず一回だけ失敗し ○
2018/04/24(火) 18:57:32.71ID:Z38nK4yz
>>989 Ruby
#!ruby -nl
puts $.%10>0?$_.reverse: $_.chars.shuffle*''
2018/04/24(火) 20:20:47.08ID:tVrbZG5O
>>988
下の奴面白いな
2018/04/24(火) 20:45:31.97ID:ZY7R7Sru
次スレ
プログラミングのお題スレ Part11
https://mevius.5ch.net/test/read.cgi/tech/1524570314/
2018/04/24(火) 20:47:00.89ID:ZY7R7Sru
httpsでアクセスできるサイトはhttpからhttpsに変えちゃったけどええよな?
2018/04/24(火) 20:47:56.37ID:WimzHme9
変わって いいとも
2018/04/24(火) 20:58:59.68ID:Ukt80uX+
>>928 は素直に「各言語の特異な機能、面白機能を使って書け」で良かったような
Smalltalk のは雑学的な意味でちょっと面白かった
997デフォルトの名無しさん
垢版 |
2018/04/24(火) 21:19:31.99ID:uZzZxl43
>>989-990 Common Lisp
https://ideone.com/b0FSMR
2018/04/24(火) 22:08:49.37ID:WimzHme9
>>997
これは面白いね
2018/04/24(火) 22:09:20.74ID:WimzHme9
>>997
これは面白いね
2018/04/24(火) 22:10:08.04ID:WimzHme9
ごめん、ダブった

次スレ
プログラミングのお題スレ Part11
https://mevius.5ch.net/test/read.cgi/tech/1524570314/
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 113日 10時間 55分 4秒
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況