プログラミングのお題スレ Part11
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
垢版 |
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/

宿題は宿題スレがあるのでそちらへ。
0851デフォルトの名無しさん
垢版 |
2018/09/01(土) 10:57:14.89ID:Wx/QBEc1
>>849
数式というか文字が何を表しているのか分からない。最初の { の直前の _ は何を意味するんだ?
更に { } で括った部分と ( ) で括った部分の違いは?

まあわかったとしても解く気は起きないかも知れないので面倒なら解説しなくても良い。
0855デフォルトの名無しさん
垢版 |
2018/09/02(日) 04:36:43.72ID:4Jf6YH6e
>>852
そういう意味だとすると>>849はこうかな。

Kotlin
https://paiza.io/projects/3ObT5j3XNNkuKqDXdk6E7g

しかし、本当にこれで全てなのかは不明。
Double 型で計算できる所まで計算して結果が整数の時の n を出してるだけなので。
0858デフォルトの名無しさん
垢版 |
2018/09/02(日) 16:00:22.41ID:4Jf6YH6e
ごめん。>>855は3倍するのを忘れていた。
0860デフォルトの名無しさん
垢版 |
2018/09/02(日) 17:46:26.05ID:4Jf6YH6e
>>857
あれ?そうなの?
じゃあプログラム何か間違ってんのかなあ?
0861デフォルトの名無しさん
垢版 |
2018/09/02(日) 18:31:32.88ID:jaQJTA9z
>>860
double型の精度の問題
計算結果は指数関数が支配しているからnが大きくなると有効桁数が足りなくなる
0862デフォルトの名無しさん
垢版 |
2018/09/02(日) 18:47:50.05ID:4Jf6YH6e
>>861
なるほど。とすると32以上はもうダメな値ってことだな。
かといってBigDecimalとか使って延々と計算しても意味ないな。
数学的に答え出てるし。
0864デフォルトの名無しさん
垢版 |
2018/09/08(土) 22:16:42.52ID:vC/rF1cv
質問スレからパクってきた配列の易しい問題

質問者は他レス見るにプログラミング自体経験なさそうだが
893 デフォルトの名無しさん (アウアウカー Sa8f-aTuM [182.250.241.36])[sage] 2018/09/08(土) 21:43:04.65 ID:6/Xg/XCUa

どこで質問するべき内容なのか迷っていたのですが調べているとプログラミング関係のようなのでここで質問させていただきます

例えば
1〜50までの数字の中で数字を10個ランダムで選ぶ乱数ツールは検索するとすぐにでてきます

しかし、自分が求めているものは2つあり
@
1〜50までの数字の中で2.16.22.23.42.50を除いて10個ランダムで選ぶことができるもの
A
1.2.5.6.16.18.20.21.23.28.30.33.39.4047.49.50の選択した数字中から10個ランダムで選ぶことができるもの

@とAで挙げた数字は適当ですが場合によっては@で除外した数字やAの選択した数字は変えたいです

このような場合自分でプログラミングしないといけないのでしょうか?
0867デフォルトの名無しさん
垢版 |
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.
0868デフォルトの名無しさん
垢版 |
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個ランダムで選ぶ乱数ツール使えばいいだけなのに質問者が謎
0878デフォルトの名無しさん
垢版 |
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:" )     ─ ' ¨: : : : | \     / |: : : \
0879デフォルトの名無しさん
垢版 |
2018/09/09(日) 14:09:07.67ID:0efZNutP
くこは罠🙅‍♀
0880ニャース
垢版 |
2018/09/09(日) 14:09:35.76ID:AYD3VQs9
ここでしたか
0881デフォルトの名無しさん
垢版 |
2018/09/09(日) 14:09:50.68ID:+yUoETM4
グレイシアちゃんのふたなりチンポ
0884デフォルトの名無しさん
垢版 |
2018/09/09(日) 14:12:42.07ID:V2BhMRg2
なんjの絆舐めるな!
0886デフォルトの名無しさん
垢版 |
2018/09/09(日) 14:15:18.48ID:KoiRlOSP
なんだこのスレ😨
0887デフォルトの名無しさん
垢版 |
2018/09/09(日) 14:15:42.19ID:1Rk7pi2L
アスペの>>868が居ると聞いて
0888デフォルトの名無しさん
垢版 |
2018/09/09(日) 14:16:23.81ID:7fkrmWDW
なんj書き込んだキッズ
今度から一人で解決しようね🤗
0890デフォルトの名無しさん
垢版 |
2018/09/09(日) 14:17:33.96ID:xWgdA58m
はい��
0891デフォルトの名無しさん
垢版 |
2018/09/09(日) 14:18:16.63ID:UPePJlkV
ここになんjに助けを求めたガイジはいませんかー?🙋
負け犬は何処かな🤔
0894デフォルトの名無しさん
垢版 |
2018/09/09(日) 14:20:44.64ID:UPePJlkV
恥ずかしがらずに出てこいよ😘
ガイジくん😁
それとも顔真っ赤で出てこれないかな?🤔
0896デフォルトの名無しさん
垢版 |
2018/09/09(日) 14:26:08.47ID:UPePJlkV
>>895
キターーー😁
本物ですわ😏
0897デフォルトの名無しさん
垢版 |
2018/09/09(日) 14:26:42.15ID:7fkrmWDW
>>895
スレ立てガイジ本人いて草
0899デフォルトの名無しさん
垢版 |
2018/09/09(日) 15:07:21.91ID:xWgdA58m
>>895
大丈夫か?��
0900デフォルトの名無しさん
垢版 |
2018/09/09(日) 15:57:06.11ID:yaYW83OX
意味わからないんだがw
ハンJでしょうもないプログラミングの質問した人がいたってことか?
0906デフォルトの名無しさん
垢版 |
2018/09/09(日) 17:12:29.21ID:3HCWUffr
>>900でなんjをハンjと打ち間違える時点で通報騒動知ってるやつやん
>>872で自分に都合の悪いレスつくと本人認定するような奴だしなんでもかんでも人のせいにしてきたんだろうな
0907デフォルトの名無しさん
垢版 |
2018/09/09(日) 17:20:33.91ID:yaYW83OX
あ、これ俺に成りすまして他板でクソスレ立てて人をこっちに呼び込んでんのね
今理解したわ
このスレの住人なら>>870-871程度のことで他の板にスレ立てるわけないってわかってもらえると思うけど
荒れると嫌なんでしばらくROMりますわ
0909デフォルトの名無しさん
垢版 |
2018/09/09(日) 17:44:29.85ID:C8FWMbW9
単発ばっかだし質問を小馬鹿にされた質問者が自演で荒らしてんだろ
いちいち反応すんなkz
0911デフォルトの名無しさん
垢版 |
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
0912デフォルトの名無しさん
垢版 |
2018/09/11(火) 15:17:49.53ID:RXZvWAlK
>>911
同値類とは?
0913デフォルトの名無しさん
垢版 |
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}} のことを言うよ

