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

■ このスレッドは過去ログ倉庫に格納されています
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/05/19(土) 01:54:04.51ID:YJKUc9vG
ノーヒント、全て自力で求めようと思ってたんだけど
だから競争って

まあいいや
使えそうなら使わせていただきます
484デフォルトの名無しさん
垢版 |
2018/05/19(土) 03:42:04.50ID:/t1Y5z0r
ピタゴラス素数は2乗和であらわせて。
(a^2 + b^2) (x^2 + y^2) = (ax + by)^2 + (bx - ay)^2 が常に成立するので、

ピタゴラス素数と 2 = 1^2 + 1^2 の積で、新たな2乗和の式が作り出せる。
この式から、解とその個数も求まるはず。

しかし、これがわかっても最小値を求めるのは簡単ではないとおもう。かなりの計算量がいるはず。
485デフォルトの名無しさん
垢版 |
2018/05/19(土) 03:53:23.91ID:/t1Y5z0r
z = x + yiという複素数でいうと、このノルムは|
486デフォルトの名無しさん
垢版 |
2018/05/19(土) 03:56:11.86ID:/t1Y5z0r
z = x + yiという複素数でいうと、ノルムは|z|^2 = x^2 + y^2 であって
|z||w| = |zw|を満たすので、
>>484の式は、新たな複素数 zwを作り出すことと一緒。
487デフォルトの名無しさん
垢版 |
2018/05/19(土) 07:41:40.76ID:b7x1I7X/
お題

ケブンリッジジェネレータ

知らない人のために解説すると、人間の認識力の問題で単語の最初と最後が正しいと途中の文字順序が違っていても正しい単語と見間違えるというのがある。
例えば「よこうそ」は「ようこそ」と見間違える。「およはう」は「おはよう」と見間違える。(これは違うと分かっていても見えてしまうという、空耳アワーの歌みたいでもある)。

以前2chでこのことについてケブンリッジで発見されたというような内容の文章がコピペされて広まり一時期有名になりそれ用の変換をするケブンリッジジェネレータのページ(JavaScriptで作られてたと思う)が作られたりもしていた。
今はもうないようだが今回のお題はこれである。つまり、入力された単語の最初と最後はそのままで途中の文字順序をランダムに入れ替えた結果を出力する。
日本語の文章は普通は単語と単語の間にスペースがないが、これについては処理を簡単にするためにスペースありで入力された文章しか正常に処理しないということにして良い。
2018/05/19(土) 08:22:43.57ID:VUe7Kazw
>>487 Ruby
str = <<~EOT
Alice was beginning to get very tired of sitting by her sister on the bank,
and of having nothing to do: once or twice she had peeped into the book
her sister was reading, but it had no pictures or conversations in it,
'and what is the use of a book,' thought Alice 'without pictures or
conversations?'
EOT

puts str.gsub(/(?<=\b\w)\w*(?=\w\b)/){|m| m.chars.shuffle.join}
#=>
Aclie was bngneniig to get very terid of sntitig by her seistr on the bnak,
and of hnvaig nnthoig to do: ocne or twcie she had ppeeed into the book
her sitser was rniadeg, but it had no piteucrs or cinsoentravos in it,
'and waht is the use of a book,' tohught Aclie 'wtihuot pricetus or
coenrovanstis?'
2018/05/20(日) 12:39:54.67ID:fjnXxBFP
>>477
これってその条件内なら普通に最適解(圧縮度)出せる方法とか存在する?
2018/05/20(日) 12:52:52.72ID:+POqszb4
全通りやれば良い
2018/05/21(月) 12:42:55.71ID:DBB0b89i
>>487 Squeak/Pharo Smalltalk

| input nonLetters |

