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

レス数が950を超えています。1000を超えると書き込みができなくなります。
2018/04/24(火) 20:45:14.49ID:ZY7R7Sru
プログラミングのお題スレです。

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

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

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

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

宿題は宿題スレがあるのでそちらへ。
2018/09/08(土) 22:41:19.06ID:CrgXDO1K
>>865
誤爆
2018/09/08(土) 22:56:28.52ID:DvgxKi+t
>>864 Squeak/Pharo Smalltalk

"@"
((1 to: 50) copyWithoutAll: #(2 16 22 23 42.50)) shuffle first: 10.

"A"
#(1 2 5 6 16 18 20 21 23 28 30 33 39 40 47 49 50) shuffle first: 10.
2018/09/09(日) 10:46:50.62ID:yaYW83OX
>>864 Ruby
([*1..50] - [2, 16, 22, 23, 42, 50]).sample(10)
[1, 2, 5, 6, 16, 18, 20, 21, 23, 28, 30, 33, 39, 40, 47, 49, 50].sample(10)

というか1~44までの数字の中で数字を10個ランダムで選ぶ乱数ツール使えばいいだけなのに質問者が謎
2018/09/09(日) 10:51:12.28ID:XJaXrhZ0
ロト6を当てたい一般人だろ
そんくらいは察してやれよ
2018/09/09(日) 11:22:22.79ID:VWkPHcyt
>>868>>869
自演
2018/09/09(日) 11:49:05.41ID:na1duSUN
>>868
アスペ
2018/09/09(日) 12:05:30.79ID:yaYW83OX
お、質問者様の登場か?w
2018/09/09(日) 13:55:51.77ID:na1duSUN
>>872
糖質かよ
2018/09/09(日) 14:04:26.80ID:iiqq7TK9
発達障害イライラでワロタ
2018/09/09(日) 14:05:05.91ID:juRJVYHI
くこけ?😗
2018/09/09(日) 14:06:54.57ID:MtkyzY0F
とうふさんはすこか??😍
2018/09/09(日) 14:08:03.90ID:uzOuEcd3
自演死ね
878デフォルトの名無しさん
垢版 |
2018/09/09(日) 14:08:44.70ID:x2owZh/r
                イ             '、
                /       ハ        ',
                i   ハ   ノ |  i、     | 
   r‐-、   ,...,,      |   リ从-ノ ノリノノ-)リ、  l 
   :i!  i!  |: : i!|     |  リ ‐=・-;  -・=‐ Y  l     イェ〜イ〜プログラミング好きなオタクみってるう?なんJ民デース!
    !  i!.  |  ;|  .    .i从 | ` ̄,:     ̄´ |从!   
     i! ヽ |  |      i リ,i   ゚人,,__,,人:.   | リ}  
    ゝ  `-!  :|! .     ハ: i.  , __ij..__ 、:  'iノ´ 
   r'"~`ヾ、   i!      彡、  `Zエlフ'´ /ミ 
  ,.ゝ、  r'""`ヽ、i!      彡イ\ ` ̄´ / ト ミ
  !、  `ヽ、ー、   ヽ    _/ ∧ > ―<  ∧ \
   | \ i:" )     ─ ' ¨: : : : | \     / |: : : \
879デフォルトの名無しさん
垢版 |
2018/09/09(日) 14:09:07.67ID:0efZNutP
くこは罠🙅‍♀
880ニャース
垢版 |
2018/09/09(日) 14:09:35.76ID:AYD3VQs9
ここでしたか
881デフォルトの名無しさん
垢版 |
2018/09/09(日) 14:09:50.68ID:+yUoETM4
グレイシアちゃんのふたなりチンポ
882デフォルトの名無しさん
垢版 |
2018/09/09(日) 14:10:48.73ID:m5NrVMRk
【怒報】ワイ 専門板にて1人からアスペやら糖質認定を受ける【援護求む】
http://swallow.5ch.net/test/read.cgi/livejupiter/1536469396/
2018/09/09(日) 14:11:31.78ID:lnlyvEPx
なんJから来たンゴwwwwwwww
884デフォルトの名無しさん
垢版 |
2018/09/09(日) 14:12:42.07ID:V2BhMRg2
なんjの絆舐めるな!
2018/09/09(日) 14:14:26.66ID:JLLEIooV
試合中やぞ
886デフォルトの名無しさん
垢版 |
2018/09/09(日) 14:15:18.48ID:KoiRlOSP
なんだこのスレ😨
887デフォルトの名無しさん
垢版 |
2018/09/09(日) 14:15:42.19ID:1Rk7pi2L
アスペの>>868が居ると聞いて
888デフォルトの名無しさん
垢版 |
2018/09/09(日) 14:16:23.81ID:7fkrmWDW
なんj書き込んだキッズ
今度から一人で解決しようね🤗
2018/09/09(日) 14:16:27.10ID:KW6FAnPg
>>871
>>873
実はこいつがなんJでスレ建てたんやで
>>868
は被害者や
890デフォルトの名無しさん
垢版 |
2018/09/09(日) 14:17:33.96ID:xWgdA58m
はい��
891デフォルトの名無しさん
垢版 |
2018/09/09(日) 14:18:16.63ID:UPePJlkV
ここになんjに助けを求めたガイジはいませんかー?🙋
負け犬は何処かな🤔
2018/09/09(日) 14:18:35.22ID:mhobrALw
くこけ?
2018/09/09(日) 14:19:05.04ID:SFaJ2QTJ
なんJにスレ立ててまでするチンパンジーが見れると聞いて来ました
894デフォルトの名無しさん
垢版 |
2018/09/09(日) 14:20:44.64ID:UPePJlkV
恥ずかしがらずに出てこいよ😘
ガイジくん😁
それとも顔真っ赤で出てこれないかな?🤔
2018/09/09(日) 14:24:20.57ID:iiqq7TK9
>>894
負け犬はお前定期
896デフォルトの名無しさん
垢版 |
2018/09/09(日) 14:26:08.47ID:UPePJlkV
>>895
キターーー😁
本物ですわ😏
897デフォルトの名無しさん
垢版 |
2018/09/09(日) 14:26:42.15ID:7fkrmWDW
>>895
スレ立てガイジ本人いて草
2018/09/09(日) 15:05:27.62ID:iMK3cxKN
図星か
899デフォルトの名無しさん
垢版 |
2018/09/09(日) 15:07:21.91ID:xWgdA58m
>>895
大丈夫か?��
2018/09/09(日) 15:57:06.11ID:yaYW83OX
意味わからないんだがw
ハンJでしょうもないプログラミングの質問した人がいたってことか?
2018/09/09(日) 15:58:03.09ID:yaYW83OX
ハンJじゃないなんJ
2018/09/09(日) 16:03:08.91ID:SFaJ2QTJ
また日本語怪しいじゃん君なんJでもまともに喋れなかったよね?
2018/09/09(日) 16:07:58.48ID:yaYW83OX
>>871が建てたのはこれかw
http://tomcat.2ch.s c/test/read.cgi/livejupiter/1536469396/
2018/09/09(日) 16:20:59.20ID:yaYW83OX
で元のレスがこれか
https://mevius.5ch.net/test/read.cgi/tech/1526606537/893
2018/09/09(日) 17:03:05.57ID:na1duSUN
>>903
立ててないぞ
人になすりつけるな
2018/09/09(日) 17:12:29.21ID:3HCWUffr
>>900でなんjをハンjと打ち間違える時点で通報騒動知ってるやつやん
>>872で自分に都合の悪いレスつくと本人認定するような奴だしなんでもかんでも人のせいにしてきたんだろうな
2018/09/09(日) 17:20:33.91ID:yaYW83OX
あ、これ俺に成りすまして他板でクソスレ立てて人をこっちに呼び込んでんのね
今理解したわ
このスレの住人なら>>870-871程度のことで他の板にスレ立てるわけないってわかってもらえると思うけど
荒れると嫌なんでしばらくROMりますわ
2018/09/09(日) 17:27:07.85ID:3HCWUffr
>>907
今理解したわとか嘘だろ
>>903>>871が建てたと認定してる時点でお前はとっくにわかってただろ
2018/09/09(日) 17:44:29.85ID:C8FWMbW9
単発ばっかだし質問を小馬鹿にされた質問者が自演で荒らしてんだろ
いちいち反応すんなkz
2018/09/10(月) 21:43:55.78ID:YbX1NAV1
>>909
kzとかいつの時代やねん
お前はミスターアンモナイトかwwwww
2018/09/11(火) 11:59:19.26ID:bqaIVrpu
a-zからなる単語のペアが与えられるのでそれぞれの元を辞書順にソートした上で同値類を求めなさい
なお同一のペアが2度以上入力されることはなく、また出力時の各行は順不同とする


-*- input -*-
goose pigeon
cat dog
eel goldfish
goose duck
horse dog
cod eel
dove pigeon
dog rhino
goldfish squid
goose lark

-*- output -*-
dove duck goose lark pigeon
cat dog horse rhino
cod eel goldfish squid
912デフォルトの名無しさん
垢版 |
2018/09/11(火) 15:17:49.53ID:RXZvWAlK
>>911
同値類とは?
2018/09/11(火) 17:41:21.76ID:bqaIVrpu
>>912
入力のペア"A B"は A = B を表しているものとして等しいもの同士をグループにまとめて出力してねという問題
正確には「同値類に分割せよ」か「商集合を出力せよ」と言うべきだったか

例えば S = {A, B, C, D, E, F, G} に対して
A = B, C = A, D = F, E = G ……(☆) が成り立っているとすると
S の全ての要素は A = B = C と D = F と E = G っていう同じもの同士に分類できるよね
で (☆) の下で A の S における同値類とは {A, B, C} のことであり、
(☆) の下での S の商集合とは {{A, B, C}, {D, F}, {E, G}} のことを言うよ

問題を解く上で数学的な要素は無いから数学の言葉を使わないで出題すべきだった
2018/09/11(火) 18:43:20.13ID:UwY6cfla
>>911 Squeak Smalltalk

| input groups |
input := 'goose pigeon
cat dog
eel goldfish
goose duck
horse dog
cod eel
dove pigeon
dog rhino
goldfish squid
goose lark'.

groups := OrderedCollection new.
input linesDo: [:line |
 | pair |
 pair := line subStrings.
 (groups detect: [:group | group includesAnyOf: pair] ifNone: [groups add: Set new])
  addAll: pair
].
(groups collect: [:each | each asSortedCollection joinSeparatedBy: ' ']) asStringWithCr

"=> 'dove duck goose lark pigeon
cat dog horse rhino
cod eel goldfish squid' "
915デフォルトの名無しさん
垢版 |
2018/09/11(火) 18:58:42.97ID:RXZvWAlK
>>913
それは良いとしても>>911の問題における同値類とはなんなのか?

例として出されているのは入力が動物の名前のようで、出力は重複をなくした上で大まかな種類ごとに分類されているようではある。
しかしこのそれぞれの分類は一体いかなる基準によって同じと判別したのか?

もしこれが単語の意味、およびそれの分類(動物なら四つ足だとか哺乳類だとか)によって分けなければならないとすると、単語の意味やその分類がプログラムの側でわかっていなければならない。
しかも入力にはどんな単語が来るかわからないというのであれば辞書並みの単語数に関してそれを保持していなければまともに分類できない。
916デフォルトの名無しさん
垢版 |
2018/09/11(火) 19:06:31.95ID:RXZvWAlK
>>914
え?それでいいの?ペアになってるなつが同じ種類ってこと?
2018/09/11(火) 19:55:35.45ID:zuM/oofP
>>915-916
>入力のペア"A B"は A = B を表している
918デフォルトの名無しさん
垢版 |
2018/09/11(火) 21:04:39.05ID:RXZvWAlK
なるほど。また最初の問題が不備で無限の回答が出るか一つも回答が出ないパターンだったと。
2018/09/11(火) 21:40:27.09ID:zuM/oofP
見た感じ問題に不備はない
まだ何か勘違いしてるのでは
2018/09/11(火) 22:23:42.34ID:O7hfz4dz
>>911 Squeak Smalltalk (>>914 は入力順等によっては機能しないので差し替え)

| fn input |
fn := [:str |
 | groups |
 groups := OrderedCollection new.
 str linesDo: [:line |
  | pair found |
  pair := line subStrings asSet.
  found := (groups select: [:group | group includesAnyOf: pair])
   ifEmpty: [{groups add: Set new}].
  groups removeAll: found; add: (found inject: pair into: #,)
 ].
 (groups collect: [:group | group asSortedCollection joinSeparatedBy: ' ']) asStringWithCr
].
input := 'goose pigeon
以下略'.

fn value: input.

"=> 'cat dog horse rhino
cod eel goldfish squid
dove duck goose lark pigeon' "

fn value: input, String cr, 'squid lark'.

"=> 'cat dog horse rhino
cod dove duck eel goldfish goose lark pigeon squid' "
921デフォルトの名無しさん
垢版 |
2018/09/11(火) 22:32:02.08ID:srQbLx59
>>917
「それぞれの元を辞書順にソートした上で」
これは間違いってことね。
2018/09/11(火) 22:42:05.94ID:6IJHkLyh
cat dog horse rhinoとかってアルファベット順に出力するよう要請してるのだから少なくともそのフレーズに間違いはないよ
2018/09/12(水) 08:18:25.07ID:FM7FP8m6
>>911 「cat cat」とか重複するペアとか任意のペアが来てもオッケーなバージョン

def qs(er)
h = Hash.new Float::INFINITY
erc = 0
er.each do |r|
min = r.map{|e| h[e]}.min
ern = min == Float::INFINITY ? erc += 1 : min
r.each{|e| h[e] = ern}
end
h.group_by(&:last).values.map{|s| s.map(&:first).sort}
end

er = $<.readlines.map &:split
puts qs(er).map{|a| a * ' '} * $/
#=>
dove duck goose lark pigeon
cat dog horse rhino
cod eel goldfish squid
2018/09/12(水) 10:35:33.91ID:0dikQX95
>>923
その実装だと仮に squid lark のペアが末尾に追加されたとき
すでにある goldfish squid がキャンセルされちゃうけど?

https://ideone.com/sbA9P5
2018/09/12(水) 11:17:32.60ID:FM7FP8m6
>>924
指摘ありがと 確かにまずかった

https://ideone.com/gbKlMH
926デフォルトの名無しさん
垢版 |
2018/09/13(木) 02:06:53.72ID:Pm51LGwI
>>911
Kotlin
https://paiza.io/projects/QoBZQmhMgIbx2IHLgWC07A
2018/09/13(木) 08:17:03.84ID:EC7Fu/Zv
>>926
よーわからんがペアの両方が既知の場合のマージ処理が抜けてない?
A B
C D
A C
の場合とか
2018/09/13(木) 10:08:33.08ID:HHLUVU7a
>>911の例をマージが必要になる順とかにしといてくれてれば…
2018/09/13(木) 10:14:48.87ID:q0HzNtar
>>911 perl
%h;
while(<>){
chomp;
($f, $s) = split/ /;#first, second

undef $keyf;
undef $keys;

for $k (keys %h){
$keyf = $k if grep /$f/, @{$h{$k}};
$keys = $k if grep /$s/, @{$h{$k}};
}

if(!defined $keyf and !defined $keys){
push @{$h{$.}}, $f;
push @{$h{$.}}, $s;
}else{
push @{$h{$keys}}, $f unless defined $keyf;
push @{$h{$keyf}}, $s unless defined $keys;
}
}

map{print join " ", (sort{$a cmp $b}@{$h{$_}}), "\n"}keys %h;
2018/09/13(木) 11:37:05.45ID:HHLUVU7a
>>929
これもマージ処理>>927が抜けてない?

https://ideone.com/NAvn2f
931デフォルトの名無しさん
垢版 |
2018/09/13(木) 12:31:55.31ID:cU5S5NHG
>>927
両方が既に入ってるなら何もする必要ないと思うのだが。
2018/09/13(木) 13:14:56.32ID:EC7Fu/Zv
>>931
https://paiza.io/projects/YTmp_QaHw0hpHqxX4cBGKw
入力
A B
C D
A C

出力
A B C
C D

期待される出力
A B C D

じゃろ?
2018/09/13(木) 14:17:54.21ID:q0HzNtar
>>911 >>932
%h;
while(<>){
chomp;
($f, $s) = split / /;#first, second

undef $keyf;
undef $keys;

for $k (keys %h){
$keyf = $k if grep /$f/, @{$h{$k}};
$keys = $k if grep /$s/, @{$h{$k}};
}

if(!defined $keyf and !defined $keys){
push @{$h{$.}}, $f;
push @{$h{$.}}, $s;
}elsif( (defined $keyf and defined $keys) and !($f eq $s) ){#merge
push @{$h{$keys}}, @{$h{$keyf}};
delete $h{$keyf};
}else{
push @{$h{$keys}}, $f unless defined $keyf;
push @{$h{$keyf}}, $s unless defined $keys;
}
}

map{print join " ", (sort{$a cmp $b} @{$h{$_}}), "\n"} sort{$a <=> $b} keys %h;
934デフォルトの名無しさん
垢版 |
2018/09/13(木) 20:39:52.56ID:0RheZyur
>>932
あー。なるほど。そういうことか。
また考えよう。
935デフォルトの名無しさん
垢版 |
2018/09/14(金) 03:38:24.35ID:SYmkUqRw
>>927
>>926は修正した。(URL同じ)
2018/09/14(金) 04:53:58.08ID:Z6RVr7Qr
>>935
差し支えなければ修正前のコードも別URLで再掲載してもらえますか?
あるいは公開バージョンの履歴や差分を参照する機能がpaoza.ioにあったら教えてください

くしくもマージを考慮「しない版」と「する版」が出揃ったのでどういう修正で対処したか調べると
それぞれの言語の(あるいはアルゴリズムの)特徴が際立って面白いのではないかなぁとふと思ったので
937デフォルトの名無しさん
垢版 |
2018/09/14(金) 08:32:54.25ID:SYmkUqRw
>>936
すまん。前の版はもうない。paiza.ioはそういう機能はない。
思い出して時間があったらなんとかする。
2018/09/14(金) 09:31:32.78ID:PJYnZf+K
>>937
あーいやそこまでしなくても結構です。ありがとうございます!
2018/09/14(金) 12:57:38.55ID:q6Zv3uN7
わざわざ書こうとしてくれるなんて良いやつだな
2018/09/14(金) 18:45:13.33ID:9KWktx64
>>936
>>932>>926の古いコードのコピペ
2018/09/14(金) 20:03:21.13ID:Z6RVr7Qr
>>940
おおありがとう!
942デフォルトの名無しさん
垢版 |
2018/09/14(金) 20:39:39.94ID:cNoNQyuv
>>940
おお。ナイス。
2018/09/14(金) 20:50:46.38ID:SK0cQL9c
結構みんな人の書いたコード読んでるんだな
いい意味でびっくり
2018/09/14(金) 23:34:38.18ID:vS2kVSOd
逆になんで読まないの?
945デフォルトの名無しさん
垢版 |
2018/09/15(土) 00:06:11.66ID:/ZWEPMk/
>>911
Rubyで。
https://ideone.com/MEO7XO
946デフォルトの名無しさん
垢版 |
2018/09/15(土) 08:52:18.54ID:/ZWEPMk/
>>945
訂正。Rubyで。
https://ideone.com/er8XUC
947デフォルトの名無しさん
垢版 |
2018/09/15(土) 18:55:39.79ID:Q0ygbCVz
>>946 とは別の戦略。
Rubyで。
https://ideone.com/osABKT
2018/09/15(土) 19:09:51.94ID:1YQGrLsT
>>947
ソート忘れてんよ
2018/09/16(日) 00:15:22.99ID:+Pq0rgCm
>>948
付けといて。
950デフォルトの名無しさん
垢版 |
2018/09/16(日) 08:13:10.07ID:qJ8HI8bW
>>911
Rubyで。ソート、コメント付き。
https://ideone.com/9RyjEF
951デフォルトの名無しさん
垢版 |
2018/09/18(火) 20:26:30.74ID:iTEamDZZ
https://www.rco.recruit.co.jp/career/engineer/entry/

この問題どうですか?

自分でも書いてみたのですが合ってるかちょっと分かりません
C# https://ideone.com/KNpwLL
2018/09/18(火) 20:38:45.88ID:qJ7HW+J2
こういうのって答え公開してもいいんか?
2018/09/18(火) 20:48:39.65ID:sp2kbyYS
企業がやってるのって大体駄目だったと思うで
2018/09/18(火) 20:49:39.59ID:Iw2LHuqq
>>952
あくまでも過去の出題例、だからいいんじゃないですか?
2018/09/19(水) 00:29:21.73ID:gYIP5Vsu
アウトかセーフか分からないときは答え公開しないほうが無難
2018/09/19(水) 01:18:48.14ID:pHq1DkBS
>>955
アウトになる条件は、「エントリー後メールにて送付されるコーディング試験問題は、当社への応募以外の目的で無断使用しない」…@
だが、>>951 のリンクの問題は「エントリー後メールにて送付されるコーディング試験問題」ではないから@に反しない…A
さらに、無条件に誰でも見ることのできる問題であること…B
Aよりアウトではないと断定できるし、BがAの結論を補強する
結論として、>>951 のリンクの問題を公開しても問題ない

>>955 「アウトかセーフかわからない」という結論にどういう道筋で到達したの?
2018/09/19(水) 19:43:34.67ID:KaiQ4rsk
お題:コンプリートパネル(出展:高校生クイズ2018)

5×5のパネルが与えられる。各パネルは赤色か白色である。
各パネルに侵入すると、そのパネルの色が赤なら白、白なら赤に変化する。
最初のステップは、場外(左下のパネルの左隣)から左下のパネルへ侵入することである。
以降のステップでは、上下左右に移動することができる。
ただし、ひとつ前のパネルや場外に移動することはできない。

すべてのパネルを白色にするための移動経路を構成せよ。

WWWRR
WWWWR
WWWWR
WWWRR
RRRRW
=> 10 RRRRURUUUL (→→→→↑→↑↑↑←)

WWWWW
WWWWW
WWWWW
WWWWW
WWWWW
=> 0 (移動の必要なし)

WWWWW
WWWWW
WWWWW
WRWWW
WWWWW
=> 21 RRRRULULLDDRULURRDRDL (必ずしも最短経路である必要はない)
2018/09/19(水) 19:51:24.03ID:WMjcSrAA
>ひとつ前のパネルや場外に移動することはできない

全部踏めばいいんだからライツアウトの解法の亜種で解けるんじゃねえの
2018/09/19(水) 19:59:02.78ID:ZUIw2oHI
状態を変えずに任意の場所まで移動できるなら
6箇所だけそれぞれ1つだけRだった場合を計算してあとは回転なりなんなりして重ね合わせればいけるな
2018/09/19(水) 20:34:03.00ID:WMjcSrAA

□□□
□□□→

2*3の全パターンで、この二つの方向のどちらかに抜ける経路が存在すればいい
あとは合成で何とかなる
961デフォルトの名無しさん
垢版 |
2018/09/19(水) 21:11:11.50ID:zcXFtBV7
うーん。これはブルートフォースでやろうとするとかなり無駄が多くなって時間とメモリを山盛りに食いそうな予感。
2018/09/19(水) 23:00:29.71ID:gYIP5Vsu
5x5=25マスの赤or白の2値だから25bit、現在位置25通り(5bit)に前回位置相対で4通り(2bit)、あわせて32bitパターン?
2018/09/19(水) 23:25:52.07ID:WMjcSrAA
5x5は序の口で、100x100くらいが本命でしょう
ついでに最短の最適解も

問題も作るだけならラクだから1000x1000だって0.1秒程度で作れる
もちろん解くのは面倒
2018/09/20(木) 01:27:25.92ID:B4lxWLis
>>957
手でしか試してないけど
解けないパターンとかありそうな予感
https://i.imgur.com/u8zgEum.png
965デフォルトの名無しさん
垢版 |
2018/09/20(木) 09:43:56.68ID:cMPVhU9i
プログラム考える以前に解くためのいいアルゴリズムが思い浮かばん
レス数が950を超えています。1000を超えると書き込みができなくなります。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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