問題を解く上で数学的な要素は無いから数学の言葉を使わないで出題すべきだった
0914デフォルトの名無しさん
垢版 |
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' "
0915デフォルトの名無しさん
垢版 |
2018/09/11(火) 18:58:42.97ID:RXZvWAlK
>>913
それは良いとしても>>911の問題における同値類とはなんなのか?

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

もしこれが単語の意味、およびそれの分類(動物なら四つ足だとか哺乳類だとか)によって分けなければならないとすると、単語の意味やその分類がプログラムの側でわかっていなければならない。
しかも入力にはどんな単語が来るかわからないというのであれば辞書並みの単語数に関してそれを保持していなければまともに分類できない。
0916デフォルトの名無しさん
垢版 |
2018/09/11(火) 19:06:31.95ID:RXZvWAlK
>>914
え?それでいいの?ペアになってるなつが同じ種類ってこと?
0918デフォルトの名無しさん
垢版 |
2018/09/11(火) 21:04:39.05ID:RXZvWAlK
なるほど。また最初の問題が不備で無限の回答が出るか一つも回答が出ないパターンだったと。
0920デフォルトの名無しさん
垢版 |
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' "
0921デフォルトの名無しさん
垢版 |
2018/09/11(火) 22:32:02.08ID:srQbLx59
>>917
「それぞれの元を辞書順にソートした上で」
これは間違いってことね。
0922デフォルトの名無しさん
垢版 |
2018/09/11(火) 22:42:05.94ID:6IJHkLyh
cat dog horse rhinoとかってアルファベット順に出力するよう要請してるのだから少なくともそのフレーズに間違いはないよ
0923デフォルトの名無しさん
垢版 |
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
0929デフォルトの名無しさん
垢版 |
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;
0931デフォルトの名無しさん
垢版 |
2018/09/13(木) 12:31:55.31ID:cU5S5NHG
>>927
両方が既に入ってるなら何もする必要ないと思うのだが。
0933デフォルトの名無しさん
垢版 |
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;
0934デフォルトの名無しさん
垢版 |
2018/09/13(木) 20:39:52.56ID:0RheZyur
>>932
あー。なるほど。そういうことか。
また考えよう。
0935デフォルトの名無しさん
垢版 |
2018/09/14(金) 03:38:24.35ID:SYmkUqRw
>>927
>>926は修正した。(URL同じ)
0936デフォルトの名無しさん
垢版 |
2018/09/14(金) 04:53:58.08ID:Z6RVr7Qr
>>935
差し支えなければ修正前のコードも別URLで再掲載してもらえますか?
あるいは公開バージョンの履歴や差分を参照する機能がpaoza.ioにあったら教えてください

くしくもマージを考慮「しない版」と「する版」が出揃ったのでどういう修正で対処したか調べると
それぞれの言語の(あるいはアルゴリズムの)特徴が際立って面白いのではないかなぁとふと思ったので
0937デフォルトの名無しさん
垢版 |
2018/09/14(金) 08:32:54.25ID:SYmkUqRw
>>936
すまん。前の版はもうない。paiza.ioはそういう機能はない。
思い出して時間があったらなんとかする。
0942デフォルトの名無しさん
垢版 |
2018/09/14(金) 20:39:39.94ID:cNoNQyuv
>>940
おお。ナイス。
レス数が950を超えています。1000を超えると書き込みができなくなります。

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