input := 'Alice was beginning to get very tired of sitting by her sister on the bank,
and of having nothing to do: once or twice she had peeped into the book
her sister was reading, but it had no pictures or conversations in it,
''and what is the use of a book,'' thought Alice ''without pictures or
conversations?'''.

nonLetters := input reject: #isLetter.
(input findTokens: nonLetters keep: nonLetters) inject: '' into: [:acc :token |
(token first isLetter and: [token size > 1])
ifTrue: [acc, (token first: 1), token allButFirst allButLast shuffled, (token last: 1)]
ifFalse: [acc, token]
]

"=> Ailce was beingnnig to get vrey tierd of sttinig by her seitsr on the bank,
and of hvanig nohintg to do: once or twice she had peeepd into the book
her seitsr was riaendg, but it had no piercuts or coitnevnarsos in it,
'and what is the use of a book,' thuoght Alice 'wtiohut ptriecus or
ctnaseinroovs?' "
2018/05/21(月) 18:51:56.06ID:VDVE1q4f
みんな日本語スルーしててワロタw
2018/05/21(月) 20:02:50.47ID:I0TPptnw
>>482
やってみたけど、
馬鹿正直に検索するのと大して変わらんね
半径1000以下を全て検索するのは厳しそう

円周を検索するする昔ながらのアルゴリズムは優秀だ
494デフォルトの名無しさん
垢版 |
2018/05/21(月) 21:16:17.93ID:FH7zIseK
円周を検索するする昔ながらのアルゴリズムとは?
2018/05/21(月) 21:24:09.15ID:dve0ZlFL
>>487 Squeak/Pharo Smalltalk 日本語文章処理例

| input nonLetters |

input := '以前2ch で このこと に ついて ケブンリッジ で はっけん された と いうような ないよう の ぶんしょう が コピペ されて ひろまり
いちじき ゆうめい になり それよう の へんかん を する ケブンリッジ ジェネレータ の ページ(Java Script で つくられ てたと 思う)が つくられ たりも していた。
今 は もうない ようだが こんかい の お題 は これ である。つまり、にゅうりょく された 単語 の さいしょ と 最後 は そのまま で とちゅう の もじじゅんじょ を ランダム に いれかえ た 結果 を しゅつりょく する。
にほんご の ぶんしょう は 普通 は 単語 と 単語 の 間 に スペース が ないが、これ に ついては 処理 を かんたん に するため に スペース あり で にゅうりょく された ぶんしょう しか せいじょう に 処理 しない ということ に してよい。'.

nonLetters := input reject: #isLetter.
(input findTokens: nonLetters keep: nonLetters) inject: '' into: [:acc :token |
(token first isLetter and: [token size > 1])
ifTrue: [acc, (token first: 1), token allButFirst allButLast shuffled, (token last: 1)]
ifFalse: [acc, token]
]

"=> 以前2ch で このこと に ついて ケブリンッジ で はっけん された と いうような なよいう の ぶんょしう が コピペ されて ひろまり
いちじき ゆうめい になり そよれう の へかんん を する ケンブッリジ ジレェーネタ の ページ(Jvaa Spcirt で つくられ てたと 思う)が つくられ たりも しいてた。
今 は もうない ようだが こんかい の お題 は これ である。つまり、にりゅうょく された 単語 の さしいょ と 最後 は そのまま で とちゅう の もゅんじじじょ を ラダンム に いかれえ た 結果 を しょゅつりく する。
にほんご の ぶんしょう は 普通 は 単語 と 単語 の 間 に スペース が ないが、これ に ついては 処理 を かんたん に すたるめ に スーペス あり で にゅうりょく された ぶしんょう しか せょじいう に 処理 しない といこうと に してよい。"
496デフォルトの名無しさん
垢版 |
2018/05/21(月) 21:36:05.44
>>495
ランダムに入れ替えるのはいいけど、元の単語と同じ並びは排除しないと期待外れの出力になるね
2018/05/21(月) 22:08:38.80ID:GTjH0Q6M
完全にランダムなんだから、結果が同じ並びでもそのまま出力するのが筋だろ
変更するなら日本語の文章の方だ
2018/05/21(月) 22:24:50.52ID:dve0ZlFL
>>487 Squeak/Pharo Smalltalk 同じ並びは排除

| input nonLetters |

input := '以前2ch で このこと に ついて ケブンリッジ で はっけん された と いうような ないよう の ぶんしょう が コピペ されて ひろまり
いちじき ゆうめい になり それよう の へんかん を する ケブンリッジ ジェネレータ の ページ(Java Script で つくられ てたと 思う)が つくられ たりも していた。
今 は もうない ようだが こんかい の お題 は これ である。つまり、にゅうりょく された 単語 の さいしょ と 最後 は そのまま で とちゅう の もじじゅんじょ を ランダム に いれかえ た 結果 を しゅつりょく する。
にほんご の ぶんしょう は 普通 は 単語 と 単語 の 間 に スペース が ないが、これ に ついては 処理 を かんたん に するため に スペース あり で にゅうりょく された ぶんしょう'.

nonLetters := input reject: #isLetter.
(input findTokens: nonLetters keep: nonLetters)
inject: ''
into: [:acc :token |
| middle |
(token first isLetter and: [token size > 3
and: [(middle := token copyFrom: 2 to: token size - 1) asSet size > 1]])
ifTrue: [
| shuffled |
[(shuffled := middle shuffled) = middle] whileTrue.
acc, (token first: 1), shuffled, (token last: 1)]
ifFalse: [acc, token]]

"=> 以前2ch で ここのと に ついて ケンブッリジ で はけっん された と いううよな なよいう の ぶしょんう が コピペ されて ひまろり
いじちき ゆめうい になり そよれう の へかんん を する ケリンッブジ ジネレェータ の ページ(Jvaa Srcpit で つらくれ てたと 思う)が つらくれ たりも しいてた。
今 は もなうい よだうが こかんい の お題 は これ である。つまり、にりょうゅく された 単語 の さしいょ と 最後 は そまのま で とゅちう の もじじんゅじょ を ラダンム に いかれえ た 結果 を しょつゅりく する。
にんほご の ぶしんょう は 普通 は 単語 と 単語 の 間 に スーペス が ないが、これ に つていは 処理 を かたんん に すたるめ に スーペス あり で にうりょゅく された ぶょんしう"
2018/05/21(月) 22:46:17.95ID:ivTUanMr
単語の最初と最後が正しいと途中の文字順序が違っていても正しい単語と見間違える
というのは無いこともないが、やっぱりおかしな単語はおかしく見えるな
2018/05/22(火) 02:04:34.13ID:IBCwJBRn
>>487
Kotlin
https://paiza.io/projects/vW2LiM_sGEYAb_l7QfaA_g

paiza.io の Kotlin はちょっとバージョンが古いようで shuffle() がなかったので自作した。
501デフォルトの名無しさん
垢版 |
2018/05/23(水) 19:05:30.98ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

AI2XF
502デフォルトの名無しさん
垢版 |
2018/05/23(水) 22:43:13.42ID:0Sl9hrHV
僕の 知合いりの 知合りいが できた パコソン 一台で お持れちにな金る やり方
役立につ かまれもしせん
グルグーで 検るす索と いかいも 『 ネットぐ方稼で法 モヌレアフニノ 』

AXI2F
503デフォルトの名無しさん
垢版 |
2018/05/24(木) 09:41:04.28ID:c64g4uzw
荒しだけの2連投か
504デフォルトの名無しさん
垢版 |
2018/05/25(金) 03:35:14.49ID:thcmSanV
よく読み比べてみるとよい
505デフォルトの名無しさん
垢版 |
2018/05/27(日) 20:01:12.45ID:zozk6gzj
荒らし業者の連投規制回避の小さな変更

さっさとアク禁になれ
2018/05/27(日) 20:37:36.93ID:Yc9D3hww
2個目はどう考えても業者じゃなくてスレ住人だろ…
業者はアク禁になってほしいのは同意
2018/05/27(日) 22:59:09.70ID:54akOR6H
>>506
お前のレスがあるまでケブンリッジジェネレータなのに気付かなかったわw
2018/05/28(月) 01:26:16.34ID:OHc1BnnP
いや、流石にそれは鈍すぎ
2018/05/28(月) 08:49:15.07ID:jUv7w+gM
まあ業者も日本語おかしいからね
510デフォルトの名無しさん
垢版 |
2018/05/28(月) 09:38:09.76ID:KmDsu5r7
人間の認識力はそんなもんなんだろうな。ちょっと似てると同じと判断しまう。そうやって脳は省力化してエネルギーあまり使わないようにしてるのかも知れない。脳を動かすには糖分沢山必要だからな。
511デフォルトの名無しさん
垢版 |
2018/05/28(月) 11:55:04.24
単なる老化
2018/05/28(月) 16:45:42.01ID:3CvuwD8l
逆に言えばいちいち全部の文字を正確に認識してたらちょっと誤字脱字や書き損じがあっただけで意味がわからなってしまうぞ
513デフォルトの名無しさん
垢版 |
2018/05/28(月) 19:20:35.39ID:wGAafxHd
わからなって
2018/05/28(月) 21:12:41.80ID:NjmAPrvj
でもちゃんと読めちゃうってういね
515デフォルトの名無しさん
垢版 |
2018/05/28(月) 21:24:04.06ID:GjCLG5ws
ういね
2018/05/28(月) 21:32:08.47ID:uFz834xt
くらだなといこに突っこんじんでゃねーよw
2018/05/28(月) 23:42:55.16ID:co2/BVdS
botの書き込みなんていちいち推敲モードで読まないからな
2018/05/28(月) 23:59:37.57ID:RI6Mq7Tq
推敲は読むときにするもんじゃないぞ書くときだぞw
2018/05/29(火) 00:08:28.36ID:ijkA2Dj3
>>518
あ、ホントだ、恥ずかしいww
校正というべきだったか
2018/05/29(火) 01:15:48.27ID:zVPinOAm
くらだなといこに
2018/05/31(木) 05:50:22.16ID:89+9cUdj
>>487
Scala
https://scalafiddle.io/sf/QK0Wdt3
2018/06/03(日) 21:52:25.40ID:Six28wK2
お題:モリカケ問題を解くプログラム
2018/06/04(月) 21:24:56.45ID:XnHANXyJ
numpyのdotを再現せよ
524デフォルトの名無しさん
垢版 |
2018/06/04(月) 21:32:40.88ID:i7Qhv+/y
お題: RFC 5321, 5322 に従ったメールアドレスの文字列をテキストファイルから抜き出すプログラム

参考
Javaで正規表現を使って抜き出すプログラム(最初に正規表現のパターンが出力される)
https://paiza.io/projects/Rc2wknAxofvjPfcs9MuYcQ

以下は日本語訳されたRFC
http://srgia.com/docs/rfc5321j.html
http://srgia.com/docs/rfc5322j.html
2018/06/04(月) 21:34:02.48ID:i7Qhv+/y
あ、ごめん。テキストファイルじゃなくて標準入力からでもいい。
何処から入力するかはたいした問題ではない。
2018/06/04(月) 21:55:13.33ID:J29vhHVp
http://www.din.or.jp/~ohzaki/mail_regex.htm
RFC通りのメールアドレス判定なんて不毛だってはっきりわかんだね
2018/06/04(月) 22:31:58.94ID:lBwALx1Z
>>526
わらたwwwww
2018/06/04(月) 23:19:04.56ID:hdRuAjud
昔仕事で MUA 作った時に >>526 にある
folding white space をぶち込んでくる送信元がいて苦労した記憶が…
529デフォルトの名無しさん
垢版 |
2018/06/05(火) 00:27:36.36ID:xCctA/+R
>>526
ここはお題スレだから不毛で良いんだよ。パズルを解くようなもんなんだから。
2018/06/05(火) 00:33:47.39ID:ueqUCLW3
>>475に感化されて>>378の(1)(2)(3)を勉強しながら書いてみた
https://scalafiddle.io/sf/ZGr8M2X/1
531デフォルトの名無しさん
垢版 |
2018/06/18(月) 23:54:29.00ID:2+ok0PtZ
お題: バイオリズム計算

計算結果の出力だけでも良いが、なんだったらアスキーアートやGUIで波形の絵を出したりしても良い。その辺は自由。

バイオリズムとは何かについては Wikipedia 参照。
https://ja.wikipedia.org/wiki/%E3%83%90%E3%82%A4%E3%82%AA%E3%83%AA%E3%82%BA%E3%83%A0

実際に計算して図を出すサイトもある。
https://keisan.casio.jp/exec/system/1231994137
2018/06/19(火) 22:42:15.32ID:j8jphcK/
計算式まで示されちゃってるから出力形式に凝らないと厳しいかな・・・
2018/06/22(金) 00:11:10.49ID:3MP35Wby
お題:
ある数値nが与えられた時に、次の条件を満たす2つの数値a,bを求め、表示するプログラムを作成しなさい。
●aとbの最小公倍数がnとなる
●a<bかつaとbの差(b-a)が最小となる

例:n= 360→a= 36,b= 40
  n=1000→a=125,b=200


例が間違ってたらゴメン
2018/06/22(金) 01:02:12.60ID:8ZynGqyy
数学板で
2018/06/22(金) 01:50:17.43ID:Hssdw/9K
数学板はアルゴリズムは範疇じゃない
2018/06/22(金) 02:45:23.00ID:OFAJDNNU
>>533
n=1000だとa=200,b=250?
2018/06/22(金) 04:46:50.60ID:OFAJDNNU
>>533 Java
https://ideone.com/TJSzrf
2018/06/22(金) 06:04:41.34ID:3MP35Wby
>536

申し訳ない。その通りです。
2018/06/22(金) 19:02:58.08ID:OFAJDNNU
>>533 Java (>>537を修正)
https://ideone.com/vmgMtp
2018/06/23(土) 00:13:54.74ID:3GZ5DVjp
>>538
a=1
b=2
じやあかんか?
2018/06/23(土) 00:40:06.00ID:5Wb6fwhK
数学板じゃなくてもさすがに最小公倍数くらいは
このスレならみんな知ってると思ってた
2018/06/23(土) 01:29:42.07ID:OlLfOCSW
>>541
公倍数は最小公倍数の倍数
公約数は最大公約数の約数

…当たり前のように思えて実際の証明は結構イメージしにくく、一回読んだだけではよくわからないのでした…
2018/06/23(土) 01:40:18.34ID:gWvFlQcl
お題:標準入力からhtmlが一行ずつ与えられるのでh1,h2などのhタグを階層化して出力しなさい。タグ内のテキストも一緒に出力し、タグ内にimgが含まれていたらそのaltを出力しなさい。

出力例:
h1 5ちゃんねるにようこそ
....h2 クソスレ乙
........h3 逝ってよし
....h2 オマエモナー
2018/06/23(土) 04:54:51.31ID:0hHcgEn+
>>531 C++
https://ideone.com/zLWLhl
>>533 C++
https://ideone.com/TS6iHb
545デフォルトの名無しさん
垢版 |
2018/06/24(日) 06:33:26.88ID:eSenA4KT
>>531
Kotlin
https://paiza.io/projects/1cs_1FmFyWgV8HYYxdNWYg
2018/06/25(月) 15:39:38.08ID:NIfex5vk
任意の文字列を含む有効なビットコインのアドレスを生成するプログラムを作成せよ。有効な形式のアドレスでなければブロックチェーンエクスプローラで検索しても認識されない。ビットコインアドレスの形式については下記サイトを参照。
https://qiita.com/pokochi/items/4d536a4a24067505abea

例:下記サイトの二番目にあるようなアドレス、
https://bitflyer.com/ja-jp/glossary/address
547533
垢版 |
2018/06/27(水) 00:31:17.62ID:vFJz85Ce
>>533
C++(使ってるのはほとんどCですが)
https://ideone.com/S4H5Mo

自分の考えてたアルゴリズムをCで記述してみました。
模範解答、とはとても言えない代物です。もっと改良の余地がありますし、バグも取りきれてないかもしれません。

それと>533出題時に考えてたアルゴリズム(手計算でやってましたが)を↓に記述してみました。
こちらは明確に誤った答が出されてしまいます。参考程度に orz
https://ideone.com/HdfYPe
2018/06/28(木) 20:31:12.40ID:frbOjHXy
お題:三捨四入せよ
負の丸め方向はどちらでも良い
https://ideone.com/Z6fTGh
549デフォルトの名無しさん
垢版 |
2018/06/29(金) 03:23:11.07ID:9jOo9IQo
>>548
これでいいの?なんか妙に簡単に感じるんだが。

Kotlin
https://paiza.io/projects/6DxRoEDJdya5lyflPo2P9Q
2018/06/29(金) 09:31:42.23ID:1XSLHtbi
だれか
>>546
にも挑戦してくれ
2018/06/29(金) 09:37:19.96ID:dAZ4C3M0
解いてくださいお願いしますだろ
2018/06/29(金) 09:41:08.29ID:1XSLHtbi
説いてくださいお願いします
553デフォルトの名無しさん
垢版 |
2018/06/29(金) 09:46:26.83ID:8O35Zxb2
やれるものならやってみろ。

などと挑発してみるとアホが大漁に釣れるかも知れない。
2018/06/29(金) 09:47:16.90ID:1XSLHtbi
やれるものならやってみろ
555デフォルトの名無しさん
垢版 |
2018/06/29(金) 10:00:35.27ID:8O35Zxb2
問題は釣れるのがアホなのでものすごく頑張った揚げ句たいしたものができない率が非常に高いことにある。
556デフォルトの名無しさん
垢版 |
2018/06/29(金) 14:17:42.63ID:1XSLHtbi
やっとできた〜
557デフォルトの名無しさん
垢版 |
2018/06/29(金) 14:20:21.27ID:1XSLHtbi
https://ideone.com/7plTpl
2018/06/29(金) 21:50:25.20ID:mF6xIVde
やれるものならやってくださいお願いします
559デフォルトの名無しさん
垢版 |
2018/06/30(土) 11:21:27.07ID:xZj/2lQZ
ライブラリを入れ込んだver
https://ideone.com/6WfH7S
2018/06/30(土) 12:55:28.86ID:xZj/2lQZ
これでこんなこともできる
https://chainflyer.b;itflyer.jp/Address/1MayukoMuraokaXXXXXXXXXXXXXXX5f8QC
2018/07/03(火) 01:47:57.66ID:dVWXwhE2
>>543
io !(?<_><.?>)(.)\k<_>! <- '\1'
2018/07/03(火) 01:49:38.99ID:dVWXwhE2
>>548
d~-(n+1).round
563デフォルトの名無しさん
垢版 |
2018/07/03(火) 10:14:17.19ID:2Hrfam1D
>>561>>562
それなんてエロゲ、じゃない、なんて言語?
2018/07/04(水) 00:42:21.28ID:EM1Kat0+
>>543
Perl
https://paiza.io/projects/dRg6gJ5qeJb_MNSQRS0agg
2018/07/04(水) 21:23:39.48ID:N4SCi1OC
情報オリンピックの問題って組合せ最適化ばかりなのかなぁ?
ttps://www.ioi-jp.org/joi/problem_archive-light.html
566デフォルトの名無しさん
垢版 |
2018/07/04(水) 21:52:08.71ID:gFgZc5FG
VXU
2018/07/05(木) 16:25:31.76ID:AeL6VB/V
567
2018/07/06(金) 02:46:13.60ID:uFkmqose
568
569デフォルトの名無しさん
垢版 |
2018/07/08(日) 08:40:53.67ID:PyVF6x+z
鈴木貫太郎
灘中 中学入試 整数問題
https://youtu.be/okKan0C_--E

問1
4つの異なる数字、1, 3, 9, x から、
異なる数字を取り出して並べる、3桁の整数は24個あり、それらの平均値は555 である時、x は何の数字か?

問2
5桁の36の倍数で、2, 3, 5 のどれもが、
いずれかの桁に、1回以上現れる整数のうち、最小のものを求めよ

答え、問1 : 7、問2 : 13,572
2018/07/08(日) 09:46:25.71ID:zc7zM8II
瞬殺
灘中入れるかな?
571デフォルトの名無しさん
垢版 |
2018/07/09(月) 14:21:35.87ID:RPo/jFjY
灘中の問題は、以下の性質を使うものが多い

2 の倍数は、下1桁が偶数
4 の倍数は、下2桁が4の倍数

3 の倍数は、各桁の数字を足したものが、3の倍数
9 の倍数は、各桁の数字を足したものが、9の倍数

だから数字を因数分解して、これらに該当するかどうかで、問題を判別できる
572デフォルトの名無しさん
垢版 |
2018/07/09(月) 16:13:07.36ID:OMEWQnbN
いただきぃ!!
https://goo.gl/uAcy7u
573569
垢版 |
2018/07/11(水) 18:04:55.63ID:I//Y0R5O
>>569
問1 を、Ruby で作った。
問2 は、難しくて作れない

nums_3 = [1, 3, 9]
nums_4 = nums_3 + [0]

(0..9).each do |num|
next if nums_3.include? num # 含まれていれば

nums_4[-1] = num

sum = 0
nums_4.permutation(3) { |a, b, c| sum += (a*100 + b*10 + c) }

puts num if sum == 24 * 555 #=> 7
end
2018/07/11(水) 18:38:10.32ID:XuPZzMyT
じゃあ問2を酷いコードで
>>569 Java
java.util.stream.IntStream.range(10000, 100000).filter(i -> i % 36 == 0).mapToObj(Integer::toString).filter(s -> s.matches("(?=.*2)(?=.*3)(?=.*5).*")).findFirst().ifPresent(System.out::println);
575デフォルトの名無しさん
垢版 |
2018/07/11(水) 21:04:09.51ID:9T5mO0zj
コンピュータを使ってブルートフォースで答えを探す方法はわかってもコンピュータを使わずに数学的に解く方法が思い浮かばない。
しかしそれを小学生が解いて入学するという現実。orz
2018/07/11(水) 23:18:42.60ID:83LTUfxJ
>>569 Squeak/Pharo Smalltalk

"問1"
((0 to: 9) copyWithoutAll: #(1 3 9)) detect: [:n |
| set |
set := Set new.
'139', n asString combinations: 3 atATimeDo: [:comb |
comb permutationsDo: [:perm |
perm first ~= $0 ifTrue: [set add: (perm as: String) asInteger]
]
].
set size = 24 and: [set average = 555]
] "=> 7 "

"問2"
((10000 roundTo: 36) to: 99999 by: 36) detect: [:n | n asString includesAllOf: '235'] "=> 13572 "
2018/07/12(木) 00:00:29.98ID:gpOSM7dO
このスレprologニキっていないの?
手続き型以外の解法見たい
あとJニキ最近見なくて寂しい
2018/07/12(木) 01:08:11.22ID:gc75XwOp
>>569
問1
4種の数字から作られる24個の数字の平均が555
→合計が1110になる12組の数字にまとめられる→どの桁も合計が10になる2組の数字の組合せで構成される
→1,3,9,xのうち1と9を除外した3と「足して10になる数」→x=7

問2
36の倍数→4の倍数かつ9の倍数
→5桁の数字は9の倍数なので各桁の数字の合計が9の倍数になる
→5桁の数字には「2,3,5」が少なくとも1つ以上含まれているので、この時点で各桁の数字の合計は10より多くなる。
→各桁の数字の合計は9ではないので、18とする。残り2桁の数字の合計は8。この中で一番小さな数が作れるのは1,7。
→「1,2,3,5,7」の組み合わせの内、下2桁が4の倍数で最も小さい数は13572となる。

かなり乱暴に書くとこんな感じで解けば良いのかな?
しかし、これをプログラムで表現しようとするのはかなり骨っぽい(数を1桁ずつ分解するのに余計な手間がかかりそう)。
それよりも総当たりで解いた方がコンピュータ的には手っ取り早い気がしますね。
2018/07/12(木) 01:52:58.79ID:2elGYyrL
>>578
最初の「合計が1110になる12組の数字にまとめられる」が何故なのかわからん。
580578
垢版 |
2018/07/12(木) 07:07:01.02ID:gc75XwOp
>>579
作成される数字を順列とみなした時に
「ABCD ABDC ACBD ACDB ...」を逆順にした
「DCBA DCAB DBCA DBAC ...」という列を組み合わせたら…なんて考えてたんですが、後で見ると意味不明でした。申し訳ない。

問1について、それよりも単純な方法がありました。

xがどの桁で使用されてるかで場合分けし、それぞれを合計する
x不使用:139 193 319 391 913 931 :2886
xが1の桁:13x 19x 31x 39x 91x 93x :2860 + 6x
xが10の桁:1x3 1x9 3x1 3x9 9x1 9x3 :2626 + 60x
xが100の桁:x13 x19 x31 x39 x91 x93 :286 + 600x
上記をすべて合計:8658 + 666x
24個の数字の平均が555だから合計は 555*24=13320
8658+666x=13320
666x=4662 x=7

若干手続きはコンピュータ向けと言えなくもないですが、やはりプログラミングするには手間ですね。
2018/07/12(木) 07:41:52.96ID:KB59nVpm
問1
24=4! なので4個の数字はすべて異なる
24通りを並べると各桁1, 3, 9, x が同じ回数出現する
これらの平均が555なので
1, 3, 9, x の平均が5とわかる
1, 9の平均が5なので3, xの平均が5となる7が答え

問2
最小を求めるので10000の位が1になる数を考える
(考えて、なければ他を考える)
各桁の合計が9の倍数から1, 2, 3, 5, 7とわかる
この中で偶数は2だけなのでこれが1の位
1の位が4で割りきれないので10の位は奇数であれば4の倍数
つまり10の位が3, 5, 7のどれでも36の倍数になる
3, 5, 7を小さい順にならべて13572が答え
2018/07/12(木) 07:47:08.70ID:KB59nVpm
以上が東大数学科卒の考え方
両方で20秒くらい
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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