プログラミングのお題スレ Part9 [無断転載禁止]©2ch.net
レス数が950を超えています。1000を超えると書き込みができなくなります。
>>868
いいマシーンだな。
まぁ、ウチはあれくらいで資源尽きちゃうけど、メモリ64Gもあったらもっと行けるな。
気が向いたらどうぞ。 以下のURLのように、同じ色の点同士をつなぐゲームがある。
https://play.google.com/store/apps/details?id=com.bigduckgames.flow
N×Mの2次元配列が与えられる。配列の各要素は半角英字('a'-'z')または'*'である。
半角英字は色付きの点を表し、'*'は空のマスを表す。
'*'以外の文字は、配列中に必ず2個ずつ存在する。
このパズルの解を一つ出力せよ。
・'-'は左右のマスをつなぐ
・'|'は上下のマスをつなぐ
・'.'はマスをつながない
解がない場合は"No solution"と出力せよ。
[input]
***rg
**bg*
r****
ob*yo
****y
[output]
*-*-*-r.g
|.......|
*.*-b.g-*
|.|......
r.*.*-*-*
..|.|...|
o.b.*.y.o
|...|.|..
*-*-*.*-y >>841
やってはないけど、そもそもこれ間違ってるのと、同じような発想でやるとしても
全ての素数での分類ではなく、3分割くらいのほうが効率がいいのと、
Σ (2の倍数) + Σ (3の倍数かつ2の倍数でない) + Σ (2と3で割り切れない)
分割する事もなく、N項の和だとしたらNの階乗か分数をなくせる最小公倍数かけてもいい。それだと掛け算もしくは割り算がいくつも出てくるが。 >>871
等幅フォントで表示しているエディタにコピペしてようやっと何を言わんとしているか分かった。
それってマスとマスの間に - または | を入れて繋ぐってことでいいんだよね? で、つながない所がピリオドだと。
(まあ等幅フォントのASCIIでやるならそれしか方法ないとは思うけど)。 しかしピリオドは
**
**
の時に
*.*
...
*.*
のようになって中央のピリオドが本来なら不要なものになるわけだが、それはスペースでなくても良いのかな?
まあただの幅合わせだからどうでもいいものではあるが。 >>801 の方法で出来ると書いてるけど
結局誰もやってないのか
個人的には(高速には)出来ないと思っている >>871
課題じゃなくて
単にソルバーの作成依頼でしょ 無理に線引かないでrだのgだので埋めた方がわかりやすいと思うがな
すべてのマスを埋めなければならないルールが抜け落ちてるみたいだから
実は別物のゲームで交差があるとかなったらそうはいかないが ブレゼンハム的なやつって、始点と傾き(と区間や境界等で決まる明示されない終点)が
与えられた際に、終点座標を求めてから始点に向かうのってアリなんだろうか? ここでやるには問題がでかすぎ
100分割してほしい 訂正
ただし解は1つでありかつ線が通らないマスは無いことを前提とする
ではなく
解が存在すればすべての解は全てのマスを通ることを前提とする お題
22の分割(たとえば3+3+5+8)のうち
分割したそれぞれの数の逆数の和が1になるものを求める 早速間違えましたすみません
3 +5 +6 +8
でした >>883 ruby
f=->n,k{n==1?[[k]]:(1..k/n).flat_map{|i|f[n-1,k-i].map{|j|[i,*j].sort}}.uniq}
(1..22).each{|i|f[i,22].each{|a|p a if a.map{|e|1r/e}.sum==1}}
#=>[2, 4, 8, 8]
[2, 5, 5, 10]
[3, 3, 4, 12] C++で書いたけど、オセー。
デバッグ大変だ。
うーん。困ったなぁ。 https://ideone.com/3ZWKv1
C++。こんなコード書いてみたけど、無理ゲー。
ちょっと厳しいなぁ。最近解けてないなぁ。
ちなみにデバッグ不完全なのであしからず。 こういう数学的な問題を解くにはやっぱりプログラミング以前に数学を勉強した方がいいのでしょうか? >>888
数学は大事だよー。
俺数学出来ないから、解けない問題がそれなりにある。
算数では限界だ〜〜。
まぁ、数学とプログラミングって習得時はオーバーラップするところが少ないから融合するまでちょっと大変かな。
でも数学は強力なツールです。 一般論でいえば必要だろうけど>>883なんて全部列挙したところで計算量はたかが知れてるし
目下必要なのは論理学的思考能力なのでは >>883 Java
https://ideone.com/WiMkNl
22くらいなら大丈夫だけど桁が増えると(´・ω・`) お題
52をいくつかの自然数に分解して
それらの最小公倍数を最大化せよ 分解って、積じゃなくて和で良いんだよね?
数学の知識を使うと一瞬だけど 数学の知識が無いなら素直にコンピューターの力を借りなさい そもそも数学で簡単にとけない問題を力わざでとくための計算機だろ >>894
よくわからんが52の場合は
180180 [3, 4, 5, 7, 9, 11, 13]
ということらしいぞ C++17発行されたから開発環境がさっさと対応してGCDくらい使えるようになりたい。 >>768の問題で0<=b<10,0<c<10という制限がついた時
移動を何回か繰り返すと必ず元に戻るんだけど
その回数はbには無関係にc,10-c,10の最小公倍数で
okかな? 一回の移動ではd=1ね。
ま、その制限を付けなくともd,c,10-c,10の最小公倍数になるんだろうけど >>901-902
10-c,10の最小公倍数じゃね? 数学云々言ってる奴って、何故かその成果見せないよな。
俺でも出来そうなFUD、いやマウントかな。 ていうか、計算機はどちらかというと算数だよな。
数学は公式とか証明とか、そういう手順みたいなものを考えるわけで、プログラミングに近い。
コンピュータは作られたプログラムに従って計算結果を出すだけ。
もちろんプログラムそのものをコンピュータに作らせることも可能だけどね。これは次元が違う話だよね。 プログラムには算数と三角関数とかがあればいい
あとN進法 では簡単なお題を
bを底とする値vを、2〜36進数に変換し表示してください。
なお、bは2〜36の整数、vは0以上の整数とし、不正な入力はないものとしてよい。
また、底と値の区切り文字は入出力ともに特に問わない。
[入力例]
16 deadbabe
[出力例]
2#11011110101011011011101010111110
3#100122100210210001200
4#3132223123222332
5#30122344134421
6#1414413520330
7#161402600604
8#33653335276
9#10570723050
10#3735927486
11#1647919685
(略)
27#9h9ll1i
28#7l225hi
29#6842o9l
30#53m7kg6
31#46f9hir
32#3farelu
33#2tf7mor
34#2e7m366
35#214kbpb
36#1ps9w3i >>909 ruby
n=eval"%2$p.to_i %1$d"%"16 deadbabe".split
(2..36).each{|i|puts"%d#%s"%[i,n.to_s(i)]} >>909
https://ideone.com/dxqIrP
C++。まぁこれくらいなら算数でも解ける範囲やな。
ただしコードがバグってないとは言ってない。へへ。 >>909
Kotlinらしくしてみようとはしたが、あまりにも短く、更に俺がまだよくKotlinを知らないためにこんな風になった。
https://paiza.io/projects/BpAXUQuDCaOSD6Q6GN4O8A
肝心な所はJavaとほぼ同じ。 >>909 Squeak/Pharo Smalltalk
| n |
n := '16 deadbabe' replaceAll: Character space with: $r; asNumber.
2 to: 36 do: [:i | Transcript cr; show: i; space; show: (n radix: i) asLowercase] お題を捏造してやるぜ。
アンサーが42になる式を捏造せよ。という数学パズル。
小難しい式をでっち上げた人が優勝。
算数から数学、物理まで式になってればすべての手法が使用可能。統計とかでもいいよ。
制約は答えが42になることのみ。
解けるものはいるか? あー、忘れてた。
ちゃんと検算して答えを確認できること。
俺、算数しかできないから、各種サービスにかけて検算できるのが望ましい。 ベンチマーク的な感じだな。
たまには本気を出したいだろ?お前ら。 当たり前だが、必要な関数が標準ライブラリになかったら自作すること。 >>918 ruby
require 'open-uri'
expr = "the Answer to the Ultimate Question of Life, the Universe, and Everything"
uri = "https://www.google.com/complete/search?output=toolbar&q=%s"
puts open(format(uri, expr.gsub(' ', '%20'))).string[/data="\K[^"]*/]
#=> 42 >>918
難しさの判定を人間が気分でするしかないとなると死ぬまで気に入らないと
言い続けて終わらないようにもできてしまうわけで、少なくともお題の判定
方法としては適切ではないのではないか? 式を捏造せよと言ってんのに、検算して答えがあってることを確かめろとか矛盾してて草 >>925
基本的かつ合理的。
>>926
投票制にする?
>>927
答えは42になることだけは決まってるんだから、検算できないのはどういう理由?
プログラミングやるんだから、イデオンとか使うんじゃだめなの? 片山に次ぐ逸材かもしれないが出題者が馬鹿だとやる気が出ないという良い見本 自由を泳げないって不便だね。
何やっても良いんだからなんかすればいいって話なんだけど。
定型の答えなんか求めてないのは出題見ればわかるだろ。
発想力が欠如してるんじゃないか?
基本的にベンチマークだと言ってるでしょ?
捏造っていう言葉が悪かったら謝るが。構成しろってことにすれば大体同じや。 >>909 rust
https://ideone.com/H6mdNM
・BigInt不使用
・n.to_s(b)の形にしたかったが素早く諦めた
・色んなところに迷いと妥協が見え隠れ お題:入力があったら6面のサイコロを振って出た目を出力してください
ただし数字を使ってはならない >>935
Unicode の U+2680 〜 U+2685 は?
?????? >>936
さぁ。。。
>>937
確認してないけどいいのでは 数字を使ってはならないってのが謎
AAで出力しろってか? >>935
Rubyで。
p rand('abcdef'.length) + 'z'.length 数字を使うなって表示なのかそれともソースなのか?
表示なら
●●●●●●とか お題
自然数 n を入力とし, a と b を乗ずると n になるような自然数 a と b を出力する.
a と b の侯補が複数存在する場合は, a と b の和がもっとも小さなものを出力すること. >>938
じゃあUnicodeのU+2680からの文字を使った版。Kotlinで。
https://paiza.io/projects/GElJ8jIbi45jocyYirbO8w
入力があったらの部分は最初の readLine() だ。
下の「入力」タブの所で改行を一つ入れてあるので開いたら即出力がある。 >>935
また Kotlin。
サイコロの目の一つは5x5ビットあれば表現できるので配列に詰め込んで後で変換して出すようにした。
https://paiza.io/projects/uGhQ6cuRqbnlGc2TTvT92w?language=kotlin
別に配列でなくてもとにかく 5*5*6 (=150) bit 詰め込めるなら何でも良い。 >>946
15.times{|n|
sqrt_n = Integer.sqrt(n)
(2 * sqrt_n..n + 1).each { |s|
(sqrt_n..n).each { |i|
next unless i * (s - i) == n
puts '%d * %d = %d' % [i, s - i, n]
break
} || break
}
}
0 * 0 = 0
1 * 1 = 1
1 * 2 = 2
1 * 3 = 3
2 * 2 = 4
5 * 1 = 5
2 * 3 = 6
7 * 1 = 7
2 * 4 = 8
3 * 3 = 9
5 * 2 = 10
11 * 1 = 11
3 * 4 = 12
13 * 1 = 13
7 * 2 = 14 >>946
def r9_946(n)
Math.sqrt(n).to_i.downto(1) do |e|
return [e, n / e] if (n / e) * e == n
end
end
1.upto(100) do |n|
a, b = r9_946(n)
printf("%d = %d * %d¥n", n, a, b)
end >>951
出目が0〜6?
確率的には
0: 1.56%
1: 9.38%
2: 23.44%
3: 31.25%
4: 23.44%
5: 9.38%
6: 1.56%
くらいか? >>946
https://ideone.com/GSawYb
C++。条件足りてるかよくわかってないけど、適当に書いたらそれぽい感じになった。
あってる保証はない。 なんか俺の劣化>>953みたいな感じだな。
うーん。名案だとは思ったのだけど。むむむ・・・。 うほ、フィルターしてる条件にバグがあった。良く動いてたな。 これ、片方1のやつって素数かな?
エラトステネスの篩とどっちが軽いかな。 お題
要素が素数, かつ要素の総和が2018になる集合のうち, 要素数がもっとも大きい集合を出力する. >>959
https://ideone.com/lwcNQR
C++。DPの練習。必要な数はわかったが過程の表示の仕方がわからない。
どうすれバインダー。Orz >>961
https://ideone.com/DdepmL
C++。あってるか知らんけど、力業でベタ作業した結果、それっぽい数字にたどり着いた。
と、思ったら全然違う数字を指していた。 要素数だから、コンテナカウントだと思って書いたんだけど。
え?題意勘違いしてる? >>967
あー、それそういう意味だったのか。
うわー俺、蛇足だった。 レス数が950を超えています。1000を超えると書き込みができなくなります。