トップページ⇒tech
1001コメント360KB

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

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2014/06/13(金) 10:14:53.01ID:GvJv3b6q
プログラミングのお題スレです。

前スレ
プログラミングのお題スレ Part3
http://peace.2ch.net/test/read.cgi/tech/1390525149/
プログラミングのお題スレ
http://toro.2ch.net/test/read.cgi/tech/1357191974/
出されたお題をコーディングして罵られるスレ
http://toro.2ch.net/test/read.cgi/tech/1354393458/

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

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

【ソースコードが長くなったら】
http://codepad.org/
http://ideone.com/

宿題は宿題スレがあるのでそちらへ。
0002デフォルトの名無しさん2014/06/13(金) 10:17:20.80ID:Q8FRmQS5
>>1
乙。
0003デフォルトの名無しさん2014/06/13(金) 10:52:12.91ID:Q8FRmQS5
ニュースの時間です。
最近、問題の出題者が是非を問わず失踪する事件が相次いでおり続報が待たれます。
それではおやすみなさい。
0004デフォルトの名無しさん2014/06/13(金) 14:04:49.30ID:kccJ4S5h
破問失踪
0005デフォルトの名無しさん2014/06/13(金) 15:31:39.26ID:71nCtwZM
前スレの問題
abc
c
abd
?
abe
b
ae?
a
???

これはある規則に沿って表示されている
?の部分の文字を埋めよ
0006デフォルトの名無しさん2014/06/13(金) 15:34:44.97ID:71nCtwZM
回答

abc ←スタート
c ← 直前の文字列からcを引く
abd ←お尻にcの次の文字が追加する
d ←dを引く
abe ←dの次の文字のeをお尻に追加する
b ←bを引く
aec ←bが引かれてeが繰り上がり、bの次の文字cをお尻に追加する
a
ecb
0007デフォルトの名無しさん2014/06/13(金) 15:46:01.59ID:71nCtwZM
アルファベットの小文字から成り立つ、文字列S(length=3)と文字Cがある
Sの左辺の文字をS1,中央の文字をS2,右辺の文字をS3とする
例)S=xyz, S1=x, S2=y, S3=z
SからCを引くと、Sに含まれるCを削除し、Sの語尾にCの次の文字(アルファベット順)を加える。
例)S=abc, C=cなら、S-C="abd"となる
また、SにCが存在しない場合は何も引かれない・足されない。
'z'の次の文字は'a'とする。
10回目の文字の足し算でS1=S2=S3となるSとCの組み合わせを全て求めよ
0008デフォルトの名無しさん2014/06/13(金) 15:47:22.93ID:71nCtwZM
あ、まって書きなおす
0009デフォルトの名無しさん2014/06/13(金) 15:48:11.71ID:Q8FRmQS5
>>5-6
俺解けなかったけど、あんたはいい出題者だ。またなんか考えてもってきて〜。
文句言うなら。パターン認識するために、お膳立てをもうちょっとしてほしかったかな。

さて、睡眠継続〜。
0010デフォルトの名無しさん2014/06/13(金) 15:51:03.50ID:71nCtwZM
アルファベットの小文字から成り立つ、文字列S(length=3)と文字Cがある
Sの左辺の文字をS1,中央の文字をS2,右辺の文字をS3とする
例)S=xyz, S1=x, S2=y, S3=z
SからCを引くと、Sに含まれるCを削除し、Sの語尾にCの次の文字(アルファベット順)を加える。
例)S=abc, C=cなら、S-C="abd"となる
また、SにCが存在しない場合は何も引かれない・足されない。
'z'の次の文字は'a'とする。
ループの初めはC=S3とする。SにCを足した後はC=S3とする。
9回目の文字の足し算でS1=S2=S3となるSとCの組み合わせを1つ求めよ
0011デフォルトの名無しさん2014/06/13(金) 15:53:53.60ID:Q8FRmQS5
>>10
足し算の法則性は自分で考えろってこと?
0012デフォルトの名無しさん2014/06/13(金) 17:03:55.52ID:CyA6OO09
>>10
S=aabは考えなくていいのか
0013デフォルトの名無しさん2014/06/13(金) 17:44:01.09ID:24IwXXBF
>>10の問題の元ネタを忘れたから取り消し
0014デフォルトの名無しさん2014/06/13(金) 17:47:54.41ID:24IwXXBF
N(0<N<10000)は2で割り切れる整数である
1からNまでの整数を右回りの渦巻きで出力せよ
標準入力から以下の形式で与えられる
N

(例)
[input]
9
[result]
1 2 3
8 9 4
7 6 5
0015デフォルトの名無しさん2014/06/13(金) 18:01:10.51ID:FrjLIVoM
訂正

N(0<N<10000)は2で"割り切れない"整数である
1からNまでの整数を右回りの渦巻きで出力せよ
標準入力から以下の形式で与えられる
N

(例)
[input]
9
[result]
1 2 3
8 9 4
7 6 5
0016デフォルトの名無しさん2014/06/13(金) 19:15:03.54ID:ZlYpURCX
>>15
9以外の場合の出力は?
0017デフォルトの名無しさん2014/06/13(金) 20:06:38.85ID:MtxIaOIX
Nが整数の二乗じゃない場合が謎だね
0018デフォルトの名無しさん2014/06/13(金) 21:31:09.60ID:Q8FRmQS5
k==Nはとてもじゃないが計算できないので打ち切り。うちのアトムじゃ不適当だな。
TimeUsing:357Min@31905732CountCalced
見つかったかどうかはわからん。かーたーつーむーりー。
0019デフォルトの名無しさん2014/06/13(金) 23:48:18.14ID:xctJNyBf
>>15
ttp://ideone.com/pzxO7g
0020デフォルトの名無しさん2014/06/14(土) 00:05:44.14ID:MgRt7LMK
Helloを一番短いコードで出力しろ
0021デフォルトの名無しさん2014/06/14(土) 00:20:09.07ID:MgRt7LMK
お題を出してコードを投稿する海外のサイトってない?
コードゴルフに特化してないのがいいんだけどない?
0022デフォルトの名無しさん2014/06/14(土) 01:14:50.13ID:SwBFDyk2
前スレ >>973
筆算
  ______
237)18472...

をやりながらコードを見るんだ
0023デフォルトの名無しさん2014/06/14(土) 02:32:41.23ID:owGByNif
>>22
あのでかい数筆算するんか。精度的に自信ない。
筆算なんか十何年やってないからねぇ。Orz

>>15
寝不足とサイオン足りないので今日はパスするかも。
NをSqrtしてX^2あまりYでいいよね。適当だけど。
Sqrt重たいのわかるけどこの問題ならアリかなと思う。
0024デフォルトの名無しさん2014/06/14(土) 04:50:00.40ID:owGByNif
>>15
ttp://ideone.com/X1WsTo
ほぼC。綺麗さ重視であまり出しながらも形は作る感じ。
>>19とは対称ですねぃ。
サイオン回復したので一応作ってみた。
・・・。標準入力・・・だ・・・と・・・。
ttp://ideone.com/XCZXGb
対応した。さて、飯食うか。
0025デフォルトの名無しさん2014/06/14(土) 08:43:09.91ID:wNU/NJPK
>>1 おっ
>>5
たとえばabcの次にcが来る理由を考えてた。
問題文をよく読め。
0026デフォルトの名無しさん2014/06/15(日) 21:35:27.50ID:lBQJsMnk
地球の周りを3つの衛星が回っています
衛星Aは1時間23分かけて地球一周できます
衛星Bは3時間9分かけて地球一周できます
衛星Cは5時間45かけて地球一周できます
衛星は同じ位置にくると自動的によけてくれるので衝突して故障することはありません。速度も一定に移動します。
衛星Aは60度の位置、衛星Bは192度の位置、衛星Cは265の位置からスタートする。
3つの衛星が同じ位置に重なりあうのは何時間後か求めて出力せよ。また、重なりあうまで何周したかそれぞれ出力せよ。
0027デフォルトの名無しさん2014/06/15(日) 22:07:52.18ID:wjE+lkrG
>>22
多バイト長÷短バイト長はわりあいと楽ですね
http://peace.2ch.net/test/read.cgi/tech/1313183984/610
http://ideone.com/as7Jow
0028デフォルトの名無しさん2014/06/15(日) 22:14:35.24ID:wjE+lkrG
>>26
仮に円軌道かつ赤道面上を周回するとしても、それでも、人工衛星の周回軌道は高度と一対一に結びついている
なんだか非常に無理のある設定だ、というか「衛星は同じ位置にくると自動的によけてくれるので衝突して故障することはありません」はいらない文

誰の出題だ?
0029デフォルトの名無しさん2014/06/16(月) 01:45:11.10ID:MERkKOKe
お題: 麻雀における向聴数を数え上げる


実装例:
http://tenhou.net/2/

麻雀ルール等:
http://mahjong.nomaki.jp/
http://mahjong.ara3.net/lecture/shanten.htm
http://dora12.net/modules/dic/syantensu.html
0030デフォルトの名無しさん2014/06/16(月) 05:10:53.21ID:eNuyf1Ao
>>28
全ての衛星は赤道上を回る高度の違う衛星です、とかでいいだろというか、
角度合わせないと重ならないよな…出題者は1次元で考えてんだろうけど。
0031 ◆0qAv26otVI 2014/06/16(月) 11:29:18.56ID:2sGj4NhO
t分後の衛星の位置
衛星A:(60/360+t/83) mod 1.0
衛星B:(192/360+t/189) mod 1.0
衛星C:(265/360+t/345) mod 1.0
衛星Aと衛星Bが重なる周期と、衛星Aと衛星Cが重なる周期の最小公倍数を
求める方向でいいかな? >>28
0032デフォルトの名無しさん2014/06/16(月) 12:47:07.47ID:9OUnGSWw
宝石店のアルバイト(a1...a5)と客(k1...k5)が各5人います。
宝石店には輪になったカウンターがあり、そこに客は座っています。
宝石店には10個の色が異なる宝石(h1...h10)があります。
1人の客に一度に見せられる宝石は2つまでで、5人同時に異なる宝石を見せます。
一度見た宝石を2度も見せることはしません。
ただし、客に見せた2つの宝石のうちの1個はとなりの客に見せます。
例)k3の隣はk2とk4, k5の隣はk4とk1

全ての客に全ての宝石を見せ終わるまで何回かかるか調査しなさい。
0033デフォルトの名無しさん2014/06/16(月) 18:21:58.44ID:lnWmJsSA
>>32
組み合わせの問題苦手だけど、これだったら10回あれば回せないか?9回かもな。
普通に一周させて4回目で右と左をスワップしてもう一周と思ったけど、
これ、一回一個を2周させるより早い手順ある?2個必ず見せるとは書いてない。
うーん。
0034デフォルトの名無しさん2014/06/16(月) 18:25:53.76ID:lnWmJsSA
っていうか、一回に両方を右回りと左回り一周すれば、全部見たことになるんじゃないか?
一個はなので二個でもおk?
0035デフォルトの名無しさん2014/06/16(月) 18:39:59.16ID:lnWmJsSA
>>32
ttp://ideone.com/lWeDh6
ほぼC。めちゃくちゃ適当に書いたけど、こういうことだよね?
0036 ◆0qAv26otVI 2014/06/17(火) 14:36:05.05ID:yl/QxhYO
>>28 tが整数という制限(ガクッ)
t=499 (minute) EPSILON=1.000000e-002
A=0.178715 B=0.173545 C=0.182488 (360 degree=1.0)
AB=1.861159 BC=-3.219462 CA=1.358303 (degree)
A=7 B=3 C=2 (times)
- - - - - - - - - - - - - - - - - - - - - - - - - - -
t=538444 (minute) EPSILON=1.000000e-003
A=0.443775 B=0.443386 C=0.443357 (360 degree=1.0)
AB=0.139989 BC=0.010352 CA=-0.150341 (degree)
A=6488 B=2849 C=1561 (times)
0037デフォルトの名無しさん2014/06/17(火) 17:27:01.98ID:DkLyoDX2
片山MZすごいじゃん
今日の窓の杜に日本語で計算させるソフトが載ってる
0038デフォルトの名無しさん2014/06/18(水) 23:43:02.82ID:xlveYer0
標準入力から与えられたフォーマットを元に年齢を求めて出力せよ
標準入力から以下の形式で与えられます
YYYY/MM/dd

年齢は誕生日の前日に歳を重ねることに注意せよ。4/1生まれの場合は3/31に歳が増えることになる。
0039デフォルトの名無しさん2014/06/18(水) 23:44:54.58ID:TxeGU8JJ
C/C++の宿題片付けます 167代目
http://peace.2ch.net/test/read.cgi/tech/1392388003/
0040デフォルトの名無しさん2014/06/18(水) 23:54:31.17ID:DFxPJl2r
>>38
未来の日付が与えられた時の仕様は?
0041デフォルトの名無しさん2014/06/18(水) 23:56:27.56ID:xlveYer0
-1を返して
0042デフォルトの名無しさん2014/06/19(木) 00:09:32.23ID:+j7TYHbL
4/1の午前0時生まれは、次の年の4/1の午前0時にならないと満一年にならないけど
0043デフォルトの名無しさん2014/06/19(木) 00:29:42.44ID:lwMZS3uy
>>38
ruby

require 'date'
y, m, d = gets.split('/').map{|e|e.to_i}
day2 = Date.today + 1
age = day2.year - y
age -= 1 if Date::new(day2.year, m, d) > day2
p age
0044デフォルトの名無しさん2014/06/19(木) 00:33:56.29ID:td7zSXVn
3月31日が終わった時点で年が増える。時刻は関係ない。
0045デフォルトの名無しさん2014/06/19(木) 02:04:17.89ID:D7BmUZOO
>>42
日本の法律では前日に歳が増える
0046デフォルトの名無しさん2014/06/19(木) 02:05:16.48ID:D7BmUZOO
4/1生まれの人は4/2の人と同じ学年にはならない
0047デフォルトの名無しさん2014/06/19(木) 06:47:37.65ID:gzfpEmrh
>>26 Python
http://ideone.com/8DPtbc
答えは自信ない...
0048デフォルトの名無しさん2014/06/19(木) 15:08:54.60ID:UADYZqLi
1から10000000000000000000000000000000000000000000000000000000000000000000までの和を求めよ
言語に実装された和を求める為の関数やライブラリの使用は禁止とする
0049デフォルトの名無しさん2014/06/19(木) 15:10:04.69ID:UADYZqLi
書く人はいないと思うけどループで1から順に足していくのは10点
0050デフォルトの名無しさん2014/06/19(木) 16:48:56.36ID:EHpEAUer
問題の意図がよくわからない
0051デフォルトの名無しさん2014/06/19(木) 16:57:22.80ID:OLf00bFf
先頭と末尾を足して、個数掛けて、2で割る。
0052デフォルトの名無しさん2014/06/19(木) 16:59:02.04ID:OLf00bFf
高2レベルの数学の基本。
0053デフォルトの名無しさん2014/06/19(木) 17:05:35.80ID:EHpEAUer
anが偶数の時
(a1 + an ) * (an / 2)

以外の答えを求めてるの?
意図が分からん
0054デフォルトの名無しさん2014/06/19(木) 17:07:50.58ID:a/a0+n9Y
バカには無理
0055デフォルトの名無しさん2014/06/19(木) 17:08:16.01ID:OLf00bFf
>>53
奇数でも問題なく通用するよ
0056デフォルトの名無しさん2014/06/19(木) 17:11:32.58ID:EHpEAUer
>>51
これは二つの点で良くない
ひとつめ
結果を得るための計算としては有効であるが
そのように計算可能となるアルゴリズムが直接的に表現されていない
ふたつめ
不要な大きな数の計算をする事になる

数学とプログラミングはイコールではないし
計算とアルゴリズムもイコールではない

高校数学!話にならん話
0057デフォルトの名無しさん2014/06/19(木) 17:12:29.20ID:EHpEAUer
>>55
計算としてなら通用する
0058デフォルトの名無しさん2014/06/19(木) 17:16:39.01ID:BcmtgtjI
昔、1からnまでの和を簡単に計算する方法として読んだな、小学生向けの本だったぞ
0059デフォルトの名無しさん2014/06/19(木) 17:21:28.32ID:OLf00bFf
んーアルゴリズムとしてなら、1と10の計算として扱って、残りの0の個数で調整する。
0060デフォルトの名無しさん2014/06/19(木) 17:21:49.32ID:up+oEz5h
わからない人はまず1から10までの和を求めるところから練習すればいいよ
0061デフォルトの名無しさん2014/06/19(木) 17:23:23.05ID:up+oEz5h
桁を大きくしたのはループを使わないでほしい意味を込めた優しさのつもりだったんだけどね
0062デフォルトの名無しさん2014/06/19(木) 17:25:22.03ID:OLf00bFf
An/2 + An**2/2 てことで
0063デフォルトの名無しさん2014/06/19(木) 18:01:30.86ID:x9PjgZWi
>>56
意味不明
0064デフォルトの名無しさん2014/06/19(木) 18:44:20.51ID:nGqFEu9y
>>56
n(n+1)/2で求めるのも立派なアルゴリズムなんだけど?
0065デフォルトの名無しさん2014/06/19(木) 18:56:35.57ID:fgOwoOKT
いかに速く計算できるかしかこだわる点はないだろ。
多桁だから少しは工夫できる。
0066デフォルトの名無しさん2014/06/19(木) 19:25:38.20ID:Brdb8B0I
条件は
>>48
> 言語に実装された和を求める為の関数やライブラリの使用は禁止とする
なので、
・n(n+1)/2 はok
・多倍長整数計算を実装せよ
って意図では
0067デフォルトの名無しさん2014/06/19(木) 20:00:43.15ID:Lgo8NLIN
多倍長実装するの大変なのでパス。@逆襲してた人。
っていうか、多倍長理解してないんだよな。だから無理。
0068デフォルトの名無しさん2014/06/19(木) 20:03:04.89ID:fgOwoOKT
多桁は多項式計算の実装すればいいんだ。
0069デフォルトの名無しさん2014/06/19(木) 20:13:33.99ID:Lgo8NLIN
>>68
そうだけど、Ideonで証明できないからなぁ。
すまんけど、ちょっとつまらん。
0070デフォルトの名無しさん2014/06/19(木) 22:54:19.34ID:gzfpEmrh
>>48 Python
#2進数 (b+1)*b/2
b = "10000000000000000000000000000000000000000000000000000000000000000000"
#print b[:-1] + "1" + b[1:-1]
#print b[:-1] + b[:-1]
print b[:-1] * 2
0071デフォルトの名無しさん2014/06/19(木) 23:11:17.83ID:4S5DOub9
[:-1] ←顔っぽい
0072デフォルトの名無しさん2014/06/19(木) 23:23:18.13ID:qa8nBQ3x
>>48
入力された値の総和を求めるプログラムじゃなくて固定値なんだから・・・

1から10なら55、1から100なら5050,1から1000なら500500なわけだ
つまり、ゼロの数をxとして
5を出力、改行せずにゼロをx-1回出力、5を出力、改行せずにゼロをx-1回出力、改行
ってな感じでやったら石投げられるかなwww

ttp://codepad.org/G7rWZhu4
0073デフォルトの名無しさん2014/06/19(木) 23:39:40.48ID:2ortrccs
>>72
その結果あってるのか?
49999999999999999136838789195927991586198914377904661392885735751680000000000000000000000000000000000000000000000000000000000000000000
0074デフォルトの名無しさん2014/06/19(木) 23:45:09.27ID:7NaVp+xv
>>48
> 言語に実装された和を求める為の関数やライブラリの使用は禁止とする
足し算から定義するか・・・そのためにまず自然数から定義してっと・・・
0075デフォルトの名無しさん2014/06/19(木) 23:54:33.92ID:qa8nBQ3x
>>73
その怪しい解をおかしいと思わないあなたが心配です。。。
0076デフォルトの名無しさん2014/06/20(金) 00:02:20.04ID:MNvGdz/i
例えば
(10000+1)*10000/2
=(10000+1)*5000
=10000*5000 + 5000
だからな。
0077デフォルトの名無しさん2014/06/20(金) 00:04:13.95ID:rmN2sG+2
>>48 bc
変な改行になってしまうから勝手に桁を減らした
http://ideone.com/JI1T1W
0078デフォルトの名無しさん2014/06/20(金) 00:13:10.06ID:rNGAsf/H
>>48は自然数の和の公式でいけるんじゃないの?
((10000000000000000000000000000000000000000000000000000000000000000000)+(10000000000000000000000000000000000000000000000000000000000000000001))/2
0079デフォルトの名無しさん2014/06/20(金) 00:13:36.94ID:rNGAsf/H
間違えた
((10000000000000000000000000000000000000000000000000000000000000000000)*(10000000000000000000000000000000000000000000000000000000000000000001))/2
0080デフォルトの名無しさん2014/06/20(金) 00:14:34.33ID:rNGAsf/H
1〜nまでの和は n*(n+1)/2
0081デフォルトの名無しさん2014/06/20(金) 00:35:34.20ID:eyF0lSTD
お題:0から9のうち8種類の数字を使って4桁の10進数を2個つくり、その積をとると
4桁の2個の数に使用した8種類の数字はひとつも現れなかった。
この4桁の2個の10進数を求める。
0082デフォルトの名無しさん2014/06/20(金) 00:40:46.54ID:HuhJSpav
既出
0083デフォルトの名無しさん2014/06/20(金) 00:41:28.00ID:HuhJSpav
>>82
>>78-80
0084デフォルトの名無しさん2014/06/20(金) 01:28:45.54ID:G5yuErw/
>>81
結構重いなぁ。
0085デフォルトの名無しさん2014/06/20(金) 01:39:12.16ID:G5yuErw/
>>81
サンプルプリーズ。
0086デフォルトの名無しさん2014/06/20(金) 01:51:48.40ID:fqUiErnm
>>81
確認だけど積は2種類の数字からなるってこと?
0087デフォルトの名無しさん2014/06/20(金) 02:17:34.18ID:MNvGdz/i
そういうことになるな。
4つ+4つを選んで、掛け算したあとの下位1桁目のあり得るパターンから探してくとかか?
0088デフォルトの名無しさん2014/06/20(金) 02:33:39.39ID:ZcO8mb2F
javascriptでfizz buzzを書け
禁止ワード: false true if % !
0089デフォルトの名無しさん2014/06/20(金) 02:46:06.40ID:G5yuErw/
>>81
http://ideone.com/6IAX6X
ほぼC。ideonはえー。うちで計算したら2時間くらいかかったんだが。
そこはかとなくバグってるがキニシナイ。
6712*5049=33888888
5132*867=4449444
143*5796=828828
1924*357=686868
1274*539=686686
5796*143=828828
357*1924=686868
457*2869=1311133
867*5132=4449444
539*1274=686686
5049*6712=33888888
2869*457=1311133
0090デフォルトの名無しさん2014/06/20(金) 03:00:01.61ID:C6Xti4O4
下2桁同士の掛け算で積の下2桁も決まるから
そこで異なる数字が出たら上2桁を縛れる
0091デフォルトの名無しさん2014/06/20(金) 03:06:18.32ID:C6Xti4O4
ちなみに下一桁は
奇奇・偶偶がそれぞれ3通り
奇偶が4*4の16通り 計22通りだと思う

>>89
つまり最終的に1組しかないのね
0092デフォルトの名無しさん2014/06/20(金) 03:13:32.41ID:G5yuErw/
>>91
俺、なんか間違ってる?
余計な計算してるだけだったら、解説頼む。
4桁*4桁はそういえば一組か。
0もちゃんと扱えないとなーと思って3ケタも混ぜたんだが。
0093デフォルトの名無しさん2014/06/20(金) 03:14:52.47ID:09C2glzp
力技C
http://ideone.com/kFMnzH

celeronM1.86GHzで0.2sくらいで終わった
0094デフォルトの名無しさん2014/06/20(金) 03:29:53.62ID:G5yuErw/
>>93
超速いな。ふむふむ・・・。Orz
0095デフォルトの名無しさん2014/06/20(金) 05:25:41.18ID:09C2glzp
>>93
60行目
> for (a[4] = 1; a[4] < 10; a[4]++) { if (check(a, 4)) continue;
        ↓
> for (a[4] = 5; a[4] < 10; a[4]++) { if (check(a, 4)) continue;

と変更したら、1.5倍くらい速くなった
0096デフォルトの名無しさん2014/06/20(金) 05:27:48.00ID:09C2glzp
ああ、1789 x 2345 が答えの可能性もあるので>>95は間違い
0097デフォルトの名無しさん2014/06/20(金) 06:59:37.63ID:Xn/NpwsD
>>89
うちのi7では0.76s
exeやvectorがL3キャッシュに乗ると滅茶苦茶速くなるんじゃね

>>93
こちらは31ms
chrono便利だな
0098デフォルトの名無しさん2014/06/20(金) 08:38:36.31ID:+x3ndtqK
>>95
for (a[4] = a[0]+1; a[4] < 10; a[4]++) { if (check(a, 4)) continue;

で良いと思う。
aa<bbのチェックが不要になる。
0099デフォルトの名無しさん2014/06/20(金) 09:41:40.85ID:2EQ+l0AP
◎2chスレッド勢いランキングサイトリスト◎

★+ニュース板
・ 2NN (推奨サイト)
・ 2chTimes
★+ニュース板新着
・ 2NN新着
・ Headline BBY
・ unker Headline
★+ニュース板その他
・ Desktop2ch
・ 記者別一覧
★全板
・ 全板縦断勢いランキング (推奨サイト)
・ スレッドランキング総合ランキング
・ ログ速
★全板実況込み
・ 2勢 (推奨サイト)
・ READ2CH
・ i-ikioi

※ 要タイトル検索
※ 2chブラウザ併用推奨
0100デフォルトの名無しさん2014/06/20(金) 12:42:12.58ID:C6Xti4O4
>>89 ってもしかして最適化一切してないんじゃね?
Debugのままで実行してたりとか
0101デフォルトの名無しさん2014/06/20(金) 18:20:40.40ID:QPzcx6bM
?.#########.########
......#####.....####
..##.######.########
#.##.###.....##...##
#....###.##......###
#.##.###.##.##?#####
####.....#.......###
##########..########

左上の?の位置から右下の?までの最短距離と再長距離を求めよ
0102デフォルトの名無しさん2014/06/20(金) 18:32:03.52ID:QPzcx6bM
訂正

?.#########.########
......#####.....####
..##..#####.###.####
#.##.###.....##...##
#....###.##.......##
#.##.###.##.##?##.##
#........#.........#
##########..####...#

左上の?の位置から右下の?までの最短距離と再長距離を求めよ
0103デフォルトの名無しさん2014/06/20(金) 20:52:46.31ID:mZs9ZBuX
>>91は途中式を書き下していないため、減点。
0104デフォルトの名無しさん2014/06/20(金) 21:28:13.37ID:kSpxa/vA
最短 距離25

?1#########.########
.2345.#####.....####
..##6.#####.###.####
#.##7###78901##...##
#...8###6##.234...##
#.##9###5##.##?##.##
#...01234#.........#
##########..####...#

最大 距離61

?.#########.########
145678#####23456####
23##09#####1###7####
#.##1###7890.##812##
#5432###6##7890903##
#6##.###5##6##?##4##
#78901234#.54321056#
##########..####987#
0105デフォルトの名無しさん2014/06/20(金) 21:37:22.86ID:kSpxa/vA
http://codepad.org/OhyX0hKk
0106デフォルトの名無しさん2014/06/20(金) 21:52:18.47ID:09C2glzp
>>98
なるほど、そうですね。

>>93の http://ideone.com/kFMnzH に以下の 4変更
 ・23行目 〜 keisan();の aa > bb を無くした
 ・56行目 〜
    for (a[0] = 1; a[0] < 10; a[0]++) {
  → for (a[0] = 1; a[0] < 9; a[0]++) {
 ・60行目 〜
    for (a[4] = 1; a[4] < 10; a[4]++) { if (check(a, 4)) continue;
  → for (a[4] = a[0] + 1; a[4] < 10; a[4]++) { if (check(a, 4)) continue;
 ・64行目 〜 switch の判定を無くした
を加え、更にアルゴリズムによる速度差計測のためを考え gcc -O0 の
最適化なしで比較したら 410ms → 227ms (8割増) になりました。
http://ideone.com/bYzWM9
0107デフォルトの名無しさん2014/06/20(金) 22:10:06.39ID:G5yuErw/
>>100
VCリリースです。しかし、CPUがATOMだ!!Orz
0108デフォルトの名無しさん2014/06/21(土) 01:19:30.31ID:oxWL7iix
それで2時間かかるの?
うちだとlinuxで、g++コンパイラに最適化の-O3とC++11コンパイルするための
-std=c++11オプションを付けただけだけど、3.6秒で計算終わる。-O0でも12.0秒。
0109デフォルトの名無しさん2014/06/21(土) 02:13:08.89ID:Qlvgm7Ik
え?アトムで??
いや、アトムBTだからさ、CORE2の7割しかシングル性能でないんですよ。
今の最新と比べるべくもない。環境はVSドノーマルなんだけどね。
0110デフォルトの名無しさん2014/06/21(土) 02:56:30.10ID:oxWL7iix
ああ、ごめん。celeronM1.86GHzなので同じくらいだと思って
0111デフォルトの名無しさん2014/06/21(土) 03:52:49.10ID:Qlvgm7Ik
どんなもんやろうね。
ブーストして2.4Ghzくらいまで上がるけどアーキテクチャがあれ何でね。
コンパイラの最適化もこっち向けじゃないのもあると思う。むー。
0112デフォルトの名無しさん2014/06/21(土) 05:42:11.03ID:/fMJIWig
>>81 J
f =: 3 : 0
a =. ~.'* '(4 5)}"1(i.!10) A.'0123456789'
a =. a #~ *./"1 '0' ~: 0 6 {"1 a
a =. a #~ (-:(-.":@".))"1 a
~. /:~"1 ". ' '4}"1 a
)

f''
5049 6712
0113デフォルトの名無しさん2014/06/21(土) 08:44:10.71ID:osxplvy7
>>81
https://ideone.com/J2NBtX

>>112
なるほどね〜。
0114デフォルトの名無しさん2014/06/21(土) 18:36:45.72ID:/fMJIWig
お題:文字列Aを1回以上繰り返した文字列Bが与えられたとき
文字列Aを求める。ただしAの候補が複数ある場合は最短のものとする。
例
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -> a
123412312341231234123123412312341231234123 -> 1234123
oxoxoxoxoxoxoxoxxoxoxoxoxoxoxoxoxx -> oxoxoxoxoxoxoxoxx
0115デフォルトの名無しさん2014/06/21(土) 18:53:17.85ID:JBvb3h4t
>>114
Python3
https://ideone.com/i9h3eA
0116デフォルトの名無しさん2014/06/21(土) 19:11:07.28ID:JBvb3h4t
繰り返しがなかった時に元の文字列を返すように修正した
0117デフォルトの名無しさん2014/06/21(土) 20:00:18.20ID:FX+q3pzw
D
http://dpaste.dzfl.pl/c6e20183386e
逆に、対象文字列を繰り返したものと全体とを比較してみる
0118デフォルトの名無しさん2014/06/21(土) 20:59:37.62ID:5st0+XMl
>>114 Perl
http://ideone.com/fQ6iLB
0119デフォルトの名無しさん2014/06/21(土) 22:12:20.68ID:a//TlJVm
>>114
ttps://ideone.com/gyK5k5
0120デフォルトの名無しさん2014/06/21(土) 22:52:10.32ID:FX+q3pzw
>>119
func("axaxa") // repeat = ax

strlen(a) == (int)(a - b)でないとaとbが重なる
http://ideone.com/OHLuSr
0121デフォルトの名無しさん2014/06/21(土) 22:58:10.07ID:FX+q3pzw
いや、そもそも2回だけ連続してる場合しか考慮されてないな……
0122デフォルトの名無しさん2014/06/21(土) 23:07:07.47ID:FX+q3pzw
連投してすまん

正しくはこうかな、ドヤ顔で間違った指摘して恥ずかしいです……
http://ideone.com/jWkZrz
0123デフォルトの名無しさん2014/06/21(土) 23:34:52.08ID:1rwRXb7k
>>114 Python
>>119のまねをいたしました

def f114(s):
  for i in range(1,len(s)):
    if s[:len(s)-i] == s[i:]:
      break
  print "{} -> {}".format(s, s[:i])

q = """
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
123412312341231234123123412312341231234123
oxoxoxoxoxoxoxoxxoxoxoxoxoxoxoxoxx
""".split()
for s in q:
  f114(s)
0124デフォルトの名無しさん2014/06/21(土) 23:36:28.88ID:a//TlJVm
>>119
>>114
文字列長の因数の長さ(例:24文字の場合、1,2,3,4,6,8,12)で比較する方法に変更。
ttps://ideone.com/f4DiSl
0125デフォルトの名無しさん2014/06/22(日) 02:28:12.07ID:qas3Gn4R
>>114
http://ideone.com/jmDmeB
ほぼC。環境変わってちょっと頭がおバカになってしまったので問題を解くことを最優先した。
あってるかな?でもいろいろバグがあると思う。とりあえず、動いてるようにみえるだけと・・・。Orz
もしかしたらこの条件なら尻尾から検索した方が効率いいかもなー???と思った。
0126デフォルトの名無しさん2014/06/22(日) 04:15:33.61ID:EYYBBLS5
>>114
なんの工夫もないHaskell http://ideone.com/kSsFHC
0127デフォルトの名無しさん2014/06/22(日) 08:50:48.27ID:fDsJnYZI
>>114 Io
f := method(s,
a := s size
for(i, 1, a - 1,
if(a % i == 0 and (s slice(0, a - i)) == s slice(i),
return s slice(0, i)
)
)
s
)

Io> f("abab"repeated(100000))
==> ab
Io> f("1234123")
==> 1234123
Io> d:=("1234123"repeated(10000).."x");d==f(d)
==> true
0128デフォルトの名無しさん2014/06/22(日) 18:47:42.88ID:t7qk0ITT
>>114 Prolog

'文字列Aを1回以上繰り返した文字列Bが与えられたとき文字列Aを求める。
ただしAの候補が複数ある場合は最短のものとする。'('',_) :- !.
'文字列Aを1回以上繰り返した文字列Bが与えられたとき文字列Aを求める。
ただしAの候補が複数ある場合は最短のものとする。'(_文字列B,_文字列A) :-
    先頭からの文字列パターン(_文字列B,_文字列A,_残り文字列),
    '文字列Aを1回以上繰り返した文字列Bが与えられたとき文字列Aを求める。
ただしAの候補が複数ある場合は最短のものとする。'(_残り文字列,_文字列A),!.


先頭からの文字列パターン(_文字列,_先頭からの文字列パターン,_残り文字列) :-
    sub_atom(_文字列,0,Len,_残り文字数,_先頭からの文字列パターン),
    \+(Len = 0),
    sub_atom(_文字列,_,_残り文字数,0,_残り文字列).
0129デフォルトの名無しさん2014/06/22(日) 19:45:04.68ID:8dyb2xfW
Prologの宿題片付けます 第二編
http://peace.2ch.net/test/read.cgi/tech/1350893602/
0130デフォルトの名無しさん2014/06/22(日) 19:53:33.54ID:r6hyP6ZK
>>129
ここはどんなバットで打ってもいいのです
0131デフォルトの名無しさん2014/06/23(月) 13:34:27.38ID:BsRgtYHO
>>128 が解答ではなく出題に見えるとな
0132デフォルトの名無しさん2014/06/23(月) 19:19:11.14ID:Utaqz1fC
お題:ふたつの整数が与えられたとき、数字が一致している桁の個数を求める。
例
110, 119 -> 2
1234, 214 -> 2
567, 23 -> 0
0133デフォルトの名無しさん2014/06/23(月) 20:34:26.27ID:+5UJW/yX
>>132
例2がよくわかりません。
0134デフォルトの名無しさん2014/06/23(月) 21:39:08.83ID:/w+ap15x
>>132
ttp://ideone.com/YRddoZ
0135デフォルトの名無しさん2014/06/23(月) 23:14:11.51ID:LKXrXOru
while (a && b) でええやん
0136デフォルトの名無しさん2014/06/23(月) 23:33:47.36ID:Yz5J3/fn
>>132 Python

def func(*args):
  ss = [reversed(str(d)) for d in args]
  n = sum(1 for p in zip(*ss) if len(set(p)) == 1)
  print "{} -> {}".format(str(args).strip("()"), n)

func(110, 119)
func(1234, 214)
func(567, 23)
0137デフォルトの名無しさん2014/06/24(火) 06:48:21.25ID:3fEyMdRl
>>132 Perl
http://ideone.com/e5FYS9
0138デフォルトの名無しさん2014/06/24(火) 07:50:21.11ID:+d9rugo5
>>132 Prolog

'ふたつの整数が与えられたとき、数字が一致している桁の個数を求める。'(_数_1,_数_2,_数字が一致している桁の個数) :-
    ふたつの整数をふたつの数字文字列に変換(_数_1,_数_2,_数字文字列_1,_数字文字列_2),
    '数字が一致している桁の個数を求める。'(_数字文字列_1,_数字文字列_2,_数字が一致している桁の個数).

ふたつの整数をふたつの数字文字列に変換(_数_1,_数_2,_数字文字列_1,_数字文字列_2) :-
    atom_number(_数文字列_1,_数_1),
    atom_number(_数文字列_2,_数_2).

'数字が一致している桁の個数を求める。'(_数字文字列_1,_数字文字列_2,_数字が一致している桁の個数) :-
    '個数を求める。'('数字が一致している桁の'(_数字文字列_1,_数字文字列_2),_数字が一致している桁の個数).

'数字が一致している桁の'(_数字文字列_1,_数字文字列_2) :-
    sub_atom(_数字文字列_1,_,1,_残り文字数,_数字),
    sub_atom(_数字文字列_2,_,1,_残り文字数,_数字).

'個数を求める。'(P,_個数) :-
    findall(1,P,L),
    length(L,_個数).
01391382014/06/24(火) 08:10:25.14ID:+d9rugo5
>>138
% 間違えた。

ふたつの整数をふたつの数字文字列に変換(_数_1,_数_2,_数字文字列_1,_数字文字列_2) :-
    atom_number(_数字文字列_1,_数_1),
    atom_number(_数字文字列_2,_数_2).

% でした。第一引数の _数文字列_1 と _数文字列_2 は間違いです。
0140デフォルトの名無しさん2014/06/24(火) 09:25:25.06ID:+d9rugo5
>>132 Prolog もう一箇所間違っていたから、書き直しさせてください。

'ふたつの整数が与えられたとき、数字が一致している桁の個数を求める。'(_数_1,_数_2,_数字が一致している桁の個数) :-
    ふたつの整数をふたつの数字文字列に変換(_数_1,_数_2,_数字文字列_1,_数字文字列_2),
    '数字が一致している桁の個数を求める。'(_数字文字列_1,_数字文字列_2,_数字が一致している桁の個数).

ふたつの整数をふたつの数字文字列に変換(_数_1,_数_2,_数字文字列_1,_数字文字列_2) :-
    atom_number(_数字文字列_1,_数_1),
    atom_number(_数字文字列_2,_数_2).

'数字が一致している桁の個数を求める。'(_数字文字列_1,_数字文字列_2,_数字が一致している桁の個数) :-
    '個数を求める。'('数字が一致している桁の'(_数字文字列_1,_数字文字列_2),_数字が一致している桁の個数).

'数字が一致している桁の'(_数字文字列_1,_数字文字列_2) :-
    sub_atom(_数字文字列_1,_,1,_残り文字数,_数字),
    sub_atom(_数字文字列_2,_,1,_残り文字数,_数字),
    \+(_数字 = '-').

'個数を求める。'(P,_個数) :-
    findall(1,P,L),
    length(L,_個数).
0141デフォルトの名無しさん2014/06/24(火) 10:10:50.59ID:AAHBTYvg
hit & brow 思い出すな
0142デフォルトの名無しさん2014/06/24(火) 12:04:35.52ID:prMa5jfi
>>132 J
f =: [: +/ [: =/ ":@,:

110 f 119
2
1234 f 214
2
2142112322 f 1111111111
3
0143デフォルトの名無しさん2014/06/24(火) 18:23:54.57ID:prMa5jfi
>>132 Io
f:=method(a,b,if(a==0 or b==0,if(a%10==b%10,1,0)+f(a/10|0,b/10|0)))

Io> f(110,119)
==> 2
Io> f(1234,214)
==> 2
Io> f(567,12)
==> 0
0144デフォルトの名無しさん2014/06/24(火) 18:28:07.01ID:prMa5jfi
>>143
間違えました。訂正します。
f:=method(a,b,if(a==0 or b==0,0,if(a%10==b%10,1,0)+f(a/10|0,b/10|0)))
0145デフォルトの名無しさん2014/06/24(火) 18:40:34.83ID:nNYqUb+/
>>132
ttp://ideone.com/TItId9
ほぼC。問題があいまいなので変な仕様で作ってみた。
言い分は満たしてるはず。えぇ、めんどくさかったんですよ。
ほとんど標準関数に投げました。
0146デフォルトの名無しさん2014/06/24(火) 18:44:13.79ID:6pATSNEw
+?++++++?+++++++?+++
+++?++?+++++++?++?++
+++++++?++++?+++++++
?++?+++++++???++++?+
+?++++++?++++?++++++
++++?+++++?+++++?++?
+++?+++++?++?++++++?
+?+++?+++++?+++?++++
++++?+++++?+++++++++
?+?++++?+++++?++++?+

同じ道を通らずに全ての ? を通過する最短経路を求めよ
開始地点は+ 終了地点は?であればスタートとゴールは自由に決めて良い
0147デフォルトの名無しさん2014/06/24(火) 18:47:36.73ID:6pATSNEw
20分以内に解ければSランク
勉強家で最速7分で解け他人あり
0148デフォルトの名無しさん2014/06/24(火) 19:05:53.33ID:nNYqUb+/
>>145を書き直した。
ttp://ideone.com/KOPHTa
あってるかなー??
0149デフォルトの名無しさん2014/06/24(火) 19:09:22.59ID:prMa5jfi
>>145
たとえば>>132の問題文はどう書けばあいまいじゃないの?
0150デフォルトの名無しさん2014/06/24(火) 19:12:37.57ID:nNYqUb+/
>>146
空白が壁?
0151デフォルトの名無しさん2014/06/24(火) 19:17:32.84ID:miiJpTHR
空白は壁
0152デフォルトの名無しさん2014/06/24(火) 19:21:36.38ID:nNYqUb+/
>>149
たとえばねー。

お題:ふたつの整数が与えられたとき、数字が一致している桁の個数を求める。
ただし、
・不同順ok
・2つの整数の桁数は少ない方に合わせる。合わせた時の多い方の末尾は削除される。
・同じ数字が続く場合の処理は、ほげほげ。(書いてないから知らんよ。)
等々。
例
110, 119 -> 2
1234, 214 -> 2
567, 23 -> 0

といった感じで、但し書きをすることで条件をちゃんと絞ってほしいんだよ。
こういうのは、自己参照ちゃんとできないとできないんだけどね。
0153デフォルトの名無しさん2014/06/24(火) 19:22:31.48ID:nNYqUb+/
>>151
了解。
0154デフォルトの名無しさん2014/06/24(火) 19:24:55.48ID:nNYqUb+/
もしくは、テストケースを凝ったものにして、こけやすいデータがほしい。
0155デフォルトの名無しさん2014/06/24(火) 19:28:28.25ID:prMa5jfi
>>152
ひええ
凡人にはまねできません
0156デフォルトの名無しさん2014/06/24(火) 19:28:49.85ID:+d9rugo5
>>149
整数だから、剰余の絶対値でないとうまく行かない筈だけれど、例だけ見ていると、そんなことが窺えないということかな。
0157デフォルトの名無しさん2014/06/24(火) 19:40:13.89ID:nNYqUb+/
>>155
じゃー、マネしなくてもいいけど、バグってても出題者の自己責任ね。
0158デフォルトの名無しさん2014/06/24(火) 19:44:15.76ID:+d9rugo5
>>157
3つの例で桁の定義問題は解決しているように思えるが。
0159デフォルトの名無しさん2014/06/24(火) 19:46:52.99ID:nNYqUb+/
>>146
ttp://ideone.com/RFgqBx
マップこれであってるの?
一通のはずが、小島がいくつか見られるが。
そういう場合どうするの?
0160デフォルトの名無しさん2014/06/24(火) 19:50:30.27ID:nNYqUb+/
>>158
俺バカだからわからなかったんだよ。
質問したけど無視されたし。
コード書き始めて割り切っていってやっと理解したような気がしたんだけどねぇ。
設計時さっぱりだった。
0161デフォルトの名無しさん2014/06/24(火) 20:10:18.97ID:nNYqUb+/
こうやって馬鹿の相手はしてられんと逃げられる。Orz
0162デフォルトの名無しさん2014/06/24(火) 20:12:21.98ID:ESPrt6pD
>>132
@Mathematica

numberOfAgreement[n1_,n2_]:=Module[{d1,d2,maxlen},

  {d1,d2}={n1,n2}//
    Map[IntegerDigits,#]&;

  maxlen={d1,d2}//
    Map[Length,#]&//
    Max;

  {d1,d2}//
    Map[PadLeft[#,maxlen]&,#]&//
    MapThread[List,#]&//
    Map[If[#[[1]]==#[[2]],1,0]&,#]&//
    Total
];
0163デフォルトの名無しさん2014/06/24(火) 20:38:49.47ID:nNYqUb+/
>>158
俺、>>148で2パターン書いたけど、どっちが正解っていえるか?または間違いを指摘できるか?
0164 ◆0qAv26otVI 2014/06/24(火) 22:21:28.24ID:x7MmALRG
333,233 -> 3 がわかりません。
11,110 -> 2 とかなら、ああ左から比較するんだなとか。
0165デフォルトの名無しさん2014/06/24(火) 22:25:42.63ID:nNYqUb+/
>>164
でしょ。情報が圧倒的に足りない。
こういう仕様のいざこざはむっかしから絶えないんだよね。
0166デフォルトの名無しさん2014/06/24(火) 22:34:58.79ID:6LnPDmO+
「桁」って言ってるから、必要十分だと思う。
それが数学というより一般的な「桁」という用語。
何「番目」とかなら、左からとか右からという話になる。
何も言わずに回答している人たちは当然桁という言葉を当然のように踏まえて受け取っている。
0167デフォルトの名無しさん2014/06/24(火) 22:37:13.63ID:nNYqUb+/
>>166
じゃー、例2の解法を言葉で説明してほしいなぁ。できたら全力で誤る。
0168デフォルトの名無しさん2014/06/24(火) 22:39:59.03ID:6LnPDmO+
1桁目と3桁目が一致しているから2
0169デフォルトの名無しさん2014/06/24(火) 22:43:56.45ID:nNYqUb+/
1桁目は、1と2で、3桁目は3と1じゃないか?それとも二個目の数字の前に一桁あるのか?
0170デフォルトの名無しさん2014/06/24(火) 22:47:28.09ID:UpeRHjTe
>>159
空白を入れてるのはなに?子島とは?
0171デフォルトの名無しさん2014/06/24(火) 22:49:53.79ID:nNYqUb+/
>>170
空白は壁って言ってたから、末尾はデータ調整のために空白入れました。
それ以外はこのスレからのコピペです。
0172デフォルトの名無しさん2014/06/24(火) 22:50:41.71ID:6LnPDmO+
>>169
国語力に難があるようだね
0173デフォルトの名無しさん2014/06/24(火) 22:56:02.69ID:nNYqUb+/
>>172
俺には君の認識能力が特殊に見えるよ。
0174 ◆0qAv26otVI 2014/06/24(火) 23:02:03.29ID:x7MmALRG
1234,214 -> 2
169>>1桁目は、1と2で、3桁目は3と4じゃないか?それとも二個目の数字の前に一桁あるのか?
合ってるか?
0175デフォルトの名無しさん2014/06/24(火) 23:04:53.29ID:6LnPDmO+
>>174
大間違い
0176デフォルトの名無しさん2014/06/24(火) 23:05:33.48ID:+d9rugo5
>>173 多分 >>132 のコピーをし間違えているのだと思うけれど、

> お題:ふたつの整数が与えられたとき、数字が一致している桁の個数を求める。
> 例
> 110, 119 -> 2
> 1234, 214 -> 2
> 567, 23 -> 0

例の2

1234
214
^ ^
| |
| 1の 桁
|
100の桁

この二桁だけが同じ数字だから -> 2
0177デフォルトの名無しさん2014/06/24(火) 23:09:42.24ID:nNYqUb+/
1234
214
ちがってるか?
01781762014/06/24(火) 23:11:22.97ID:+d9rugo5
>>176
スペースを入れ損なった。失敗。すみません、無視してください。
0179デフォルトの名無しさん2014/06/24(火) 23:12:06.14ID:WID+irzQ
自分も>>132わかりにくいと思った
こういう場合もっと例が何パターンかないとね
0180デフォルトの名無しさん2014/06/24(火) 23:13:47.21ID:nNYqUb+/
>>176
N番目まで厳密に規定してなくて並びが同じものを探す話?
0181 ◆0qAv26otVI 2014/06/24(火) 23:14:13.24ID:x7MmALRG
1234.
 214.
1桁目を左から数えないという命題が俺には見つからん。
0182デフォルトの名無しさん2014/06/24(火) 23:16:41.04ID:nNYqUb+/
あ!やーっと理解した。
これ、分割した数字を右から左に精査するんか。
0183デフォルトの名無しさん2014/06/24(火) 23:17:24.35ID:+d9rugo5
>>177
例2が意味するところは、
1) 1の桁と100の桁が4と2で揃っているから-->2
2) 上位桁から揃えるルールではない。それだと-->0 となるはず。
3) 桁の小さい方の整数を自由に移動できるルールだとしたら答えは 0または2になるが、
 -->2と答えているから、自由に移動できるルールではない。
0184デフォルトの名無しさん2014/06/24(火) 23:20:10.30ID:hFZ0LSQg
つ位
0185デフォルトの名無しさん2014/06/24(火) 23:23:51.66ID:9vAhTnrq
1桁目=一の位
2桁目=十の位
3桁目=百の位
0186デフォルトの名無しさん2014/06/24(火) 23:26:16.35ID:nNYqUb+/
PG脳だから、1234分割したら1がIndex=0だわ。
これはすまんかった。算数だったな。根本的に失念していた。
俺のミスだわ。本当にごめんなさい。

しばらく反省するために書くのやめるか。
なんてこった。こんな基本的なこと忘れてるなんて。あいたたたたた。

どう誤ればいいのかよくわからんけど、ほんとにすまんかった。
0187デフォルトの名無しさん2014/06/24(火) 23:28:49.66ID:+d9rugo5
>>185
そうですね。位というのだった。
0188デフォルトの名無しさん2014/06/24(火) 23:29:46.27ID:nNYqUb+/
ってわけで、コードはめちゃくちゃ間違ってマース。
なぜ動いてるのかもわかりませーん。たまたま答えだけ合わせました。
ってことになるな。アー怖い。
0189デフォルトの名無しさん2014/06/24(火) 23:30:51.58ID:+d9rugo5
それはともかく、

-1112,110 などがほとんど解答は上手く行かないのではないか。
0190デフォルトの名無しさん2014/06/24(火) 23:31:51.46ID:WID+irzQ
誤る→謝る
01911892014/06/24(火) 23:32:35.09ID:+d9rugo5
「ほとんどの解答は」ですね。
0192デフォルトの名無しさん2014/06/24(火) 23:33:27.52ID:TXJiobF4
>>179
そうかー?むしろ例は必要十分じゃね
>>132は問題文にちょっと不備があるけど、例で補えてると思うけどな

「数字が一致している桁の個数を求める」じゃなくて
「同じ位同士の数字を比較し、一致している個数を求める」
とかだったら例がなくても解けそう。
0193デフォルトの名無しさん2014/06/24(火) 23:35:30.49ID:nNYqUb+/
>>189
俺のuint64_tなので、裏返って何億とかの数字になっちゃうー。
0194デフォルトの名無しさん2014/06/24(火) 23:36:32.98ID:6LnPDmO+
>>186
今回の件で、どちらかというと認識が特殊な状態に陥ってたのは君の方だったね。
(相手が特殊と考えるより自分が先に特殊ではないのかと疑う)謙虚な態度でいた方が、一旦陥った罠から脱出はしやすいと思う。

IQテストとかだと、君のようにこういう「桁」という言葉の常識に囚われない見方も、大切ではある。
0195デフォルトの名無しさん2014/06/24(火) 23:42:11.14ID:X3HExdh5
23:45に投稿するので構えてて
一番早く正解できるのは誰かな
0196デフォルトの名無しさん2014/06/24(火) 23:46:10.56ID:nNYqUb+/
>>194
うん、ごめんね。
プログラムやってると、常識がうっとおしくなって忘却しちゃったんだよ。
それでうまくいってたしなぁ。うーん。こんな罠が・・・。Orz
気を付けてたはずなのに。うーむ。

いい経験になった。あいたたたたた・・・。
0197デフォルトの名無しさん2014/06/24(火) 23:49:11.40ID:X3HExdh5
アルファベットの小文字aからzで成り立つS(0≦S≦100)が標準入力から与えられる。
例に沿って連続する文字をカウントするプログラムを作成せよ。

出力の最後に改行を挿入すること。
標準入力から以下の形式で与えられる。
S

例)
In:
aaaaaaaaaabbbbbbbbbbbbcccccccddddddddddeeeeeeefffffffffghiiiiiiiii

Out:
a10b12c7d10e7f9ghi9

In:

Out:
0
0198デフォルトの名無しさん2014/06/24(火) 23:49:41.62ID:+d9rugo5
さらにいうと、
>>132は数字の比較を求めていて、

-123,-3423 の場合、剰余数が -2 と -2、-3 と -3 で --> 2 となるのでも間違ってはいないが、

何か仕様と遠い気がする。 -2 と 数字の'2'は同じものではない。
0199デフォルトの名無しさん2014/06/24(火) 23:50:24.19ID:X3HExdh5
In:
abcddd

Out:
abcd3
0200デフォルトの名無しさん2014/06/24(火) 23:51:06.51ID:X3HExdh5
似た問題がAtCoderでも出たから余裕かな
0201デフォルトの名無しさん2014/06/25(水) 00:11:17.61ID:H0BLkDsi
>>197
なんか不格好になっちゃったw
C
http://ideone.com/jtFVPF
0202デフォルトの名無しさん2014/06/25(水) 00:20:29.98ID:B1Ok+FAF
>>197
http://ideone.com/B0eki7
ほぼC。2番目か。残念。あってるかな?
結構ヤケになって書いたので間違ってるかも。
さて、しばらくミュートします。みなさま、また逢う日まで!
0203デフォルトの名無しさん2014/06/25(水) 01:05:21.52ID:R/pd8eJN
第2問:2つの整数が与えられたとき、桁数が同じ場合を求める。 指数関数は使わないこと。
例:
110, 119 -> T
-110, -119 -> T
-110, 119 -> F
1234, 214 -> F
567, 23 -> F
567, -23 -> F
0204デフォルトの名無しさん2014/06/25(水) 01:52:18.87ID:WPdQrCl7
文字列としての長さと富豪の有無を確認するだけ
0205デフォルトの名無しさん2014/06/25(水) 04:22:41.38ID:/nsw1r0I
>>203
http://peace.2ch.net/test/read.cgi/tech/1313183984/757
0206デフォルトの名無しさん2014/06/25(水) 04:48:41.24ID:/nsw1r0I
>>197
http://peace.2ch.net/test/read.cgi/tech/1313183984/758
ideone の runtime error ってなんだろう?
0207デフォルトの名無しさん2014/06/25(水) 07:21:14.49ID:f3dQ4AsB
>>197 Prolog

'アルファベットの小文字aからzで成り立つS(0≦S≦100)が標準入力から与えられる。連続する文字をカウントする。出力の最後に改行を挿入すること。' :-
    write('In: '),read(_文字列),
    '連続する文字をカウントする'(_文字列,'',_出力文字列),
    writef('Out:\n%t\n',[_出力文字列]).

'連続する文字をカウントする'('','') :- !.
'連続する文字をカウントする'(_文字列,_出力文字列) :-
    文字列の先頭から同一文字を切り取る(_文字列,_連続文字,_連続文字数,_残り文字列),
    '連続する文字をカウントする'(_残り文字列,_残り出力文字列),
    atomic_list_concat([_連続文字,_連続文字数,_残り出力文字列],_出力文字列).

文字列の先頭から同一文字を切り取る(_文字列,_連続文字,_連続文字数,_残り文字列) :-
    sub_atom(_文字列,0,1,_,_連続文字),
    連続文字数と残り文字列を得る(_文字列,_連続文字,_連続文字数,_残り文字列).

連続文字数と残り文字列を得る(_文字列,_連続文字,_連続文字数,_残り文字列) :-
    sub_atom(_文字列,_連続文字数,1,_,_文字),
    \+(_連続文字 = _文字),
    sub_atom(_文字列,_連続文字数,_,0,_残り文字列),!.
連続文字数と残り文字列を得る(_文字列,_連続文字,_連続文字数,'') :-
    atom_length(_文字列,_連続文字数).
0208デフォルトの名無しさん2014/06/25(水) 07:33:17.91ID:5ZruJZzN
>>197
http://ideone.com/nftddV

>>203
http://ideone.com/NqH3JC
02092082014/06/25(水) 07:51:38.73ID:5ZruJZzN
訂正。

>>197 Perl
http://ideone.com/IAKmMX
0210デフォルトの名無しさん2014/06/25(水) 08:00:42.64ID:f3dQ4AsB
>>203 Prolog

'2つの整数が与えられたとき、桁数が同じ場合を求める。 指数関数は使わないこと。'(_整数_1,_整数_2) :-
    number_chars(_整数_1,_数字ならび_1),
    number_chars(_整数_2,_数字ならび_2),
    length(_数字ならび_1,_桁数),
    length(_数字ならび_2,_桁数).
0211デフォルトの名無しさん2014/06/25(水) 08:24:39.87ID:8w+cRTmX
>>197 Io
a := 0
c := 0
File standardInput foreach(v,
if(v != a,
write(if(c > 1, c, ""), v asCharacter)
c = 1
,
c = c + 1
)
a = v
)
c println
02121322014/06/25(水) 09:30:08.51ID:8w+cRTmX
負の数については考えていなかったので整数ではなく自然数に変えさせてください。
それから>>203は別の人の出題です。
0213デフォルトの名無しさん2014/06/25(水) 09:35:34.23ID:mgUMoqXV
>>203
ttp://ideone.com/GbaVHe
0214デフォルトの名無しさん2014/06/25(水) 12:27:10.04ID:8w+cRTmX
>>197 J
f=:[:;('1'-.~":)(L:0)@(~. (;"_1) (#/.)~)
echo f stdin''


f'aassd'
a2s2d
02152072014/06/25(水) 16:49:42.18ID:f3dQ4AsB
>>207 これ間違っていた。最初の述語の

    '連続する文字をカウントする'(_文字列,'',_出力文字列),

% これ3引数で呼び出しているが、これは第二引数を削除し忘れ。

'アルファベットの小文字aからzで成り立つS(0≦S≦100)が標準入力から与えられる。連続する文字をカウントする。出力の最後に改行を挿入すること。' :-
    write('In: '),read(_文字列),
    '連続する文字をカウントする'(_文字列,_出力文字列),
    writef('Out:\n%t\n',[_出力文字列]).

% が正しい。
0216デフォルトの名無しさん2014/06/25(水) 19:09:52.11ID:AAkwOzRQ
平面上に二つの長方形PとQが与えられた時に、
それらの共通部分の長方形を求めたいのですが、お手軽な方法はありますか?
P、Qは、以下のように4つの頂点座標が与えられているとして。
座標は整数値とします。
P12(x1p,y2p)    P22(x2p,y2p)
P11(x1p,y1p)    P21(x2p,y1p)

Q12(x1q,y2q)    Q22(x2q,y2q)
Q11(x1q,y1q)    Q21(x2q,y1q)
0217デフォルトの名無しさん2014/06/25(水) 19:15:34.66ID:G8i3M3G9
Blogopolisから学ぶ計算幾何
第9回 凸多角形の交差計算(前編)
http://gihyo.jp/dev/serial/01/geometry/0009


凸多角形の共通部分
http://www.prefield.com/algorithm/geometry/convex_intersect.html
0218デフォルトの名無しさん2014/06/25(水) 20:11:25.97ID:AAkwOzRQ
情報ありがとうございます。でもちょっと難しそうですね。
長方形の場合に限定して、誰かプログラム作ってください。
0219片山博文MZ悪魔崇拝 ◆T6xkBnTXz7B0 2014/06/25(水) 20:28:19.98ID:n7E3MpSB
bool is_rect_empty(const rect* rc)
{
return rc->x0 >= rc->x1 || rc->y0 >= rc->y1;
}

bool intersect_rect(rect *dst,const rect*src1,const rect*src2)
{
if (is_rect_empty(src1) || is_rect_empty(src2) ||
src1->x0 >= src2->x1 || src2->x0 >= src1->x1 ||
src1->y0 >= src2->y1 || src2->y0 >= src1->y1)
return false;

dst->x0 = max(src1->x0,src2->x0);
dst->x1 = min(src1->x1,src2->x1);
dst->y0 = max(src1->y0,src2->y0);
dst->y1 = min(src1->y1,src2->y1);
return true;
}
0220デフォルトの名無しさん2014/06/25(水) 20:36:42.95ID:QX6G9n4a
>>216
2つの線分(x1p, x2p)、(x1q, x2q)が重なる場合は、
(x1p - x2q) * (x2p - x1) < 0
となる。
例えば下図のとおり。
x1p----------x2p
    x1q---------------x2q

yについても同様に、重なり有無を判定出来る。
x, yの両方に重なりがあれば、重なる長方形エリアが有る、という事。

重なるエリアの座標の求め方。
まずxについては
(x1p, x2p, x1q, x2q)をソートした結果が(x1, x2, x3, x4)とすると
(x2, x3)が重なるエリアのx座標。

yも同様に求める。
0221デフォルトの名無しさん2014/06/25(水) 20:58:06.95ID:fIlVvDUl
>>197
@Mathematica

countSerialCharacter[s_]:=s//
  Characters//
  Tally//
  Flatten//
  Map[If[#==1,"",#]&,#]&//
  Map[ToString,#]&//
  StringJoin//
  #<>"\n"&;
0222デフォルトの名無しさん2014/06/25(水) 21:13:44.19ID:8w+cRTmX
>>217
関係ないけど「凸多角形」をみると凸という字は凸多角形じゃないと思ってしまう
0223デフォルトの名無しさん2014/06/25(水) 21:30:53.24ID:kfu/Y8iA
>>197 Python

import re, sys
s = "aaaaaaaaaabbbbbbbbbbbbcccccccddddddddddeeeeeeefffffffffghiiiiiiiii"
if len(sys.argv) >= 2:
  s = sys.argv[1]
print "".join(["{}{}".format(m.group(1),len(m.group(0))) for m in re.finditer(r"([a-z])\1*", s)])
0224デフォルトの名無しさん2014/06/26(木) 06:49:20.73ID:3bBuyKJI
お題:自然数nが偶数なら2で割り、奇数なら1を足して3を掛ける操作を値が3になるまで繰り返す。10000以下でこの操作の繰り返し回数が最大となる自然数nを求める。
0225デフォルトの名無しさん2014/06/26(木) 09:15:51.05ID:anyqRfvP
>>224 Common Lisp
(format t "~{n=~D, ~D steps.~}~%"
(loop for n from 1 upto 10000
collect (loop for count upfrom 0
for i = n then (if (evenp i) (/ i 2) (* (+ i 1) 3))
until (= i 3)
finally (return (list n count)))
into seq
finally (return (first (sort seq #'> :key #'second)))))

出力:
n=7421, 239 steps.
0226デフォルトの名無しさん2014/06/26(木) 09:47:24.38ID:jelhdoL6
>>219
有難うございました。
たいへん感謝しております。さっそく利用させて頂きます。
>>220
解説ありがとうございました。理解できました。
皆さん頭いいですね。
0227デフォルトの名無しさん2014/06/26(木) 11:06:46.24ID:j1I0ttpi
>>226
x0<=x1かつy0<=y1を前提にしていますのでご注意を。
0228デフォルトの名無しさん2014/06/26(木) 11:47:23.22ID:SC8QqvR3
≧とか≦ってかけよ機種依存文字じゃないんだぞ
0229デフォルトの名無しさん2014/06/26(木) 12:26:30.27ID:a5DVBYeG
実際のコーディングには使えないじゃんか
0230デフォルトの名無しさん2014/06/26(木) 12:43:55.13ID:b6/TNK68
>>224 Perl
http://ideone.com/1L8Dc1
0231デフォルトの名無しさん2014/06/26(木) 18:05:42.04ID:oxBW6fYk
>>220
これはひどい
0232デフォルトの名無しさん2014/06/26(木) 18:25:17.39ID:3bBuyKJI
>>231
ちゃんと理由も書かずにそんなことを言う方がひどい
0233デフォルトの名無しさん2014/06/26(木) 21:02:03.97ID:UtgvthMy
>>224
@Mathematica

g[nmax_]:=Module[{f},

  f[n_]:=NestWhileList[
    Which[
      EvenQ[#],#/2,
      True,3*(#+1)]&,
    n,
    #!=3&];

  nmax//
    Range[1,#]&//
    Map[{#,Length[f[#]]-1}&,#]&//
    Sort[#,#1[[2]] > #2[[2]]&]&//
    First//
    "n="<>ToString[#[[1]]]<>", "<>ToString[#[[2]]]<>" steps"&
];
0234デフォルトの名無しさん2014/06/27(金) 01:15:21.35ID:z83xp8mB
>>224
ttp://ideone.com/thhLQG
0235デフォルトの名無しさん2014/06/27(金) 06:05:09.55ID:6gnfhLnK
>>234
とってもわかりやすく美しいコーディングだな
0236デフォルトの名無しさん2014/06/27(金) 06:15:11.42ID:/tBLbKnn
オブジェクト指向は愚かな考え。
http://peace.2ch.net/test/read.cgi/tech/1393660194/
0237デフォルトの名無しさん2014/06/27(金) 08:13:07.91ID:6gnfhLnK
>>224
Scheme
ステップ数を求める関数を再帰にしてみた。
Schemeなので末尾再帰の最適化が効いているとはいえシンプルなループより20%ほど遅い
http://codepad.org/Kv6PMM5u
0238デフォルトの名無しさん2014/06/27(金) 08:13:34.08ID:6gnfhLnK
>>236
そんな君は硬直頭乙
0239デフォルトの名無しさん2014/06/27(金) 09:47:14.96ID:cYIjyZKJ
ここでは解が一個だから結果してよいのだが、その保証はどのように得るのかな。
0240デフォルトの名無しさん2014/06/27(金) 10:25:12.24ID:+d6mrCHp
>>237
すごくSchemeっぽくない
02412242014/06/27(金) 12:00:59.02ID:WBIkvaOn
>>239
>>224
複数解の可能性はありますね。
後追いですが、複数解の場合はnの最大値としてください。
0242デフォルトの名無しさん2014/06/27(金) 13:16:22.62ID:1+Sp/Gzh
>>240
まあ、超初心者だし
Schemeぽくかくとどうなるの?
0243デフォルトの名無しさん2014/06/27(金) 13:18:34.88ID:T6qhwk5c
S(1≦S≦10)
L(100≦L≦100)
標準入力から以下の形式で与えられる
S L

例を参考にoとxを配置せよ

例
3 2
oooxxx
oooxxx
oooxxx
xxxooo
xxxooo
xxxooo

2 3
ooxxoo
xxooxx
ooxxoo

1 1
o

2 1
oo
0244デフォルトの名無しさん2014/06/27(金) 13:19:07.70ID:T6qhwk5c
その言語で一番短いコードを書いた奴が勝ち
0245デフォルトの名無しさん2014/06/27(金) 13:40:40.34ID:1+Sp/Gzh
俺は反対
ていうか、俺は勉強中だし短く書かない
0246デフォルトの名無しさん2014/06/27(金) 14:03:08.81ID:TynlDK3k
考えてみたけど、「3 2」と「2 3」から発展させることが俺には無理だwww
0247デフォルトの名無しさん2014/06/27(金) 14:13:23.67ID:IIJLJhWZ
発展どころか規則がさっぱりわからない
「出力例から仕様を推測せよ」というお題は苦手
0248デフォルトの名無しさん2014/06/27(金) 14:18:03.91ID:6gnfhLnK
規則は解った、コーディングしてくる
0249デフォルトの名無しさん2014/06/27(金) 14:29:40.92ID:jrf75mY1
そもそもLが(100≦L≦100)を満たしてないよね?
0250デフォルトの名無しさん2014/06/27(金) 14:32:19.40ID:6gnfhLnK
func(S L)で
規則1 一つのブロックの長さはS
規則2 一列の長さはS*L
規則3 げ・・わからなくなった
0251デフォルトの名無しさん2014/06/27(金) 14:34:06.26ID:6gnfhLnK
>>249
そこは(1≦L≦100)の間違いだろ(と見なした)
0252デフォルトの名無しさん2014/06/27(金) 14:34:31.27ID:6gnfhLnK
寝る
0253デフォルトの名無しさん2014/06/27(金) 14:36:22.75ID:TynlDK3k
>>250
単純に考えても上手くいかないよねぇ
AとBとかじゃなくて、SとLにしたことに何か意味があるのかとか考えてるけど思いつかないwww
0254デフォルトの名無しさん2014/06/27(金) 14:38:49.94ID:SKslXSwB
small/largeじゃね?
0255デフォルトの名無しさん2014/06/27(金) 14:44:59.82ID:+d6mrCHp
>>242
ループカウンタなどを累積引数として関数の引数に追加すれば、破壊的代入を使わずに末尾再帰できる
そもそもループを破壊的代入を使って表現する必要があるのは
末尾再帰最適化が仕様にないCommonLispやEmacsLispで
それらもループマクロとして表現しているので破壊的代入は隠蔽されている
http://ideone.com/aSVmkC
0256デフォルトの名無しさん2014/06/27(金) 15:02:39.50ID:6gnfhLnK
>>255
サンキュ
勉強する
0257デフォルトの名無しさん2014/06/27(金) 15:15:30.76ID:gfNg5K0F
>>243はL(1≦L≦100)のミス
某コードゴルフの英文を和訳しただけだからできない奴がレベルが低いんだお
0258デフォルトの名無しさん2014/06/27(金) 15:21:08.06ID:mP/api6Q
ここってクイズスレ?

出題に対していくつも間違っていない回答例が出るけど正解は出題者の回答だけって。
0259デフォルトの名無しさん2014/06/27(金) 15:24:38.32ID:gfNg5K0F
言い訳はするな見苦しいぞ
0260デフォルトの名無しさん2014/06/27(金) 15:26:52.92ID:gfNg5K0F
2番めの例だけ訂正

例
3 2
oooxxx
oooxxx
oooxxx
xxxooo
xxxooo
xxxooo

2 3
ooxxoo
ooxxoo
xxooxx
xxooxx
ooxxoo
ooxxoo

1 1
o

2 1
oo
0261デフォルトの名無しさん2014/06/27(金) 15:27:29.92ID:TynlDK3k
>>260
それなら解けるわアホwwww
0262デフォルトの名無しさん2014/06/27(金) 15:34:33.43ID:mP/api6Q
ID:gfNg5K0F が見苦しいわwww
0263デフォルトの名無しさん2014/06/27(金) 15:36:07.74ID:+d6mrCHp
>>260
> 2 1
> oo
解く気ないけどこれあってる?
0264デフォルトの名無しさん2014/06/27(金) 15:43:33.76ID:gfNg5K0F
あってる
0265デフォルトの名無しさん2014/06/27(金) 16:01:18.23ID:6gnfhLnK
>>260
ゲゲゲ!!!!
出題みすだらけ!
ちゃんと見直してほしい
0266デフォルトの名無しさん2014/06/27(金) 16:47:02.93ID:6gnfhLnK
>>263
それ、
○○
○○
じゃないかね
0267デフォルトの名無しさん2014/06/27(金) 16:48:22.91ID:hZLtHGAA
>>243 Common Lisp
http://ideone.com/S0jmC5

>>260 Common Lisp
http://ideone.com/xJrUSI
0268デフォルトの名無しさん2014/06/27(金) 17:16:12.97ID:6gnfhLnK
>>260
>>243
Scheme

(make-matrix 3 2)
(0 0 0 1 1 1)
(0 0 0 1 1 1)
(0 0 0 1 1 1)
(1 1 1 0 0 0)
(1 1 1 0 0 0)
(1 1 1 0 0 0)

(make-matrix 2 3)
(0 0 1 1 0 0)
(0 0 1 1 0 0)
(1 1 0 0 1 1)
(1 1 0 0 1 1)
(0 0 1 1 0 0)
(0 0 1 1 0 0)

(make-matrix 1 1)
(0)

(make-matrix 2 1)
(0 0)
(0 0)

相変わらずSchemeぽくないだろうけど
ttp://codepad.org/R7MYVzCy
0269デフォルトの名無しさん2014/06/27(金) 17:18:58.08ID:6gnfhLnK
>>268
S=2 L=1がちがうんだあ
うーむ、ねる
0270デフォルトの名無しさん2014/06/27(金) 17:23:14.06ID:7YjTFkej
>>260
ttp://ideone.com/3yOOpr
0271デフォルトの名無しさん2014/06/27(金) 17:55:21.82ID:WBIkvaOn
>>260 J
2 1 のケースがわからないので特別扱い。
f =: 4 : 0
c =. (y = 1) { x , 1
a =. 'o' $~ c , x
b =. 'x' $~ c , x
,./,./>(b ; a) {~ =/~ 0 1 $~ y
)

2 f 1
oo
1 f 1
o
3 f 1
ooo
1 f 3
oxo
xox
oxo
2 f 2
ooxx
ooxx
xxoo
xxoo
0272デフォルトの名無しさん2014/06/27(金) 18:42:03.89ID:tVuv5STr
>>260 c言語
http://ideone.com/6GuIKW
0273デフォルトの名無しさん2014/06/27(金) 19:00:49.15ID:/cFHuc2v
すまない気づかなかった例を訂正

2 1

oo
oo
0274デフォルトの名無しさん2014/06/27(金) 19:01:54.76ID:2pAWE6po
>>260 Perl
http://ideone.com/1oR3Vd
0275デフォルトの名無しさん2014/06/27(金) 19:24:07.88ID:1+Sp/Gzh
>>273
やっぱりそうかあ
じゃ>>268でよしと
0276デフォルトの名無しさん2014/06/27(金) 19:33:03.23ID:WBIkvaOn
>>260 >>273 J
f =: 4 : 0
a =. 'o' $~ x , x
b =. 'x' $~ x , x
,./,./>(b ; a) {~ =/~ 0 1 $~ y
)

2 f 1
oo
oo
3 f 1
ooo
ooo
ooo
0277デフォルトの名無しさん2014/06/27(金) 21:23:50.23ID:0NE+vhQD
>>243 >>260 >>273 Python

def f(S,L):print"\n".join(["".join(["ox"[(i/S+j/S)&1]for j in range(S*L)])for i in range(S*L)]+[""])
f(3,2),f(2,3),f(1,1),f(2,1)
0278デフォルトの名無しさん2014/06/28(土) 01:53:06.97ID:/hGDVenf
「綺麗さなんて興味ねえよ、この世で一番短いコードを書いた奴が海賊王だ」
0279デフォルトの名無しさん2014/06/28(土) 06:02:00.78ID:ceaE8o9R
>>278
もう、ド底辺ドカタの発想やめてくんない?
0280デフォルトの名無しさん2014/06/28(土) 06:38:06.40ID:8fzSy6NM
土方じゃなくてゴルファーだよ
0281デフォルトの名無しさん2014/06/28(土) 08:12:09.23ID:hS2Ud4cQ
>>273
C言語で。
#include <stdio.h>
int main()
{
int s, l;
scanf("%d %d", &s, &l);
for (int i = s * l; i--;)
{
for (int j = s * l; j--;)
putchar((i / s + j / s) % 2 ? 'x' : 'o');
putchar('¥n');
}
return 0;
}
0282デフォルトの名無しさん2014/06/28(土) 09:05:02.55ID:yP1KNiEz
>>243 >>260 >>273
@Mathematica

makeMatrix[s_,l_]:=Module[{makeBaseMatrix,elementExpander},

  makeBaseMatrix[lx_]:=Table[If[EvenQ[i+j-1],1,0],{i,1,lx},{j,1,lx}];

  elementExpander[sx_,bx_]:=Table[bx,{i,1,sx},{j,1,sx}];

  makeBaseMatrix[l]//
    Map[Map[elementExpander[s,#]&,#]&,#]&//
    Map[MapThread[List,#]&,#]&//
    Map[Map[Flatten,#]&,#]&//
    Flatten[#,1]&
];
0283デフォルトの名無しさん2014/06/28(土) 09:34:41.79ID:nE8Pthav
>>243 Haskell
check [n,m] = f [f "ox", f "xo"] where f = (replicate n =<<) . take m . cycle
main = putStrLn . unlines . check . map read . words =<< getLine
0284デフォルトの名無しさん2014/06/29(日) 10:00:12.32ID:6bSP0Nqn
double val(double a){
return (long int)a *10;
}
-------------------
void swap(int *p, *q){
int tmp;
temp = *p;
*p = *q;
*q = temp;
return
}
下の、ポインタのやつは分かるんですが、上のやつはポインタ使ってないのに
値を返すのは、どうしてですか?
0285デフォルトの名無しさん2014/06/29(日) 10:31:01.83ID:zjmbmtCs
>>284
大きな構造体を返す関数を書いてコンパイルしてデバッグしてみなよ
面白いコード吐くから
0286ああああああああああ2014/06/29(日) 11:09:24.69ID:NFKC3os6
1)(上の)は、ポインタ使をわないで値を返すために return 戻り値;と書く。
戻り値の変数型 関数名(){}
0287デフォルトの名無しさん2014/06/29(日) 12:33:06.51ID:SODsEjjY
1. doubleなのに(long int)
2. tmpなのかtempなのか
3.returnのあとに;をつけましょう
4.こんなもんにはつられんぞ
0288デフォルトの名無しさん2014/06/29(日) 19:13:53.32ID:f0WIPed4
https://codeiq.jp/magazine/2014/06/11860/

これの問題わかる?
0289デフォルトの名無しさん2014/06/29(日) 19:19:33.40ID:lFZ15VQI
そのページに答え書いてあるけど
0290デフォルトの名無しさん2014/06/29(日) 19:27:46.92ID:f0WIPed4
いや、別にそういう意味で聞いたんじゃないんだけど…
0291デフォルトの名無しさん2014/06/29(日) 20:24:14.45ID:XIYpqSXL
>>288
こういうこと?
http://codepad.org/BCSvsDU0
0292デフォルトの名無しさん2014/06/29(日) 20:33:04.86ID:XIYpqSXL
>>291 訂正
+ #define N (8 * sizeof(int))
- #define N sizeof(int)
0293デフォルトの名無しさん2014/06/29(日) 20:41:08.47ID:s1CDyW9K
>>291
確かにオーバーフローしたらうまくいかないけど、
このあたりは問題文の記述が不足している感じがする。
C言語としても未定義だし

>>【前提】
>>扱う数値は全てNビットの整数

だけでは符合無しのNビットの数とも読めるし
0294デフォルトの名無しさん2014/06/29(日) 23:47:01.23ID:zB0X93p/
オーバーフロー対策
int a = ((y - x) & (~x ^ y) | (~x & y)) >> (N - 1); // (x > y) ? -1 : 0
int z = y ^ ((x ^ y) & a);
0295デフォルトの名無しさん2014/06/30(月) 00:00:41.64ID:t2QY93Gt
1から481026574172857371038510295691740138639173281038463829385710488361648301846283405837618447580までの総和を求めよ
見やすさなんてしらねえよ、一番短いコードを書いた奴が海賊王だ
0296デフォルトの名無しさん2014/06/30(月) 00:26:08.54ID:+bYHVEuQ
>>295 Perl

use 5.18.2;
use bigint;
my $last = 481026574172857371038510295691740138639173281038463829385710488361648301846283405837618447580;
say (++$last) * $last / 2;

結果:481026574172857371038510295691740138639173281038463829385710488361648301846283405837618447581
0297デフォルトの名無しさん2014/06/30(月) 00:35:17.59ID:CGk8SAom
say ($last + 1) * $last / 2;
0298デフォルトの名無しさん2014/06/30(月) 00:36:32.30ID:+bYHVEuQ
>>296 失敗、sayのバカ!

use 5.18.2;
use bigint;

my $last = 481026574172857371038510295691740138639173281038463829385710488361648301846283405837618447580;

say ((++$last) * $last / 2);

結果:
115693282530237726996241264961497327958334893787747058587669519509857499867560577962302701579815724530711698507413079937558286807046061562081164567035924479985814641465025169002222375780
0299デフォルトの名無しさん2014/06/30(月) 00:39:33.15ID:+bYHVEuQ
>>297>>298
つうか何もカッコ付けない方が良かったぽい
say ++$last * $last / 2;
0300デフォルトの名無しさん2014/06/30(月) 00:45:19.88ID:q3ApJOlF
お題:与えられた数値列の数字を先頭から順に使って数列を作り、隣り合う数の「差の二乗」の合計が最大になるような分割を求めよ。
例:123は、1,23 1,2,3 12,3のように分割出来る。
1,23 ---> 23*23-1 ---> 528
1,2,3 ---> 1*1+1*1 ---> 2
12,3 ---> 12*12-3*3 ---> 135
よって1,23が答え。
0301デフォルトの名無しさん2014/06/30(月) 00:47:36.71ID:3F05CPDt
>>298
7580*(7580+1)/2 = 28731990
下4桁は 1990 じゃね?
0302デフォルトの名無しさん2014/06/30(月) 00:48:51.19ID:q3ApJOlF
>>300
訂正します。
1,23 ---> 22*22 ---> 484
1,2,3 ---> 1*1+1*1 --> 2
12,3 ---> 9*9 ---> 81
です。
0303デフォルトの名無しさん2014/06/30(月) 00:56:34.66ID:1re/oN4f
>>295
115693282530237726996241264961497327958334893787747058587669519509857499867560577962302701579575211243625269821893824789712416737726474921561932652343069235804990490541883466083413151990
0304デフォルトの名無しさん2014/06/30(月) 01:10:02.22ID:+bYHVEuQ
>>301
なんでだろう?
Perlのバグ?
インクリメント止めたら
say (($last + 1) * $last / 2);
115693282530237726996241264961497327958334893787747058587669519509857499867560577962302701579575211243625269821893824789712416737726474921561932652343069235804990490541883466083413151990
になった。
bigintでインクリメントは使っては駄目なんだろうか?
ちょっとでもコードを短くと思ったんだけど……
0305片山博文MZ悪魔崇拝 ◆T6xkBnTXz7B0 2014/06/30(月) 01:14:22.20ID:CGk8SAom
$lastを前置インクリメントしたら、その後の$lastも+1増えてるだろ
0306デフォルトの名無しさん2014/06/30(月) 01:15:53.22ID:+bYHVEuQ
>>305
そっか。それは確かにそうだ。thanx!
0307デフォルトの名無しさん2014/06/30(月) 02:26:07.66ID:by3cNm9P
>>302
これ
>>273
とおなじひと?
どうも出題が曖昧だな
0308デフォルトの名無しさん2014/06/30(月) 06:36:05.99ID:76lBVk6p
>>295 Common Lisp
90文字
http://ideone.com/Z2iJQd
0309デフォルトの名無しさん2014/06/30(月) 08:44:41.68ID:FpyV2Xga
>>300
与えられた数値の数字列を先頭から順に使って
03103092014/06/30(月) 08:47:59.05ID:FpyV2Xga
>>309
間違え。無視してください。
0311デフォルトの名無しさん2014/06/30(月) 08:51:40.06ID:FpyV2Xga
やっぱり題意は>>309かな・・・?
0312デフォルトの名無しさん2014/06/30(月) 09:00:48.60ID:YKYlOP4w
ひとりごとのようなので迷惑です。考えをまとめてからいうように。はい、次の人。
>>300 与えられた数字を先頭から順に桁ごとに区切って使って数列を作り、>>295 use bigint; say
240513287086428685519255147845870069319586640519231914692855244180824150923141702918809223790 *
481026574172857371038510295691740138639173281038463829385710488361648301846283405837618447581 ;
0313☆☆☆☆☆2014/06/30(月) 12:13:05.64ID:J2AJY7m0
----------------------
目標3分以内
25秒以内で書ければ優秀
----------------------

田中君はアイテムを合成して別のものを作る能力を持っています
銅を3個合成すると銀が1個作れます
銀を3個合成すると金が1個作れます
各アイテムの個数を銅=D, 銀=G, 金=Kとします
標準入力から与えられる個数の範囲を0≦(D, G, K)≦10000とします
お客さんから必要なアイテムのオーダーを受けるので、全て作成するのに必要最低限の銅の数を求めなさい

標準入力から以下の書式で与えられます
K G D

-------------------
テストケース

0 0 1 => 1
0 2 1 => 7
1 0 3 => 30
0314デフォルトの名無しさん2014/06/30(月) 12:16:06.92ID:J2AJY7m0
テストケース修正

0 0 1 => 1
0 2 1 => 7
1 0 3 => 10
0315片山博文MZ悪魔崇拝 ◆T6xkBnTXz7B0 2014/06/30(月) 12:30:03.52ID:T7TvcWS5
お題:次のBNF記法で与えられた文の真偽を判定するプログラムを作れ。

<文> ::= <領域> "は" <領域> "か。".
<領域> ::= <制約> <基本領域>.
<基本領域> ::= "自然数" | "整数" | "実数".
<制約> ::= <OR制約> "でない" | <OR制約>.
<数> ::= [0-9]+ "." [0-9]+ | [0-9]+.
<OR制約> ::= <OR制約> "または" <AND制約> | <OR制約> "か" <AND制約> | <AND制約>.

<AND制約> ::= <数> "以下で" <AND制約>
| <数> "以下" <AND制約>
| <数> "以上で" <AND制約>
| <数> "以上" <AND制約>
| <数> "より小さく" <AND制約>
| <数> "より大きく" <AND制約>
| <AND制約> "かつ" <基本制約>.
| <基本制約>.

<基本制約> ::= <数> "以下"
| <数> "以上"
| <数> "より小さい"
| <数> "より大きい"
| "(" <OR制約> ")".
0316片山博文MZ悪魔崇拝 ◆T6xkBnTXz7B0 2014/06/30(月) 12:34:07.72ID:T7TvcWS5
修正。
<領域> ::= <制約> <基本領域> | <基本領域>.
0317片山博文MZ悪魔崇拝 ◆T6xkBnTXz7B0 2014/06/30(月) 13:03:21.85ID:CGk8SAom
……さあ、超難問の前で底のない絶望に悶え苦しむのだ……
0318デフォルトの名無しさん2014/06/30(月) 13:09:27.46ID:YKYlOP4w
>>314
K*9+G*3+D じゃあだめなのか。
0319デフォルトの名無しさん2014/06/30(月) 13:37:41.95ID:26x9m6sz
てか、>>314合ってんの?
0320デフォルトの名無しさん2014/06/30(月) 13:49:24.84ID:7FoUPvVO
なんでいい加減な出題が三個もほぼ連続するんだ
ほんと、迷惑なのでやめてほしい

人の迷惑考えてる?

問題解けないからせめて出題したいのか?
それは考え違い
解けない人が出すと
いいかげんな問題についてなるのがおち

なんて書くとプッツンきてあらしになりそうだな
0321デフォルトの名無しさん2014/06/30(月) 14:09:43.48ID:CGk8SAom
いい加減さを指摘して、よりよいお題を提案すればいいじゃん
0322デフォルトの名無しさん2014/06/30(月) 14:15:48.78ID:7FoUPvVO
やったけど、認めなかったな
その後、修正してたけど
いちいち、問題自体の妥当性検討なんかきてられるか

ここは
「それは妥当な問題か健闘するスレ」
なのか?

話にならん
0323デフォルトの名無しさん2014/06/30(月) 14:16:19.50ID:7FoUPvVO
誤変換は適当に読み替えろ
0324デフォルトの名無しさん2014/06/30(月) 14:18:31.19ID:7FoUPvVO
バグだらけの問題出さずにロムってろ
0325デフォルトの名無しさん2014/06/30(月) 14:20:23.15ID:9okftfsw
間違い探しになってるな
0326デフォルトの名無しさん2014/06/30(月) 14:20:33.33ID:CGk8SAom
×なんかきてられるか
○なんかしてられるか

×健闘するスレ
○検討するスレ
0327デフォルトの名無しさん2014/06/30(月) 14:27:55.81ID:CGk8SAom
バグは感染する
0328デフォルトの名無しさん2014/06/30(月) 14:34:02.54ID:l9aKrYN2
ID:7FoUPvVO
どうした?学校でいじめられてるのか?落ち着け
0329デフォルトの名無しさん2014/06/30(月) 14:36:43.37ID:7FoUPvVO
はあ?
やれやれ
ぞくぞくとあほーが
仕方ないな、こんなスレだし
0330デフォルトの名無しさん2014/06/30(月) 14:38:58.43ID:9SMqmnH2
>>318
それが多分一番いいと思う
var tax = 1.05みたいな税率固定で後で修正が生まれる感じなので俺はやらないけど
0331デフォルトの名無しさん2014/06/30(月) 14:40:46.01ID:CGk8SAom
派遣は大変だねえ、いろいろストレスを抱えて
0332デフォルトの名無しさん2014/06/30(月) 14:55:46.28ID:7FoUPvVO
>>331
おまえ、精神病か?
それとも妄想即現実視の形而上学馬鹿か?
ん?馬鹿だから意味わかんないってか?
アハハ
0333デフォルトの名無しさん2014/06/30(月) 15:13:31.69ID:CGk8SAom
>>332
別に君のことを言った訳じゃないからね
0334デフォルトの名無しさん2014/06/30(月) 15:19:53.80ID:by3cNm9P
やっぱり荒れたな

わかりやすいくず
乙
0335デフォルトの名無しさん2014/06/30(月) 17:08:30.97ID:26x9m6sz
こいつがあまりにもヒドかったからなぁ・・・
>>243-244
>>257
>>259-260
>>263-264
>>273
0336デフォルトの名無しさん2014/06/30(月) 17:19:43.81ID:EYDR7xk5
それあるけど>>319はさすがにねえわw
0337デフォルトの名無しさん2014/06/30(月) 17:35:05.85ID:26x9m6sz
>>336
見ただけで分かるような間違いを平気でそのまんまにしておくやつにかける言葉としちゃ優しい方だろ
0338デフォルトの名無しさん2014/06/30(月) 17:37:24.22ID:j9QoncGa
出題するなら、一度自分で解いて、テストケースやサンプルは出力結果をコピペしてくれ。
0339デフォルトの名無しさん2014/06/30(月) 19:00:30.67ID:OP+eMRFG
313とか315とかはスルーしようよ
0340デフォルトの名無しさん2014/06/30(月) 19:01:07.51ID:HhKWif/x
お前に指図はされたくはない
0341片山博文MZ悪魔崇拝 ◆T6xkBnTXz7B0 2014/06/30(月) 20:17:07.31ID:CGk8SAom
>1以上の整数は自然数か?
はい

>2より大きく4より小さい整数は実数か?
はい
0342片山博文MZ悪魔崇拝 ◆T6xkBnTXz7B0 2014/06/30(月) 20:20:42.31ID:CGk8SAom
>0より小さい整数は自然数か?
いいえ

>実数は整数か?
いいえ
0343デフォルトの名無しさん2014/06/30(月) 23:19:47.83ID:HxSDp0H8
2chの中でまで、学校や職場のように、仕様が曖昧だから出来ませんって虚しくないか?
0344デフォルトの名無しさん2014/06/30(月) 23:29:15.07ID:uUajdWw8
>>343
>>243-273までの流れみて同じこと言えるなら、お前はそれでやってけば?
0345デフォルトの名無しさん2014/06/30(月) 23:54:15.75ID:649AII3X
俺今日あの人の誕生日会なんて聞いてないっすよ
アニメ見るので帰りますよ
0346デフォルトの名無しさん2014/06/30(月) 23:57:26.99ID:E06QCwsR
>>345
全録レコーダーくらい用意しておくのが社畜のたしなみとゆうものだろう!
0347デフォルトの名無しさん2014/07/01(火) 02:23:35.61ID:hWpKdQkT
   |=番兵|_
  ( ・ω・) <ステンバーイ
  ○={=}〇
   |:::::::::\
、、、、し 、、、(((.@)/30 7/1 7/2
0348デフォルトの名無しさん2014/07/01(火) 04:38:27.43ID:BVpg6CTG
仕様が曖昧だからできません
ではなくて
問題になっていないものを出し続ける馬鹿が一人いるということ
適当すぎ
0349デフォルトの名無しさん2014/07/01(火) 05:20:54.74ID:otDDn24O
問題の不備なんだよなぁ
0350デフォルトの名無しさん2014/07/01(火) 07:56:48.98ID:3GABGLyQ
スキルアップのスレじゃ無いからしゃーない。
0351デフォルトの名無しさん2014/07/01(火) 11:30:25.93ID:5MgriEGv
引き続き根暗の攻防戦をお楽しみください
0352デフォルトの名無しさん2014/07/01(火) 14:43:38.36ID:J4eryFJG
p, q - prime number
n = p*q - modulo
(e, n) - public parameters of cryptosystem
(d, n) or (d, p,q) - private parameters of cryptosystem

m - message
m^e = c (mod n) - cipher text
m^(e*d) = m (mod n)

So, your task to find d parameter having p,q,e numbers.
I'm guarantee that the number e is valid.

Input: p q e
Output: d

テストケース
------------
IN
5
7
5

Out
5
0353 ◆0qAv26otVI 2014/07/01(火) 15:56:19.17ID:aHhEQ2XO
>>352 .jp
素数pと素数qから(p-1)と(q-1)の最小公倍数を求める。
最大p*qまでの数で、n*最小公倍数+1の集合を求める。
この集合の中から、eで割り切れる数を探す。
例:p=5,q=7:(5-1)と(7-1)つまり4と6の最小公倍数は12。
例:p*q=35なので12+1,24+1,36+1(>35)つまり13と25。
例:25/5=5=dとなる。eは割り切れる数があらかじめ入力される。
0354デフォルトの名無しさん2014/07/01(火) 18:21:19.43ID:XPXTuhdJ
流れがピタッと止まったなwwwwwwwwwww
偉そうにコメント書き込んでた奴らは英語読めないんだなwwwwwwwwwwwww
0355デフォルトの名無しさん2014/07/01(火) 18:43:09.30ID:AM6RIy0R
>>352
日本語で出題してください
0356デフォルトの名無しさん2014/07/01(火) 19:33:07.79ID:ZUAu2eXQ
>>353 Perl
http://ideone.com/guv4YD

> この集合の中から、eで割り切れる数を探す。

なら、

Out
25

じゃなくていいの?
0357デフォルトの名無しさん2014/07/01(火) 19:37:05.97ID:4ksOGHD/
>>354
きみなの?馬鹿な問題出し続けてたの
で、>>352 これまたはるかにお馬鹿な問題だしたの?
英語になってないよ
0358 ◆0qAv26otVI 2014/07/01(火) 19:57:38.99ID:aHhEQ2XO
356>>eで割って、dを求めるの間違いです。
これとは別に、(p-1)と(q-1)の最小公倍数を素因数分解して、eの候補を全て列挙したいです。

357>>英語読める人?
0359デフォルトの名無しさん2014/07/01(火) 20:27:22.80ID:l9yjQtpJ
>>352
So, your task to find d parameter having p,q,e numbers.
↓
So, your task is to find d parameter having p,q,e numbers.
0360デフォルトの名無しさん2014/07/01(火) 20:28:18.25ID:l9yjQtpJ
>>352
I'm guarantee that the number e is valid.
↓
I guarantee that the number e is valid.
0361デフォルトの名無しさん2014/07/01(火) 21:46:09.01ID:0frJXIds
>>359-360
帰っていいよ
0362デフォルトの名無しさん2014/07/01(火) 21:48:58.23ID:gE7BozM3
>>361
お前恥ずかしいなww
0363デフォルトの名無しさん2014/07/01(火) 21:52:03.48ID:l9yjQtpJ
実際英語になってなかったので…。
0364 ◆0qAv26otVI 2014/07/01(火) 21:54:14.54ID:aHhEQ2XO
課題は与えられたp,qからe,dを求める事です。p,qは2個の素数、e,dはp*q以下の数。
eおよびdは、(p-1)と(q-1)の最小公倍数を求めてそれを整数倍して、1を足した数の素因数です。

p, q ... 素数
n = p*q ... 2個の素数の積
(e, n) ... eとnは暗号化の公開鍵
(d, n) or (d, p, q) ... dとnまたは、dとpとqは暗号化の秘密鍵

m ... 暗号化する文(平文)
m^e = c (mod n) ... cはmをe乗した値{をnで割った余り}、cはmを暗号化した暗号文
m^(e*d) = m (mod n) ... 暗号文をさらにd乗した値{をnで割った余り}がm(平文)である

Input:
p
q
Output:
e d
e d

Test case.
------------
Input:
29
37
Output:
11 23
5 101

英語のハードルは低いと思うけど、問題を変えてみた。
0365デフォルトの名無しさん2014/07/01(火) 21:55:01.85ID:0frJXIds
>>362
お前の力じゃ読めても解けなさそう
0366デフォルトの名無しさん2014/07/01(火) 22:33:20.39ID:ZVl2H7Qp
なんか煽りあいのところ申し訳ないが、一気に悪化しましましたなー。
もうちょっと言葉選ぼうぜー。
0367デフォルトの名無しさん2014/07/01(火) 22:59:25.44ID:Y7RI/8xm
>>365
ほら原文貼ってやるから解いてみろって
世の中にはお前みたいなカスだらけじゃないんだよ
http://jagc.org/task/52bd90bb2735ee4a6a080000
0368デフォルトの名無しさん2014/07/01(火) 23:00:02.76ID:Y7RI/8xm
>>365じゃなくて>>362
はい解いてね〜wwwwwwwwwwwwwwwww
0369デフォルトの名無しさん2014/07/01(火) 23:13:35.98ID:8OIckluf
麻雀の実装は難しいが、人狼を実装してアルゴリズムで対戦。
0370デフォルトの名無しさん2014/07/01(火) 23:18:11.17ID:AM6RIy0R
螺旋の問題は>>14-15よりもこっちの方がまともだね

spiral

Build a matrix of numbers, which will be presented in the form of a spiral.
The input is the size of the matrix. Use tabs as a delimeter.

IN
3

OUT
1 2 3
8 9 4
7 6 5

IN
5

OUT
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
0371デフォルトの名無しさん2014/07/01(火) 23:41:43.01ID:5GRPRLAI
何がまともなのか何がダメなのか書かないと結局ただ悔しくてレスしただけの感情論先行型人間だって思われるぞ
0372デフォルトの名無しさん2014/07/01(火) 23:53:59.31ID:AM6RIy0R
>>371
・入出力例が一つしかなくどう並べるのかわからない((√n,√n)なのか(3,n/3)なのかそれ以外なのか)
・平方数ならわかるが、なぜ奇数に限定するのか
・もし正方形に並べさせたい場合、平方数以外が与えられた場合どう処理するのか

問題文には右回りとしか書かれていない
0373 ◆0qAv26otVI 2014/07/02(水) 00:11:23.83ID:Wa71T36d
最大値チェックは、なんかチョット要らなかった。>>353 ごめんなさい。
Input:
5
7
7
Output: 7
0374デフォルトの名無しさん2014/07/02(水) 00:49:39.62ID:QdENQKEN
>>370 Python

def f(n):
  a = [[0,]*n for y in range(n)]
  (x,y), d = (0,0), complex(1,0)
  for i in range(1,1+n*n):
    if a[y][x] == 0:
      break
    a[y][x] = i
    x1,y1 = x+int(d.real), y+int(d.imag)
    if not all([0 <= z < n for z in (x1,y1)]) or a[y1][x1] != 0:
      d *= complex(0,1)
    x,y = x+int(d.real), y+int(d.imag)
  for s in a:
    print ("{:<{width}}"*n).format(*s, width=len(str(n*n))+1)

f(3), f(5), f(20)
0375 ◆0qAv26otVI 2014/07/02(水) 02:34:12.43ID:Wa71T36d
>>353
http://ideone.com/7kt72X 
>>356 参考にさせていただきました。
return の中には納まりませんでした。
0376 ◆0qAv26otVI 2014/07/02(水) 12:46:46.91ID:Wa71T36d
>>353 走行(倉庫)証明は今回いらないだろう。
#!/usr/bin/perl
use 5.016;
use warnings;

sub gcd { $_[1] ? gcd($_[1], $_[0] % $_[1]) : $_[0] }
sub lcm { $_[0] * $_[1] / gcd($_[0], $_[1]) }

sub rca {
  my ($p, $q, $e) = @_;

  my $lcm = lcm($p - 1, $q - 1);

  for (1 .. $p * $q) {
    $_ = $_ * $lcm + 1;
    if(!($_ % $e) && ($_ != $e)) {
      return $_ / $e;
    }
  }
}

say rca(map{ <STDIN> }(1 .. 3));
0377デフォルトの名無しさん2014/07/03(木) 00:00:24.39ID:Dsf0pQuE
>>370 C
http://ideone.com/mooKVA
0378デフォルトの名無しさん2014/07/03(木) 06:56:25.40ID:vG38XDPk
>>313 >>314 J
f =: 3 & #.

f 0 0 1
1
f 0 2 1
7
f 1 0 3
12
f 100 100 100
1300
0379デフォルトの名無しさん2014/07/03(木) 07:31:11.16ID:zQnvFAz4
>>313 このひと?最近、出題のたびにいいかげんな問題出してる人?
また、
1,テストケース間違ってるし。
2,日本語もいい加減だし
「 お客さんから必要なアイテムのオーダーを受けるので 」
なんじやこりゃ。文脈から意味は分かるが
3,銅、銀、金をD,G,Kで表すし、参るな
C,S,Gかcu,ag,auにしろよ、恥ずかしい

変数 c, s , gにそれぞれの必要個数を入力
必要な銅の数は
c = c + s*3 * g*3*3

出題すべき問題ではない
0380デフォルトの名無しさん2014/07/03(木) 08:51:38.30ID:LiPjrIzD
>>379
随分と銅が必要になりそうだね。
0381デフォルトの名無しさん2014/07/03(木) 10:17:24.07ID:T6nbxnRY
なーに、こないだ茨城の高校から盗(ry
0382デフォルトの名無しさん2014/07/03(木) 14:26:26.95ID:Lygb4FeS
DGKとCSGは別に重要なことでもないな
0383デフォルトの名無しさん2014/07/03(木) 14:29:00.16ID:9jCbUWE0
c = c + s*3 * g*3*3
揚げ足取ったつもりなのに算数が出来もできないバカは来るなよ
0384デフォルトの名無しさん2014/07/03(木) 14:38:44.95ID:M7lcZRBS
算数の問題か国語の問題か

それを知る機会は二度と来ないだろう
0385デフォルトの名無しさん2014/07/03(木) 14:50:12.53ID:/sivhkNE
何でC,S,Gになるのか分からん。
B,S,Gなら分かるけど。
cu,ag,auのように無駄に文字数使うのは競技プログラミングのお題では使わないほうが良いかと。
0386デフォルトの名無しさん2014/07/03(木) 15:12:18.67ID:G+zVYNAC
>>385
>何でC,S,Gになるのか分からん。
>B,S,Gなら分かるけど。

オリンピックのメダルじゃないんだし
ブロンズは合金だから、この場合、銅はカッパーで良いと思うけど
0387デフォルトの名無しさん2014/07/03(木) 15:14:32.46ID:T6nbxnRY
どんどん脱線していってるなw
0388デフォルトの名無しさん2014/07/03(木) 15:21:16.37ID:zQnvFAz4
>>383
まず、揚げ足ではない
つぎに、入力みすとさえ気づけない、バカ頭
よほどの知的底辺だな、おまえ
0389デフォルトの名無しさん2014/07/03(木) 15:38:35.80ID:G+zVYNAC
それが通るなら、件のテストケースの間違いもタイプミスだから気付け、って話しになる
0390デフォルトの名無しさん2014/07/03(木) 18:59:58.98ID:l3BrPpEm
>>388
落ち着け、恥の上塗りだぞ
0391デフォルトの名無しさん2014/07/03(木) 19:09:32.77ID:zQnvFAz4
>>390
は?どこが?
指摘してみな
揶揄するようなバカはどうしていするかな
さあ、やってみよう
そら、やれ
0392デフォルトの名無しさん2014/07/03(木) 19:38:15.32ID:n2StL5yI
暑苦しいのはNGでございますわ。
ここが2chということをお忘れなのでしょうか。
0393デフォルトの名無しさん2014/07/04(金) 02:08:14.20ID:ZrYbNryy
文字列A(2≦N≦100000)が与えられる
どうしていするかな
うどうしていするか
していするかなどう
ていするかなどうし
いするかなどうして
するかなどうしてい
るかなどうしていす
かなどうしていする
などうしていするか
0394デフォルトの名無しさん2014/07/04(金) 02:10:48.43ID:0VZOuSag
左にシフトしてくの?
2行目が分からん
0395デフォルトの名無しさん2014/07/04(金) 02:35:29.13ID:ZrYbNryy
あれ書き込むのやめたつもりが書き込まれてた
0396デフォルトの名無しさん2014/07/04(金) 02:36:29.78ID:ZrYbNryy
どうしていするかな
うしていするかなど
していするかなどう
ていするかなどうし
いするかなどうして
するかなどうしてい
るかなどうしていす
かなどうしていする
などうしていするか
0397デフォルトの名無しさん2014/07/04(金) 07:05:12.13ID:1DYmAe4B
>>396
ttp://ideone.com/IU8c2M
0398デフォルトの名無しさん2014/07/04(金) 07:17:08.89ID:1DYmAe4B
>>396
ttp://ideone.com/NVxmWT
0399デフォルトの名無しさん2014/07/04(金) 09:23:08.90ID:F/X2iHEQ
>>396 Common Lisp
http://ideone.com/1iPO05
0400デフォルトの名無しさん2014/07/04(金) 11:22:41.01ID:G+5TPOno
検索)シーザー暗号
0401デフォルトの名無しさん2014/07/04(金) 12:11:59.18ID:1jMYhAsm
>>396 Io
f := method(s,
a := s size
for(i, 0, a - 1, writeln((s .. s) slice(i, i + a)))
)

Io> f("wxyz")
wxyz
xyzw
yzwx
zwxy
0402デフォルトの名無しさん2014/07/04(金) 15:40:46.18ID:hGvq3ws9
>>396
Ruby
ttp://ideone.com/nuRuJb
0403デフォルトの名無しさん2014/07/04(金) 16:57:10.42ID:JCAFfbJv
>>396
import Control.Monad
import Data.List (inits, tails)

f396 :: [a] -> [[a]]
f396 = init . liftM2 (zipWith (++)) tails inits

main :: IO ()
main = mapM_ putStrLn $ f396 "どうしていするかな"
0404デフォルトの名無しさん2014/07/04(金) 17:13:12.54ID:1jMYhAsm
>>396 J
f =: i.&# |."0 1 ]

f 'abcd'
abcd
bcda
cdab
dabc
0405デフォルトの名無しさん2014/07/04(金) 19:13:05.09ID:QAtT59Qe
>>396 gawk
http://ideone.com/ryHeRN
0406デフォルトの名無しさん2014/07/04(金) 19:29:59.00ID:1jMYhAsm
>>396 Octave
> s="abcd";a=length(s);for i=0:(a-1) disp(shift(s,i))end
abcd
dabc
cdab
bcda
0407デフォルトの名無しさん2014/07/04(金) 21:05:11.02ID:F/X2iHEQ
>>396 ワンライナー(Ruby)
ruby -e '$*.each{|a|a=a.split(//);a.each{puts a.join; a<<a.shift}}' プログラミングのお題スレ Part4
0408デフォルトの名無しさん2014/07/05(土) 05:16:38.23ID:x6TWxlZJ
>>396 十進Basic
LET s$="abcd"
LET a = LEN(s$)
FOR i=1 TO a
PRINT s$(i:a) & s$(1:i-1)
NEXT I
END
0409デフォルトの名無しさん2014/07/05(土) 12:48:24.38ID:hiPyt9OR
47の都道府県をなるべく少ない距離で横断していく為のルートを求めなさい。
隣接する都道府県への移動にかかる距離は1になります。
例えば埼玉から東京までの最短距離は1、埼玉から神奈川への最短距離は東京を経由して2になります。
徒歩で移動するので隣接する都道府県を飛び越して移動・ワープはできません。
どこからスタートしても良いですが最初と最後の地点は沖縄のほうが良いでしょう。
0410デフォルトの名無しさん2014/07/05(土) 12:52:54.31ID:73ZHJ04l
沖縄と隣接する県ってどこになる?
0411デフォルトの名無しさん2014/07/05(土) 13:51:51.29ID:NUdHoME9
北海道や四国や九州は、どう取り扱う?
0412デフォルトの名無しさん2014/07/05(土) 14:34:08.23ID:kvjkUDCD
徒歩で行けない場合は例外として船・自動車の使用を許可
0413デフォルトの名無しさん2014/07/05(土) 15:40:17.15ID:NUdHoME9
>>412
その場合「隣接」をどう定義する?
0414デフォルトの名無しさん2014/07/05(土) 15:40:19.47ID:+HA1XJwR
>>412の例外を使うと、沖縄や北海道は任意の沿岸と距離1で隣接してる事になるのか。
兵庫県とかで詰まっても海を渡れば重複なしで移動できそうな気がするが…大丈夫か?
0415デフォルトの名無しさん2014/07/05(土) 16:16:37.19ID:DUAZ7FzQ
>>412
沖縄以外は実際に徒歩で行けるかは別にして、橋やトンネルで繋がってるから、繋がってたら距離 1 でいいんじゃね。
沖縄は鹿児島と距離 1 で繋がってるからことにするしかないかな。
0416デフォルトの名無しさん2014/07/05(土) 17:08:43.54ID:W9RgS5SL
北海道に隣接してるのは青森でしょ
0417デフォルトの名無しさん2014/07/05(土) 18:21:19.99ID:/+0/ZnD9
問題解くより地図のデータ作る方が面倒だな
0418デフォルトの名無しさん2014/07/05(土) 18:38:27.54ID:rJnPLDkM
>>409
都道府県数 + 端点数(沖縄、長崎、北海道) + 2次端点数? + 隘路数(福岡・山口)
=47 + 3 + 0 + 1
=51
でいいと思うんだが、隘路の検出が面倒そうだ。
0419デフォルトの名無しさん2014/07/05(土) 18:48:51.38ID:XGIu+p0v
青森->[北海道, 秋田, 岩手]
みたいなテーブル作るのが先だな
頑張ってくれ >>409
0420デフォルトの名無しさん2014/07/05(土) 20:00:02.53ID:NUdHoME9
>>415
>繋がってたら距離 1
どことつながっているかをとりあえず定義しないとね。
北海道-青森
兵庫-徳島
山口-福岡

さて沖縄は?
0421デフォルトの名無しさん2014/07/05(土) 20:56:58.86ID:v1GnvGtI
船経由で隣接がありなら、飛行機経由もありだな
0422デフォルトの名無しさん2014/07/05(土) 21:02:03.83ID:rJnPLDkM
>>409
データ作った。
ttp://ideone.com/rOtagj
0423デフォルトの名無しさん2014/07/05(土) 21:17:10.33ID:DUAZ7FzQ
>>420
> どことつながっているかをとりあえず定義しないとね。

接していない都道府県を繋ぐ橋とかトンネルってそんなに多くないよ。

> 北海道-青森 ... 青函トンネル
> 兵庫-徳島 ... 明石海峡大橋、大鳴門橋
> 山口-福岡 ... 関門トンネル (実際は三本ある)

以外には、

岡山-香川 ... 瀬戸大橋
広島-愛媛 ... しまなみ海道

が、ある。

あと、忘れがちだけど

千葉-神奈川 ... 東京湾アクアライン

なんてのもある。

> さて沖縄は?

>> 沖縄は鹿児島と距離 1 で繋がってるからことにするしかないかな。

以外に、妙案ある?

>>421
船とか飛行機は繋がり多すぎるし、不定期便とかまで入れると収拾つかなくなるよ。
0424デフォルトの名無しさん2014/07/06(日) 00:05:41.94ID:Xcdpas3C
>>409
問題があいまいなので整理しよう

沖縄から始めて、沖縄に戻ってくるルートのうち、もっとも短いものを探す
(日本一周する)というが基本ルールだと思うが、

47都道府県を必ず一回ずつ踏むのか?
一回しか踏めない場合、>>422の隣接に従うと、北海道や鹿児島で折り返せない。
複数回踏んでもいいなら、問題はない。

あるいは47都道府県を全て踏まなくてもいいのか?
その場合、どうであれば横断であるのか定義が必要。
例えば、沖縄から北海道を経由して、沖縄に戻ってくるルートとか


で、とりあえず、沖縄から出て、2回まで踏んでいい条件で、沖縄に戻ってくる
ルートを表示するもの(最短じゃない)
http://ideone.com/zDUA12

最短にするには計算時間が増えすぎて、自分のPCでも無理・・・・
0425デフォルトの名無しさん2014/07/06(日) 01:56:13.19ID:ns4lB4b9
とりあえず青森から北海道と
岩手から青森、秋田から青森が足りないと思う。
>>422 >>424
0426デフォルトの名無しさん2014/07/06(日) 04:48:25.53ID:5Cg0EMMK
以前、使ったものに少し橋による隣接を加えた。地図で確かめていないから間違っているかも。
肝心のプログラムはあまりに爆発的な計算量でやる気がしない。
http://nojiriko.asia/prolog/rinsetsu_todoufuken.html
0427デフォルトの名無しさん2014/07/06(日) 11:12:42.27ID:h47gFyyv
これはサラリーマン巡回問題を内包しているように思えるから最適解は存在しないのでは。
総当りになっちゃうんじゃね?
0428デフォルトの名無しさん2014/07/06(日) 11:45:57.63ID:PmG1bj5r
サラリーマン巡回問題
0429デフォルトの名無しさん2014/07/06(日) 11:48:51.38ID:pe5rXydm
>409
出題者の解答例は?
0430デフォルトの名無しさん2014/07/06(日) 12:52:49.67ID:6HIamfN5
>>409
グラフ簡約(クリティカルパスを簡約毎に2ステップ)でいける筈だが、実装の仕方を忘れたw
04314252014/07/06(日) 15:52:12.83ID:ns4lB4b9
data>>426 algorithm>>424
急に和歌山に飛んだぜ?
http://ideone.com/x8lNS5
04324252014/07/06(日) 15:56:02.08ID:ns4lB4b9
http://ideone.com/APGYLT
取る物もとりあえず、ごめん。
0433デフォルトの名無しさん2014/07/07(月) 12:06:21.10ID:l/o7L2gj
お題:文字列の平均情報量を求める。
例
"Hello, world!" -> 3.18
"abcd" -> 2.00
"abcde" -> 2.32
0434デフォルトの名無しさん2014/07/07(月) 12:11:25.92ID:sxx7xYnm
平均情報量ってなに
0435デフォルトの名無しさん2014/07/07(月) 14:59:37.42ID:KVV+Bfca
>>433 Common Lisp
(dolist (s '("Hello, world!"
"abcd"
"abcde"))
(format t "~S -> ~F~%"
s
(- (loop for c across (remove-duplicates s)
for P = (/ (count c s) (length s))
sum (* (log P 2) P)))))

出力:
"Hello, world!" -> 3.1808329
"abcd" -> 2.0
"abcde" -> 2.321928
0436デフォルトの名無しさん2014/07/07(月) 21:14:45.38ID:YcuGRz//
>>433 Python
import math
def f(s):
  P = [1.0*s.count(c)/len(s) for c in set(s)]
  H = -sum([p * math.log(p,2) for p in P])
  print '"{}" -> {}'.format(s, H)

ss = ["Hello, world!", "abcd", "abcde", "12345678"]
for s in ss:
  f(s)
---
"Hello, world!" -> 3.18083298721
"abcd" -> 2.0
"abcde" -> 2.32192809489
"12345678" -> 3.0
0437地理A ◆0qAv26otVI 2014/07/07(月) 21:59:38.42ID:sIMWWGl+
>>422(424は間違い) >>426の隣接都道府県.html
http://codepad.org/MCFLVWSL
04384262014/07/08(火) 04:22:09.04ID:+Qt3m9hV
>>437
ありがとうございます。直しました。
ご足労かけました。すみません。
0439デフォルトの名無しさん2014/07/08(火) 19:12:28.93ID:cYjPRTX9
お題:2進数リストが与えられたら10進数に変換し, 10進数が与えられたら2進数リストに変換する.
なお,最上位ビットは符号ビットとする.また、2進数は最小ビット数で表現.ただし,ビット数指定がある場合はそれに従う.

例
f(10) -> [0 1 0 1 0]
f(10,8) -> [0 0 0 0 1 0 1 0]
f(-8) -> [1 0 0 0]
f(-8 8) -> [1 1 1 1 1 0 0 0]
f(-1) -> [1 1]

f([0 1 1 1]) ->7
f([1 1 1 1]) ->-1
f([1 0 0 0]) ->-8
0440デフォルトの名無しさん2014/07/08(火) 21:07:38.60ID:/SVoRUsP
10進数と2進数の違いを判別する方法をまず説明して下さい
0441デフォルトの名無しさん2014/07/08(火) 23:04:09.67ID:7TvrG/Ck
判別する必要はありません
0442デフォルトの名無しさん2014/07/08(火) 23:09:11.73ID:/SVoRUsP
10が10進数なのか2進数7日どうやって判断すればいいですか
0443デフォルトの名無しさん2014/07/08(火) 23:19:09.74ID:7TvrG/Ck
リストと数値が区別できないような言語使ってるのか?
0444デフォルトの名無しさん2014/07/08(火) 23:20:17.15ID:7/DIpLvv
C++は?
0445デフォルトの名無しさん2014/07/08(火) 23:34:07.23ID:75xXWCXL
二進数リテラルが無くて数値型のリストで二進数を表現するような言語を使ってるのか?
0446デフォルトの名無しさん2014/07/08(火) 23:44:00.08ID:/SVoRUsP
秀丸マクロ使ってます
0447デフォルトの名無しさん2014/07/09(水) 00:01:38.36ID:rGuOP1J0
2進数リテラルはカミングスーン。
0448デフォルトの名無しさん2014/07/09(水) 00:02:43.58ID:rGuOP1J0
C++ね。ID変わってた。
0449デフォルトの名無しさん2014/07/09(水) 00:30:05.43ID:xRBjxmPo
>>439 Python
def f(x,n=0):
  if isinstance(x, int):
    d = x
    ss = bin(abs(d))[2:]
    if d < 0:
      ss = bin((abs(d) ^ (2**len(ss)-1)) + 1)[-len(ss):]
    else:
      ss = "0" + ss
    if len(ss) < n:
      ss = ss[0] * (n-len(ss)) + ss
    x = map(int, ss)
    if n:
      print "f({},{}) -> {}".format(d,n,x)
    else:
      print "f({}) -> {}".format(d,x)
  else:
    ss = "".join(map(str, x))
    d = int(ss,2)
    if x[0] == 1:
      d = -((d ^ (2**len(x)-1)) + 1)
    print "f({}) -> {}".format(x,d)
---
f(-1) -> [1]
f(-1,2) -> [1, 1]
0450デフォルトの名無しさん2014/07/09(水) 04:13:46.70ID:cyCbt8rM
>>439
Scheme

(decibin 10) ->(0 1 0 1 0)
(decibin 10 8) ->(0 0 0 0 1 0 1 0)
(decibin -8) ->(1 0 0 0 )
(decibin -8 8) ->(1 1 1 1 1 0 0 0)
(decibin -1 ) ->(1 1)
(decibin '(0 1 1 1)) ->7
(decibin '(1 1 1 1)) ->-1
(decibin '(1 0 0 0 )) ->-8

ttp://codepad.org/JvIfQLjV
0451デフォルトの名無しさん2014/07/09(水) 04:55:09.87ID:cyCbt8rM
>>450
メイン関数を整理

;;;解答関数
(define decibin
(lambda (src . bits)
(cond
;;2進数を10進数に変換
((pair? src) (2to10 src))
;;10進数を2進数に変換(bit長指定可)
((number? src)
(if (null? bits) (10to2 src)
(10to2 src (car bits))))
;;error
(else #f))))
0452デフォルトの名無しさん2014/07/09(水) 13:03:06.30ID:asIXKjCG
>>439 Perl
http://ideone.com/vrBV3H
0453デフォルトの名無しさん2014/07/09(水) 13:07:51.90ID:rH0/Zsa/
1から100000までの重複しない整数を使って、4つの数字を加減乗除した時に100になるパターンを教えてください
演算子+/*-は全部使ってください
0454デフォルトの名無しさん2014/07/09(水) 13:20:10.26ID:u2kQRDew
>>453
意味が分からんので例を
0455デフォルトの名無しさん2014/07/09(水) 13:36:34.23ID:IIXAtXmv
>>453
12*-34はOK?
2/3=0としてOK?
0456デフォルトの名無しさん2014/07/09(水) 14:35:50.36ID:l3PH0YRn
1<=N<=100000だから負数はだめでしょ
0457デフォルトの名無しさん2014/07/09(水) 14:38:30.00ID:IIXAtXmv
>>456は出題者?
0458デフォルトの名無しさん2014/07/09(水) 14:40:06.77ID:IIXAtXmv
>>453
2/3*6=0?
2/3*6=4?
0459デフォルトの名無しさん2014/07/09(水) 14:41:14.23ID:l3PH0YRn
>>457
違うけどそれがどうした?
0460デフォルトの名無しさん2014/07/09(水) 14:43:40.43ID:fijwNKcD
出題者が決めることだと言いたいんじゃ?
数字にマイナスをつけるのは演算子かどうか、いう話だろ
0461デフォルトの名無しさん2014/07/09(水) 17:01:06.07ID:QPJQuFnp
4つの数値に4つの演算子だと、
どれか一つを符号にしないと数が合わないよね
0462デフォルトの名無しさん2014/07/09(水) 17:56:35.80ID:BLsKU9h7
>>439 Common Lisp
http://ideone.com/Ww1vvV

-1 を例外扱いせずに f(-1) -> [1 1] 且つ f(-8) -> [1 0 0 0] とする方法が分からなかった
0463デフォルトの名無しさん2014/07/09(水) 20:06:58.49ID:ztVLGCNc
>>433 Io
f := method(s,
a := list
b := s size
s foreach(c, a push(c)
) uniqueCount map(v,(p := v last / b) log2 * p
) sum * -1
)
0464デフォルトの名無しさん2014/07/09(水) 21:56:16.02ID:e6NcC5AN
+(-1)これと-1は同じなの?
0465デフォルトの名無しさん2014/07/09(水) 22:22:20.70ID:tJbpL3+F
>>453
// 方針案
// X-Y=100となるようなX、Yを求める。
// X,Yについて、以下の6通りが有り得る。
// 1.A*B/C=X ===> A*B/C-Y
// 2.A/B*C=X ===> A/B*C-Y
// 3.A*B=X,C/D=Y ===> A*B-C/D
// 4.A/B=X,C*D=Y ===> A/B-C*D
// 5.B*C/D=Y ===> A-B*C/D
// 6.B/C*D=Y ===> A-B/C*D
0466デフォルトの名無しさん2014/07/10(木) 02:35:06.94ID:W+p4qrtw
お題
昇順の数列A[a0,a1,..,an]とAの要素amを一つ指定する
Aの要素からなる数列Bを与えて[am,am+1,..,an,a0,a1,..,am-1]の順番で整列させよう
例
入: A = [2,3,5,7,9], a = 2, B = [9,2,5]
出: [2,5,9]
入: A = [2,3,5,7,9], a = 9, B = [9,2,5]
出: [9,2,5]
入: A = [2,3,5,7,9], a = 5, B = [9,2,5]
出: [5,9,2]
入: A = [2,3,5,7,9], a = 3, B = [9,2,5,5,2]
出: [5,5,9,2,2]
0467デフォルトの名無しさん2014/07/10(木) 04:30:36.67ID:+OU7A57A
>>466 Prolog

'昇順の数列A[a0,a1,..,an]とAの要素amを一つ指定する
Aの要素からなる数列Bを与えて[am,am+1,..,an,a0,a1,..,am-1]の順番で整列させよう'(A,_am,B,_整列したならび) :-
    '[am,am+1,..,an,a0,a1,..,am-1]の順番で'(A,_am,_順番で),
    整列させよう(B,_順番で,_整列したならび).

'[am,am+1,..,an,a0,a1,..,am-1]の順番で'(A,_am,_順番で) :-
    append(L1,[_am|L2],A),
    append([_am|L2],L1,_順番で),!.

整列させよう(B,_順番で,_整列したならび) :-
    findall(_a,(
          append(L0,[_a|_],_順番で),
          \+(member(_a,L0)),
          member(_a,B)),
        _整列したならび).
0468デフォルトの名無しさん2014/07/10(木) 06:25:26.98ID:KiWPbMvu
>>466 Python
http://ideone.com/9dLXxw
0469 ◆0qAv26otVI 2014/07/10(木) 07:08:40.17ID:wLmZR570
>>461
>演算子+/*-は全部使ってください
全部使わなくても、好きなの使えばいいよね。
0470デフォルトの名無しさん2014/07/10(木) 08:29:35.13ID:W5aGcVmQ
>>466
Ruby
ttp://ideone.com/D6LqhL
0471デフォルトの名無しさん2014/07/10(木) 13:12:03.14ID:4V+vxH6Q
>>466 Perl
http://ideone.com/u3BaJG
0472デフォルトの名無しさん2014/07/10(木) 17:55:09.45ID:G1rqgd7K
縦H * 横W ( 10≦(H, W)≦100 )のサイズの床に地雷を設置した
---**
--*--
-*---
--*--
*--*-
以下のように地雷に隣接する床の上に、隣合う地雷の数を調べて出力できるプログラムを作成せよ
地雷をランダムに配置せよ
002**
02*21
1*300
12*20
*12*1
0473デフォルトの名無しさん2014/07/10(木) 19:18:34.32ID:D7NRMVb2
>>466 Common Lisp
http://ideone.com/YYNCfv

cl:sortを使う版(f)と使わない版(g)を書いた
0474デフォルトの名無しさん2014/07/10(木) 21:11:38.52ID:D7NRMVb2
>>470
f([2,3,5,7,9], 3, [9,2,5,5,2]) の結果が合っていない
5行目よりも上のどこかに b.sort! があるはずなのでは
0475デフォルトの名無しさん2014/07/10(木) 21:30:24.93ID:D7NRMVb2
>>474
あ、b.sort! はだめか
呼出側の配列を壊してしまう
b = b.sort だね
0476デフォルトの名無しさん2014/07/10(木) 23:18:17.52ID:7hx1yjTE
>>472
paizaで似たようなのが出た気がするけど難しい・・・
0477デフォルトの名無しさん2014/07/10(木) 23:25:52.08ID:KiWPbMvu
>>472 Python
http://ideone.com/ujrnzS
0478デフォルトの名無しさん2014/07/10(木) 23:25:58.58ID:1QBBoJFm
>>472
ttp://ideone.com/mU3sah
0479デフォルトの名無しさん2014/07/11(金) 01:55:16.31ID:mTredRn+
>>472
http://codepad.org/nzZYjY7y
0480デフォルトの名無しさん2014/07/11(金) 07:57:05.22ID:+0oXrHdH
>>472
http://ideone.com/XHFLzH
0481デフォルトの名無しさん2014/07/12(土) 09:01:15.80ID:qrHUnFxI
4x4盤タイルゲーム for Windows
対戦するたびに学習して次第に強くなる「最善手探索+対戦学習型知能ゲーム」
http://www.vector.co.jp/soft/win95/game/se370530.html
0482デフォルトの名無しさん2014/07/13(日) 01:11:13.21ID:BzOhvb9Q
   |=番兵|_
  ( ・ω・) <ステンバーイ
  ○={=}〇
   |:::::::::\
、、、、し 、、、(((.@)5.3 35.4 36.3
0483デフォルトの名無しさん2014/07/13(日) 09:53:26.77ID:yLlLSvPV
a*b=c
cが分かるときaとbの組み合わせを全て求めよ
0484デフォルトの名無しさん2014/07/13(日) 11:32:51.30ID:oUim7CZz
やだ
0485デフォルトの名無しさん2014/07/13(日) 12:29:30.76ID:zSV3XHBM
同じく
実数なら無限個のペアあるし
0486デフォルトの名無しさん2014/07/13(日) 12:32:00.22ID:98eeNzbJ
整数限定でも約数を列挙するのと同じだしね
0487デフォルトの名無しさん2014/07/13(日) 12:35:53.18ID:V0uAqOsf
無理数、複素数も混ぜてあげて
0488デフォルトの名無しさん2014/07/13(日) 12:40:13.61ID:6sD1pyHJ
わーい!3Pだね
前から後ろから
0489デフォルトの名無しさん2014/07/13(日) 15:16:56.57ID:OfL9oG5/
問題:小町算 http://peace.2ch.net/test/read.cgi/tech/1313183984/219
加算・減算だけ試してみた例:http://ideone.com/PINwx

>>453
もう少し問題を検討すれば面白いものだったかもね
0490デフォルトの名無しさん2014/07/13(日) 15:41:28.25ID:ktOqAI16
>>488
四元数をお忘れかな?
0491デフォルトの名無しさん2014/07/13(日) 18:21:29.28ID:2/vm2xCB
この3*3、4*4、5*5、6*6の先後どちらが必勝かもとめる。


タイル・ゲームの紹介
3x3(あるいは4x4など)の盤上で遊ぶゲームです。

(1) 先に連絡すれば勝ち
盤面の空いたところに交互に自分の色のタイルを置き、向かい合った自分の辺と辺を、先に連絡した方が勝ちです。
「連絡する」とは、タイルの辺が縦・横に接した状態にすることです。斜めに並んでいても連絡したことになりません。

これは□が連絡しています。(□の勝ち)
http://www2u.biglobe.ne.jp/~shunbook/omocha/tilegame_help/tilegame_help01.png

これは■が連絡しています。(■の勝ち)
http://www2u.biglobe.ne.jp/~shunbook/omocha/tilegame_help/tilegame_help02.png

この■は連絡したことになりません。斜めはダメ。
http://www2u.biglobe.ne.jp/~shunbook/omocha/tilegame_help/tilegame_help03.png

(2) 「切り違え」ると、相手のタイルを取り除く

□が★の場所に、斜めに並んだ相手のタイルを切るように打つ(切り違える)と、■の2枚は盤上から取り除かれます。
http://www2u.biglobe.ne.jp/~shunbook/omocha/tilegame_help/tilegame_help04.png
http://www2u.biglobe.ne.jp/~shunbook/omocha/tilegame_help/tilegame_help04.png

この場合、□が★の場所に打つと、3枚の■が除かれます。
http://www2u.biglobe.ne.jp/~shunbook/omocha/tilegame_help/tilegame_help05.png

(3) パスはできない
http://www2u.biglobe.ne.jp/~shunbook/omocha/tilegame_help.htm
0492デフォルトの名無しさん2014/07/13(日) 18:27:45.64ID:gE/LTmAc
直リンしねよカス
0493デフォルトの名無しさん2014/07/14(月) 01:08:12.99ID:IlNIyuqu
直リンするなってまだ言ってる人居るの
0494デフォルトの名無しさん2014/07/14(月) 01:11:54.38ID:aONiiMtw
語尾に?つけてほしい
0495デフォルトの名無しさん2014/07/14(月) 01:34:05.10ID:NObUc+/C
直リンはマナー違反
0496デフォルトの名無しさん2014/07/14(月) 07:45:09.84ID:GNzEXKnI
素材の無断使用でないし(作者ページのリンクも貼ってる)、
ウェブブラウザ開いたら自動で画像がロードされるわけでもない。
どういったマナーに抵触するんだ。
0497デフォルトの名無しさん2014/07/14(月) 07:52:28.22ID:IlNIyuqu
個人ウェブサイト時代の残留思念がだな…
0498デフォルトの名無しさん2014/07/14(月) 08:35:40.41ID:v6rlvCBe
かまってチャンのネタでしょ。放置推奨。
0499デフォルトの名無しさん2014/07/14(月) 11:21:46.56ID:kZuhMpyl
ゆとり世代はなんでもありだな
0500デフォルトの名無しさん2014/07/14(月) 12:29:44.25ID:GDE1GNrp
問題文が公開されているページがあるならそのページを貼ればいいのでわざわざに転載する必要もないわな
0501デフォルトの名無しさん2014/07/14(月) 14:06:42.48ID:qMOjTsVj
盗作に興味なし
次の問題はよ
0502片山博文MZ悪魔崇拝 ◆T6xkBnTXz7B0 2014/07/14(月) 14:54:45.87ID:BcwFLIWO
お題:幅x[cm]高さy[cm]の長方形の内部に
z[cm]×w[cm]の長方形をできるだけ多く敷き詰める。
敷き詰められる長方形の個数の最大値を求めよ。
0503デフォルトの名無しさん2014/07/14(月) 17:26:52.10ID:0IODtz6F
x*y/2
0504デフォルトの名無しさん2014/07/14(月) 18:07:24.19ID:sUkwPb8A
>>503
全て整数なら、X*Y
実数なら、無限。
0505デフォルトの名無しさん2014/07/14(月) 18:16:36.10ID:0IODtz6F
x*yだと正方形も含まれるよ
0506デフォルトの名無しさん2014/07/14(月) 19:06:25.78ID:EEvf9Gev
wiki
長方形(ちょうほうけい)、矩形(くけい)(英: rectangle)は、4つの角がすべて等しい四角形である。4つの角はすべて直角となる。
この定義により、長方形の向かい合う2辺は長さが等しくなる。
すなわち、長方形は平行四辺形である。
正方形は長方形の特殊な形で、4つの辺がすべて等しい長さの四角形である。
つまり、正方形は長方形であり菱形である。
口語で長方形といえば正方形ではない長方形を指すことが多い。
0507片山博文MZ悪魔崇拝 ◆T6xkBnTXz7B0 2014/07/14(月) 20:49:39.26ID:BcwFLIWO
お題:実数xで割り切れる数のうち、実数y以上の最小値をg(x,y)と表す。
xとyが与えられたとき、g(x,y)を求めるプログラムを作れ。
0508デフォルトの名無しさん2014/07/14(月) 21:16:27.42ID:n4kA1gB9
一行で書けるけど
普通にやったら負数がどうとか正確な実数じゃないとか
しょーもないことごちゃごちゃ言うんだろ
騙されないぞ
0509片山博文MZ悪魔崇拝 ◆T6xkBnTXz7B0 2014/07/14(月) 21:33:25.90ID:BcwFLIWO
実数が負の数を含んでいるのは自明。何を言っているんだ?
0510デフォルトの名無しさん2014/07/14(月) 22:22:40.24ID:PJHN9zyW
>>507 Python
from decimal import *
def g(x,y):
  x,y = map(Decimal,(x,y))
  z = int(y/x)*x
  if z < y:
    z += abs(x)
  print "x={}, y={} -> {}".format(x,y,z)
  return z

g("1.1","3.14")
g("1.1","-3.14")
g("-1.1","3.14")
g("-1.1","-3.14")
---
x=1.1, y=3.14 -> 3.3
x=1.1, y=-3.14 -> -2.2
x=-1.1, y=3.14 -> 3.3
x=-1.1, y=-3.14 -> -2.2
0511デフォルトの名無しさん2014/07/14(月) 22:55:32.88ID:5duasKc4
>>507
実数の世界観と整数の世界観が妙に交じり合って気持ちが悪いんだが‥
0512デフォルトの名無しさん2014/07/14(月) 23:31:08.99ID:VFiVEdln
>>507
xとyを取って、yを返す関数?
0513デフォルトの名無しさん2014/07/14(月) 23:47:54.79ID:caGHL+SV
>>507
実数で割り切れるってどういうこと?
無限小数にならないってことか?
0514デフォルトの名無しさん2014/07/14(月) 23:59:00.24ID:5duasKc4
>>491
「切り違え」の定義が難しいきがする
0515デフォルトの名無しさん2014/07/15(火) 01:38:54.79ID:NrEcFehV
>>496
迷惑なのでもうやめろ
0516 ◆0qAv26otVI 2014/07/15(火) 01:48:31.22ID:70z77viJ
n個の埴輪をm個入りの蔵に全て入れるには蔵を少なくとも幾つ用意すればよいか?
nは0または自然数、mは自然数とする。
nがmで割り切れるかどうかを調べる関数を使え!
10 3 -> 4
0517デフォルトの名無しさん2014/07/15(火) 02:43:05.88ID:adxF9Nhd
C言語の入門書が終わったのですが
中身を完璧には覚えていないです。
何度も読むよりかは何かを作るか
もう一段階上げた本を読んだほうがいいでしょうか?
0518デフォルトの名無しさん2014/07/15(火) 02:48:11.18ID:oHpwW4pa
>>517
> 何かを作るか

こっちに一票
0519デフォルトの名無しさん2014/07/15(火) 03:19:04.41ID:1i78TI8o
ていうか、あまりにもスレチ
俺がいうんだからそうとうなスレチ
0520 ◆0qAv26otVI 2014/07/15(火) 11:10:54.44ID:70z77viJ
お題: nをmで割って余りを切り上げる関数を作れ!
n個の埴輪をm個入りの蔵に全て入れるには蔵を少なくとも幾つ用意すればよいか?
nは0または自然数、mは自然数とする。
10 3 -> 4
0521デフォルトの名無しさん2014/07/15(火) 11:41:12.14ID:Wc/hF9eS
return (n + m - 1) / m;
0522デフォルトの名無しさん2014/07/15(火) 12:31:00.74ID:YWdU6hVJ
あーあ、クソ問題連発君に解答しちゃったよこの人
0523デフォルトの名無しさん2014/07/15(火) 20:40:51.99ID:9hHqcu7I
裏庭に埴輪取りが
0524 ◆0qAv26otVI 2014/07/15(火) 22:43:34.70ID:70z77viJ
>>507 thx>>521
if( y != (z = int(y/x)*x)) if(z >= 0) return z+abs(x);
return z;

他人の指摘するのはいいかどうかわからないけど。
>>510
// if( y > (z = int(y/x)*x)) return z+abs(x);
// return z;
0.14 1.1 -> 1.1
0525片山博文MZ悪魔崇拝 ◆T6xkBnTXz7B0 2014/07/17(木) 21:54:30.22ID:NnUGLSxr
お題:バイトごとに固定値とのXORでバイナリが暗号化される。正しい
バイナリを引数として指定するとtrueを返すような関数examがある。
正しいバイナリを暗号化した後、examを使って暗号化されたバイナ
リを解読するプログラムを作れ。正しいバイナリは{0x20,0x11,0x03,0x11}とし、
暗号化に使う固定値はプログラムの起動時にランダムに選ぶものとする。
0526デフォルトの名無しさん2014/07/17(木) 22:48:41.72ID:PzVhwRo+
   |=番兵|_
  ( ・ω・) <ステンバーイ
  ○={=}〇
   |:::::::::\
、b、eし 、、、(((.@)nesse 7,600,000
0527デフォルトの名無しさん2014/07/18(金) 07:46:25.61ID:hD5lgyjz
お題:引数に1を足した値を返すカメ関数と引数に2を掛けた値を返すウサギ関数を
使って自然数mを自然数nにする(m<n)。この時、ふたつの関数の使用回数の合計の
最小値を求める。
例
m=3, n=10 -> 3
m=3, n=95 -> 10
m=666, n=2014 -> 342
0528デフォルトの名無しさん2014/07/18(金) 11:04:38.51ID:x9tj4BSU
Hello Worldを次の条件に従って出力せよ

・文字H,e,l,o,W,r,dの使用禁止
・1つ以上のクラス、3つ以上のメソッドを使うこと
0529デフォルトの名無しさん2014/07/18(金) 11:37:19.76ID:gVBZQHXV
やめてください!クラスとメソッドがない言語だってあるんですよ!
0530デフォルトの名無しさん2014/07/18(金) 12:06:28.34ID:YVo5FHQe
C++だとincludeでldeが引っかかるしreturn/char/void/cout/cerr/clog/iostream/printfも使用不能か。
プロトタイプ宣言自力でやってputsをint引数扱いで使うとかになりそうだな。大変そう(やる気はない)
C++標準ライブラリを自力宣言とか色々めんどくさそう…というかputsもextern "C" がrで駄目だった。
0531デフォルトの名無しさん2014/07/18(金) 12:11:47.55ID:47agln0f
>>527 Perl
http://ideone.com/B24aJI
0532デフォルトの名無しさん2014/07/18(金) 15:14:02.27ID:8eAqzhQX
>>527
C
http://ideone.com/Z9FckV
0533デフォルトの名無しさん2014/07/18(金) 18:11:33.30ID:QuIJUfIo
小文字のeを使うなという時点でかなりの無理筋
brainfu*kなら戦えるか
0534デフォルトの名無しさん2014/07/18(金) 21:06:13.72ID:hD5lgyjz
>>528 十進BASIC
条件2はよくわからないので、条件1だけ。

PRINT UCASE$("h")&LCASE$("ELLO ")&UCASE$("w")&LCASE$("ORLD")
END
0535デフォルトの名無しさん2014/07/19(土) 04:33:48.76ID:XVk/BaWZ
お題:式を計算する関数を作れ

●中置き記法・ポーランド記法・逆ポーランド記法の混在表記が可能なもの.
(異なる記法を混在させる場合は括弧でくくる)
(括弧は入れ子可能とする)
例:
中置き記法に混在
2 + 3 * ( 10 2 / ) - ( - (4 5 *) 8) = 5
ポーランド記法に混在
(- (+ 2 (* 3 (10 / 2))) ((4 * 5) 8 -))) = 5
逆ポーランド記法に混在
2 3 (10 / 2) * + ((* 4 5) - 8) -

●使用可能な演算子
LEVEL1 制限あり.関数内で定義した演算子のみ可能なもの
例:OperatorDatabase=[+,- *,/] 四則計算のみ
LEVEL2 制限なし.処理系で使用可能なすべての演算
例1:直径10cmの円の面積を求める
(円周率はacosで求める)
(acos -1.0) * (10 ^ 2)
例2:5個から3個選ぶ組み合わせの数を得る
(順列と階乗を求める関数があるとして)
(nPr 5 3) / (factorial 3)

●変数の扱い
LEVEL1 変数使用不可
例:1 + 2 + (+ 1 2) + (2 2 +)
LEVEL2 定義済み変数を使用可能
例:var a = 10 var b = 8
2 + 3 * (a 2 /) - (- (4 5 *) b) = 5
0536デフォルトの名無しさん2014/07/19(土) 09:06:47.75ID:UhVrDbfC
>>527 Julia
function f(m,n)
m * 2 > n ? n-m : 1 + f(m, n % 2 == 0 ? n / 2 : n - 1)
end

julia> f(10,1000)
13.0
0537デフォルトの名無しさん2014/07/19(土) 11:07:15.26ID:dntURGPk
>>528 Python

a = (72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100)
n = int(11).__int__().__abs__().__sub__(0)
s = "%c" * n + "\n"
input(s % a)
0538デフォルトの名無しさん2014/07/19(土) 11:49:25.25ID:UhVrDbfC
>>528 dc
条件1のみ。

$ dc
87521618088882533792115812P
Hello World
0539デフォルトの名無しさん2014/07/19(土) 12:59:47.23ID:k+Ejv3gz
>>528 Prolog

:- nth1(_,[72,101,108,108,111,32,87,111,114,108,100,10],A),put(A),A = 10.
0540デフォルトの名無しさん2014/07/19(土) 13:04:40.54ID:7uPPOXrX
標準入力から以下の形式で日付が与えられるので翌年の1/1まであと何日か求めるプログラムをコードゴルフで書け
YYYY/mm/dd
0541デフォルトの名無しさん2014/07/19(土) 15:43:12.32ID:UhVrDbfC
>>540 J
echo>:-/1 todayno".(,:~'1231',~4&{.)'/'-.~stdin load'dates'
0542デフォルトの名無しさん2014/07/19(土) 18:16:02.45ID:dntURGPk
>>540 Python
print apply(lambda y,m,d:sum(([31,28 if y%4 or y%100==0 and y%400 else 29]+[31,30,31,30,31]*2)[m-1:])-d+1,map(int,raw_input().split('/')))
0543デフォルトの名無しさん2014/07/19(土) 18:27:55.13ID:UhVrDbfC
>>540 Io
a:=standardInput readLine
(Date fromString(a slice(0,5).."12/31",b:="%Y/%m/%d")+1days-Date fromString(a,b))days print
0544デフォルトの名無しさん2014/07/19(土) 18:48:26.57ID:Ftk03FDm
>>540 Perl
print sub{307-int(30.6*($_[1]-3)+0.5)-$_[2]+($_[1]<3?(!($_[0]%400)||!($_[0]%4)&&!!($_[0]%100))-$_[1]:0)}->(split'/',<>)
0545デフォルトの名無しさん2014/07/19(土) 21:14:01.33ID:UhVrDbfC
>>540 R
d=ISOdate;a=scan("stdin",,,,"/");cat(d(a[1]+1,1,1)-d(a[1],a[2],a[3])
0546デフォルトの名無しさん2014/07/19(土) 21:20:07.49ID:UhVrDbfC
>>545
すみません。最後の括弧が抜けていました。
d=ISOdate;a=scan("stdin",,,,"/");cat(d(a[1]+1,1,1)-d(a[1],a[2],a[3]))
0547デフォルトの名無しさん2014/07/20(日) 02:09:38.13ID:VNfkra0+
>>528 Octave
条件1のみ。
disp(["",72,101,108,108,111,32,87,111,114,108,100])
0548デフォルトの名無しさん2014/07/20(日) 19:08:38.88ID:VNfkra0+
>>466 J
f =: 3 : 0
'a b c' =. y
c /: (a (i. |. [) b) i. c
)

f 2 3 5 7 9;2;9 2 5
2 5 9
f 2 3 5 7 9;9;9 2 5
9 2 5
f 2 3 5 7 9;5;9 2 5
5 9 2
f 2 3 5 7 9;3;9 2 5 5 2
5 5 9 2 2
0549デフォルトの名無しさん2014/07/21(月) 17:25:40.56ID:akkmZeu7
お題:数独の答を表す文字列が与えられたとき、'1'が各列の何行目にあるかを
いちばん左の列から順に調べて表示する。
入力
145327698
839654127
672918543
496185372
218473956
753296481
367542819
984761235
521839764

出力
159438276
0550デフォルトの名無しさん2014/07/21(月) 18:23:55.37ID:6zuG3xNl
>>549 Perl

@result=();
while(<DATA>) {
@data = split(//);
for($i=0; $i<=$#data; $i++) {
$result[$i]=$. if $data[$i] eq '1';
}
}
print join("", @result);

__DATA__
145327698
839654127
672918543
496185372
218473956
753296481
367542819
984761235
521839764
0551デフォルトの名無しさん2014/07/22(火) 00:46:19.51ID:vcxuahCG
>>549 Io
f := method(s,
a:=s split("\n")join
for(i, 0, 8,
for(j, 0, 8,
if(a at(9 * j + i) == 49, (j+1) print; break)
)
)
)

Io> f("14532768\n839654127\n672918543\n496185372\n218473956\n753296481\n367542819\n984761235\n521839764")
159438276
0552デフォルトの名無しさん2014/07/22(火) 12:33:05.53ID:5Z4WYQgC
>>549
http://ideone.com/A2ZcxL
0553デフォルトの名無しさん2014/07/23(水) 11:19:21.66ID:6bOgx7OS
くねくね増加列? 横へな
http://nabetani.saku ra.ne.jp/hena/ord23snakemoinc/49w5fv1fsvs7c9tr1l.png
http://nabetani.saku ra.ne.jp/hena/ord23snakemoinc/
0554デフォルトの名無しさん2014/07/23(水) 17:47:02.49ID:DKcKEmnV
>>549 Common Lisp
(defparameter *input*
"145327698
839654127
672918543
496185372
218473956
753296481
367542819
984761235
521839764
")

(format t "~{~D~}~%"
(loop with c = #\1
with r = (make-list 9)
with s = (remove #\Newline *input*)
for i = (position c s) then (position c s :start (1+ i))
while i do (setf (elt r (mod i 9)) (floor i 9))
finally (return (mapcar #'1+ r))))
0555デフォルトの名無しさん2014/07/23(水) 21:54:54.22ID:t4bdDU2u
お題:全n巻の全集があり各巻の頁数はすべてp頁である。毎日x頁づつ読んだら
最後の日は1頁だけだった。p,xから最小のnを求める。解がない場合は偽を返す。
例
p=213, x=16 -> 13
p=214, x=16 -> false
p=333, x=29 -> 27
0556デフォルトの名無しさん2014/07/24(木) 00:14:56.50ID:HPD+fOz3
>>555
ttp://ideone.com/HgxzAH
Cライク。復帰しました。大分反省したのでもう一回やり直そうと思います。頑張りまーす。覚えてる人もいないと思いますが。
こんな感じであってるかな?
いやー、暇でしょうがなかった。
0557デフォルトの名無しさん2014/07/24(木) 00:17:03.00ID:WAodHjWl
>>555
Cで適当に・・・
http://codepad.org/0iHZI53F
0558デフォルトの名無しさん2014/07/24(木) 00:22:37.85ID:MYJWPOnC
>>555
http://peace.2ch.net/test/read.cgi/tech/1313183984/761
0559 ◆0qAv26otVI 2014/07/24(木) 00:30:43.03ID:0bBcPuvT
>>555 C++
#include <iostream>
using std::cout;
void f(int p, int x){
int n;
for(n=1; n<p; n++)
if((n*x+1)%p == 0){
cout <<"p="<<p<<" x="<<x<<" -> "<<(x*n+1)/p<<std::endl;
break;
}
if(n==p)
cout <<"p="<<p<<" x="<<x<<" -> "<<"false"<<std::endl;
}
int main(void){
f(213,16);
f(214,16);
f(333,29);
}
0560デフォルトの名無しさん2014/07/24(木) 00:33:53.31ID:+S+UJ0qj
>>555
Ruby

def f(p,x)
1.upto(x){|i|
return i if (p*i)%x==1
}
return false
end

p f(213,16)
p f(214,16)
p f(333,29)
0561デフォルトの名無しさん2014/07/24(木) 00:44:32.62ID:HPD+fOz3
>>559
文句言うのもどうかと思うけど気になったので。
(n*x+1)%pだと、最終巻の次の巻の1ページ目ということになりませんでしょうか。
0562デフォルトの名無しさん2014/07/24(木) 00:50:39.95ID:MYJWPOnC
>>561
多分問題ないと思う
読むのにかかった日数は (n*x + 1) / p だけれども、今はそれは問題にしていないから
0563デフォルトの名無しさん2014/07/24(木) 01:02:35.47ID:HPD+fOz3
>>562
あー、なるほど。時間計算してるのか。参考にします。
0564デフォルトの名無しさん2014/07/24(木) 01:15:03.33ID:MYJWPOnC
ごめん、>>562 は変だね‥
0565デフォルトの名無しさん2014/07/24(木) 01:19:54.74ID:HPD+fOz3
ん?なんか変?
0566デフォルトの名無しさん2014/07/24(木) 01:32:12.47ID:TvhC2Hp4
>>555 Python 変に難しく考えてしまったorz

def f(p,x):
  if x == 0: return False
  if x == 1: return 1
  r = (-p) % x    #r=(x-p%x)%x or r=((p-1)%x)+1
  a = f(x, r)
  if a: a = (a*x - 1) / r
  return a

q = [(213,16),(214,16),(333,29)]
for p,x in q:
  print "p={}, x={} -> {}".format(p,x,f(p,x))
0567 ◆0qAv26otVI 2014/07/24(木) 03:02:28.81ID:0bBcPuvT
m巻 * pページ = n日 * xページ + 1
だから変形して
m巻 = (n日 * xページ + 1) / pページ ... 余り0
または
(m巻 * pページ - 1)/xページ = n日 ... 余り0  ・・・以上!医女!いじょ!
0568デフォルトの名無しさん2014/07/24(木) 06:23:53.35ID:u4kYnz+D
   |=番兵|_
  ( ・ω・) <キョウモアツイノン
  ○={=}〇
   |:::::::::\
、a、pし 、、、(((.@)ple iwatch
0569デフォルトの名無しさん2014/07/24(木) 09:02:04.89ID:URujTxoj
>>555 Prolog

'全n巻の全集があり各巻の頁数はすべてp頁である。毎日x頁づつ読んだら
最後の日は1頁だけだった。p,xから最小のnを求める。解がない場合は偽を返す。'(_p頁,_x頁,_最小のn) :-
    '全n巻の全集があり'(_全集,_n巻),
    '各巻の頁数はすべてp頁である。'(_全集,_p頁),
    '毎日x頁づつ読んだら最後の日は1頁だけだった。'(_全集,_x頁),!,
    _n巻 = _最小のn.

'全n巻の全集があり'(_全集,_n巻) :-
    length(_全集,_n巻).

'各巻の頁数はすべてp頁である。'(_全集,_p頁) :-
    findall(_各巻,(
          member(_各巻,_全集),
          length(_各巻,_p頁)),
        _全集).

'毎日x頁づつ読んだら最後の日は1頁だけだった。'(_全集,_x頁) :-
    flatten(_全集,_全集の全頁数),
    '最後の日は1頁だけだった。'(_全集の全頁数,_x頁).

'最後の日は1頁だけだった。'([_],_).
'最後の日は1頁だけだった。'(L,_x頁) :-
    length(L1,_x頁),
    append(L1,L2,L),
    '最後の日は1頁だけだった。'(L2,_x頁).
05705692014/07/24(木) 09:38:37.93ID:URujTxoj
>>569
解がない場合の事を書き忘れたので追加しようと思ったのだが、このスタイルでは不可能。

'最後の日は1頁だけだった。'([]) :- !,fail.
'最後の日は1頁だけだった。'([_],_).
'最後の日は1頁だけだった。'(L,_x頁) :-
    length(L1,_x頁),
    append(L1,L2,L),
    '最後の日は1頁だけだった。'(L2,_x頁).

のように偽を加えても、この位置から最初の_n頁を制御することはできないから、止まらなくなる。
ひとつの方法としては、メインの述語の最後に剰余が [] か [_]かを検査するようにするというのがある。
0571デフォルトの名無しさん2014/07/24(木) 09:39:46.98ID:URujTxoj
>>570
すみません。_n頁ではなくて、_n巻でした。
0572デフォルトの名無しさん2014/07/24(木) 09:41:41.86ID:URujTxoj
>>571
さらにまちがい。
'最後の日は1頁だけだった。'([],_) :- !,fail.

引数が足りなかった。
0573デフォルトの名無しさん2014/07/24(木) 12:29:25.56ID:R/GtIe79
>>555 Maxima
(%i1) inv_mod(213,16);
(%o1) 13
(%i2) inv_mod(214,16);
(%o2) false
(%i3) inv_mod(333,29);
(%o3) 27
0574デフォルトの名無しさん2014/07/24(木) 13:24:43.04ID:URujTxoj
>>555 Prolog 直しました。

'全n巻の全集があり各巻の頁数はすべてp頁である。毎日x頁づつ読んだら
最後の日は1頁だけだった。p,xから最小のnを求める。解がない場合は偽を返す。'(_p頁,_x頁,_n巻) :-
    '全n巻の全集があり'(_全集,_n巻),
    '各巻の頁数はすべてp頁である。'(_全集,_p頁),
    '毎日x頁づつ読んだら最後の日は1頁だけだった。解がない場合は偽を返す。'(_全集,_x頁,_最後の日に読んだ頁数),!,
    _最後の日に読んだ頁数 = [_].

'全n巻の全集があり'(_全集,_n巻) :-
    length(_全集,_n巻).

'各巻の頁数はすべてp頁である。'(_全集,_p頁) :-
    findall(_各巻,(
          member(_各巻,_全集),
          length(_各巻,_p頁)),
        _全集).

'毎日x頁づつ読んだら最後の日は1頁だけだった。解がない場合は偽を返す。'(_全集,_x頁,_最後の日に読んだ頁数) :-
    flatten(_全集,_全集の全頁数),
    length(_x頁ならび,_x頁),
    最後の日は(_全集の全頁数,_x頁ならび,_最後の日に読んだ頁数).

最後の日は(L,L,L).
最後の日は([_],_,[_]).
最後の日は(L,_x頁ならび,_最後の日に読んだ頁数) :-
    append(_x頁ならび,L2,L),
    最後の日は(L2,_x頁ならび,_最後の日に読んだ頁数).
0575デフォルトの名無しさん2014/07/24(木) 13:35:40.84ID:HPD+fOz3
Cゲンガーの逆襲4。
とある単桁からなる数列をN分割したパターンを全部出力したい。
さてどうやって実装しようか。

これで小町算(>>489)作れるぞー。

リファレンス。(バグってるかも。)
ttp://ideone.com/qpTEuW
0576デフォルトの名無しさん2014/07/24(木) 17:32:03.85ID:qS/X139e
>>555 Perl
http://ideone.com/N1NXL7
0577デフォルトの名無しさん2014/07/24(木) 22:20:49.22ID:V0BqCKBt
コードゴルフ

月の終わりの曜日(W)と日にち(D)が与えられるので、月の初めの曜日を英語の短縮表記(日曜ならSun、月曜ならMon)を出力せよ
標準入力から以下の形式で与えられる
D W
0578デフォルトの名無しさん2014/07/24(木) 23:15:08.06ID:h2r2VfBN
>>577
テストケースは?
0579デフォルトの名無しさん2014/07/24(木) 23:43:13.92ID:V0BqCKBt
テストケースなんていらんだろう
0580デフォルトの名無しさん2014/07/24(木) 23:52:23.17ID:OkIMP22t
カレンダーがない家庭なんだよ察してやれよ
0581デフォルトの名無しさん2014/07/25(金) 00:27:25.85ID:I7Fekg+S
こいつトリップ外したりID変えたりで癖の悪い奴だよな
0582デフォルトの名無しさん2014/07/25(金) 00:34:33.85ID:HVzq131/
夏休みなのか変な奴が湧いてるね
0583 ◆0qAv26otVI 2014/07/25(金) 00:39:25.37ID:Q9OJTRHT
2014年1月から12月
31 金 -> 1 土
28 金 -> 1 土
31 月 -> 1 火
30 水 -> 1 木
31 土 -> 1 日
30 月 -> 1 火
31 木 -> 1 金
31 日 -> 1 月
30 火 -> 1 水
31 金 -> 1 土
30 日 -> 1 月
31 水 -> 1 木
Mon Tue Wed Thr Fri Sat
D W
31 Fri
31 Fri -> 1 Sat
0584デフォルトの名無しさん2014/07/25(金) 01:13:19.61ID:I7Fekg+S
翌月の曜日を表示させるのかよ
だったらなんで必要のない D を入力させるんだ?
0585デフォルトの名無しさん2014/07/25(金) 01:37:45.97ID:VBkcNL29
>>557
これが限界。プロはもっと短くいけるか。
http://ideone.com/rDd2Gt
0586 ◆0qAv26otVI 2014/07/25(金) 08:00:25.22ID:Q9OJTRHT
>>577 をを、をが2回
idx = (-1*(D-1))%7

(-1*(31-1))%7=-30%7=5
2014年1月から12月
31 金 <= 月->土、火->日、水->月、木->火、金->水、土->木、日->金
28 金 <= 月->火、火->水、水->木、木->金、金->土、土->日、日->月
31 月 <= 月->土、火->日、水->月、木->火、金->水、土->木、日->金
30 水 <= 月->日、火->月、水->火、木->水、金->木、土->金、日->土
31 土 <= 月->土、火->日、水->月、木->火、金->水、土->木、日->金
30 月 <= 月->日、火->月、水->火、木->水、金->木、土->金、日->土
31 木 <= 月->土、火->日、水->月、木->火、金->水、土->木、日->金
31 日 <= 月->土、火->日、水->月、木->火、金->水、土->木、日->金
30 火 <= 月->日、火->月、水->火、木->水、金->木、土->金、日->土
31 金 <= 月->土、火->日、水->月、木->火、金->水、土->木、日->金
30 日 <= 月->日、火->月、水->火、木->水、金->木、土->金、日->土
31 水 <= 月->土、火->日、水->月、木->火、金->水、土->木、日->金
0587デフォルトの名無しさん2014/07/25(金) 13:19:28.12ID:9eCNvkr0
>>575
リファレンスがバグってました。
バグなしで実装できる人、いない?
0588デフォルトの名無しさん2014/07/25(金) 17:48:35.16ID:SXmh4X+k
>>575
>>587
分割位置を出力。
http://ideone.com/py9QdX
0589デフォルトの名無しさん2014/07/25(金) 17:55:44.44ID:9eCNvkr0
>>588
半分丸あげます。
実際の数列分割も挑戦してみてください。
0590デフォルトの名無しさん2014/07/25(金) 18:07:54.43ID:9eCNvkr0
>>588
これ見たおかげで新しいアイディアを思いつきました。
感謝いたします。
0591デフォルトの名無しさん2014/07/25(金) 19:27:50.93ID:9eCNvkr0
>>575
ttp://ideone.com/uCt84k
>>588のアイディアを借りてバグフィックスしました。6割書き直した。Orz
多分これで大丈夫。これリファレンスにします。

さんきゅー>>588

これで小町算作れるけど、どうしよう燃え尽きそうだ。
0592デフォルトの名無しさん2014/07/26(土) 00:06:57.84ID:wBQCFaSk
>>577 Python

x="Sun Mon Tue Wed Thr Fri Sat 29 28 . . . 31 30".split()
print x[sum(map(x.index,raw_input().split()))%7]
0593デフォルトの名無しさん2014/07/26(土) 08:57:13.45ID:aEqt6i59
>>577 Prolog sub_atom/5の述語名が冗長だし、引数に無駄が出る。

p(W,D):-sub_atom(土金木水火月日,U,1,_,W),M is ((D+U-1) mod 7)*3,sub_atom('SatFriThrWedTueMonSun',M,3,_,X),wirte(X).
0594デフォルトの名無しさん2014/07/26(土) 12:58:37.13ID:aEfRiu3t
>>577 Python
d,w=input().split();s="SunSatFriThuWedTueMon"*6;i=s.index(w)+(int(d)-1)*3;print(s[i:i+3])
0595 ◆Cn6bJfqbWU 2014/07/26(土) 14:04:10.42ID:ROBTeEt3
>>577 Perl

($D, $W) = split ' ', <>;
%h = map{$_=>++$i} (@a = qw{Sun Mon Tue Wed Thr Fri Sat});
print "$a[($h{$W} - $D%7) % 7]\n";
0596 ◆Cn6bJfqbWU 2014/07/26(土) 14:10:43.27ID:ROBTeEt3
>>595
木曜の短縮表記はThrじゃなくてThuでしたね、ゴメンチャイ。
0597 ◆Cn6bJfqbWU 2014/07/26(土) 14:15:24.09ID:ROBTeEt3
>>595
しかもこれ、任意の日にちの曜日から該当月の1日の曜日を求める別物をつくっちまった
おrz
ゆるしてたもれ皆の衆
0598 ◆Cn6bJfqbWU 2014/07/26(土) 14:27:14.06ID:ROBTeEt3
>>577 度々すまない、当月の最終日と曜日から次月1日の曜日を求める

(undef, $W) = split ' ', <>;
%h = map{$_=>$i++} @a = qw{Sun Mon Tue Wed Thr Fri Sat};
say $a[($h{$W} + 1) % 7];
0599デフォルトの名無しさん2014/07/26(土) 14:59:53.66ID:AnCclOOo
結局>>577 の問題は正しいの?
0600デフォルトの名無しさん2014/07/26(土) 15:11:55.43ID:5kAGCZV2
多分>>586で当月の曜日に変更してるんだと思う
それでも入力を最終日に限る理由はないんだけど
0601デフォルトの名無しさん2014/07/26(土) 17:10:06.22ID:hp9e8t10
解ける人がいるって事はわからない人はただのクレーマーかバカ
0602デフォルトの名無しさん2014/07/26(土) 17:19:12.12ID:L6yaIKEN
判断しかねたから見送った。
分かりやすい例があれば良かったのだが。
0603デフォルトの名無しさん2014/07/26(土) 17:26:23.32ID:7eFuqeN9
この人の出題は不備多すぎる

自分でコード書いて確認しないのなら
せめて入出力例はしっかり書いてほしい
0604デフォルトの名無しさん2014/07/26(土) 17:37:06.24ID:X0ysu7XS
相変わらずの精神病を相手にしているおまえ等も問題
0605デフォルトの名無しさん2014/07/26(土) 17:42:36.90ID:A8GscDyU
アルゴリズムを確定できずに
いくつかの個別例からそれを満たしさえすれば、ある一般が成り立つとみなしている(ここが精神病)ので
適切な事例さえ列挙できない
さらに、例の部分を満たすアルゴリズムから、逆に例を作ってる傾向もある。
おかげで間違い例が後を絶たない

単なるバカだとここまで同じことを繰り返さない
これは精神病だな
0606 ◆Cn6bJfqbWU 2014/07/26(土) 17:53:52.27ID:LJe5aAu0
課題さえ明確であればアルゴリズムくらい回答者が考えるものでしょ。
577に曖昧さがあり、583、586で惑わされて
レス書いたけど何も書かないより良かったと思うぜ
0607デフォルトの名無しさん2014/07/26(土) 17:59:53.37ID:A8GscDyU
課題を明確にしえるのは
アルゴリズムがかってるから
アホか
0608 ◆Cn6bJfqbWU 2014/07/26(土) 18:02:09.01ID:LJe5aAu0
>>607
いいかげんなこと言うな並べ替えだけで何種類のソートアルゴリズムがあると思ってるんだ。
上の例でも文字列のインデックス計算の他に配列+連想配列の組み合わせとか複数でてるだろ。
お前の言うアルゴリズムとは仕様のことか?
0609デフォルトの名無しさん2014/07/26(土) 18:07:45.06ID:A8GscDyU
>>608
あははは
読解力のないバカはレスするな

あほか!
ソートだけでもどれだけアルゴリズムがあるか!

可能は1個別アルゴリズムが確定されていればよろしい

それを
プププ
可能な全個別とするって

ばかなの?

張本人の精神病なの?
0610 ◆Cn6bJfqbWU 2014/07/26(土) 18:15:27.07ID:LJe5aAu0
わかった、こいつはアルゴリズムを検討する段階は任されたことがないんだ。
0611デフォルトの名無しさん2014/07/26(土) 18:46:08.91ID:t1uv4qIE
こういうお題スレは、あいまいな部分は回答者が補完してコード書く。
それで妥当性見るのもお題の効力じゃないの?
普通にわからなかったら質問するでしょ?
ソートで困ったら俺はバブルソートつかうよ?独断と偏見で。
0612 ◆Cn6bJfqbWU 2014/07/26(土) 18:51:21.33ID:LJe5aAu0
おれはshellだな。
0613デフォルトの名無しさん2014/07/26(土) 19:02:02.51ID:5kAGCZV2
まあこれを見て◆0qAv26otVIも反省してくれればいいんだけどね
0614デフォルトの名無しさん2014/07/26(土) 19:07:17.14ID:t1uv4qIE
一つ対人メソッドを書いておくと。
曖昧ということは自由ということだ。補完の自由がある。
それで仕様うと違うって言われたら、明示しないアンタが悪いということができると思う。
このスレの場合は金銭が発生してるわけでもないし、書くことに意味がある。
それで回答がそろって自分とマジョリティのズレを感じたら自分はずれていたのかと質問者に問うこともできるし。
それを楽しむのも風流だと思いますよ。

ここの質問者はジャッジしてくれないので物足りん。
0615デフォルトの名無しさん2014/07/26(土) 19:46:22.72ID:7eFuqeN9
曖昧であってもある程度自由に臨めるのがお題スレのいいところだと思うけど、
それといい加減なのは違うと思う
解答してもらいたくて出題するのだろうから
そうしやすいよう気を遣ってくれるとありがたい
0616 ◆QZaw55cn4c 2014/07/26(土) 20:05:45.09ID:psfbcR2z
>>614
>ジャッジしてくれない
むしろ回答者の方が的確にジャッジできる場合が多いんじゃないかな、あー俺のはいまいちだったね、とか
0617デフォルトの名無しさん2014/07/26(土) 20:08:18.76ID:t1uv4qIE
>>616
それは個人的な感想で、適合率どれくらいとかほしい情報はいくつかある。
特に曖昧だと、どれくらい推論が達成できてるかの指標にもなるし。
0618デフォルトの名無しさん2014/07/26(土) 22:13:15.33ID:U7I4BaCZ
何がわからないのか質問するのは競技プログラミングではよくあることだけど
ここの一部の人は何か違う方向の人がいてヒステリーだね
0619片山博文MZ悪魔崇拝 ◆T6xkBnTXz7B0 2014/07/26(土) 22:24:22.35ID:h5vm2o/Y
お題:OpenGLを使って3次元のファイラーを作りなさい。
0620デフォルトの名無しさん2014/07/26(土) 22:32:01.65ID:TEOySHsN
>>618
揚げ足取りくらいにしか思ってないんだろな
0621デフォルトの名無しさん2014/07/26(土) 22:33:43.60ID:t1uv4qIE
ネガティブ体質な人はどこにでもいるさ。
自分が棘のある言葉をしゃべってる自覚がない人は、パレートの法則を顧みて全体の2割程度いる。
0622デフォルトの名無しさん2014/07/26(土) 23:07:58.27ID:t1uv4qIE
>>619
あきらめんな!君ならできるさ、さぁやるんだ。
0623デフォルトの名無しさん2014/07/26(土) 23:47:59.83ID:YG8kjpYl
   |=番兵|_
  ( ・ω・) <ステンバーイ
  ○={=}〇
   |:::::::::\
、r、oし 、、、(((.@)hto digieye
0624 ◆Cn6bJfqbWU 2014/07/27(日) 03:13:48.28ID:MQVey8+4
>>549 Perl (ちょっとFunctioal風に)

pint for
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map{$$_[1]}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sort{$$a[0]<=>$$b[0]}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map{[index($_,1), ++$i]} <DATA>;
__DATA__
145327698
839654127
672918543
496185372
218473956
753296481
367542819
984761235
521839764
0625 ◆Cn6bJfqbWU 2014/07/27(日) 03:20:51.87ID:MQVey8+4
>>624 あんれ? &nbsp; がそのまま見えちゃうorz 半角スペースでインデントしてみると

pint for
map{$$_[1]}
sort{$$a[0]<=>$$b[0]}
map{[index($_,1), ++$i]} <DATA>;
__DATA__
145327698
839654127
672918543
496185372
218473956
753296481
367542819
984761235
521839764
0626 ◆Cn6bJfqbWU 2014/07/27(日) 03:31:36.45ID:MQVey8+4
>>625 ゴメン誤記があった
× pint for
○ print for
0627 ◆Cn6bJfqbWU 2014/07/27(日) 03:55:12.40ID:MQVey8+4
>>625 Perl もう少しスマートに

print values %{{sort {$$a[0]<=>$$b[0]} map{index($_,1)=>++$i} <DATA>}};
__DATA__
145327698
839654127
672918543
496185372
218473956
753296481
367542819
984761235
521839764


5.16までなら下記でおkで、5.18は多分だめだと思うw、なぜでしょうねw

print values %{{map{index($_,1) => ++$i} <DATA>}};
__DATA__
145327698
839654127
672918543
496185372
218473956
753296481
367542819
984761235
521839764
0628 ◆Cn6bJfqbWU 2014/07/27(日) 04:25:32.90ID:76uDopVH
>>555 Perl。これはやはり再帰でしょう。

sub f {
$m = $p*$n % $x;
$m == 1 ? $n : $m ? (++$n, &f) : 'false'
}

($p,$x,$n) = (213,16,1); say f;
($p,$x,$n) = (214,16,1); say f;
($p,$x,$n) = (333,29,1); say f;
0629デフォルトの名無しさん2014/07/27(日) 05:00:21.31ID:MTtEpT+F
>>628
C++だと、再起は末尾再起は最適化で消えるけどスタック食うからねぇ。
再起よりもループで済むなら済ませたい。
0630 ◆Cn6bJfqbWU 2014/07/27(日) 05:13:36.84ID:MQVey8+4
マンドくせぇオジサンだな、素直にlambdaで再帰よろ…

オレ様はツンデレじゃないけれど…
つ

sub f {
$n++ while ($m = $p*$n % $x) > 1;
$m ? $n : 'false'
}

($p,$x,$n) = (213,16,1); say f;
($p,$x,$n) = (214,16,1); say f;
($p,$x,$n) = (333,29,1); say f;
0631 ◆Cn6bJfqbWU 2014/07/27(日) 05:28:42.67ID:76uDopVH
>>628>>630
これ剰余が0か1に至らずに巡回する場合は無限ループするな。
そういうケースって数学的にあり得るか否か考えてからコードを書くべきだった
0632 ◆Cn6bJfqbWU 2014/07/27(日) 12:31:08.27ID:76uDopVH
>>631
nがだんだんincrementされて行くと、
遅くともn=xに至ったとき、
あるいはそれ以前にp*nがxの倍数にったとき、
p*nはxで割り切れて剰余は0になりfalseを返す
よって>>628>>630は無限ループすることなく必ず終わる。

証明終わ
0633片山博文MZ悪魔崇拝 ◆T6xkBnTXz7B0 2014/07/27(日) 14:17:15.13ID:YSqiGYKe
>>619 >>622
すでにあった
http://www.oshiete-kun.net/archives/2008/03/true3dshell.html
0634デフォルトの名無しさん2014/07/27(日) 17:53:08.89ID:riiBdtz/
>>628
pが大きくてxが小さい場合、糞みたいにループぐるぐる、か‥
もちっと賢いコードを書けんのか?馬鹿
0635 ◆Cn6bJfqbWU 2014/07/27(日) 18:39:24.51ID:mLEwKlaU
>>634
そいわれてみりゃーそうだな
暇があったら違うのかいてみるよ
ノシ
0636デフォルトの名無しさん2014/07/27(日) 18:54:03.07ID:riiBdtz/
>>635
>暇があったら
書けない、と白状しているようなもの‥
0637デフォルトの名無しさん2014/07/27(日) 19:10:11.38ID:Z/U2bUmX
>>636
クズはいなくて良いから首でもククレカレー
0638 ◆Cn6bJfqbWU 2014/07/28(月) 00:58:13.39ID:KAbzm3+g
>>634
チョット待て、危うく騙されるところだった。

巻数nをincrementするloop構造なので
loop回数はnで決まり、
「頁数pが大きくて読む頁数xが小さい場合」であっても
繰り返し回数は増えない。

つか、お前>>628にレスしているけど>>628のコード
巻数fの中はたったの2行だが、これがどういう意味が全く理解できていないんだろう。

それはさておき、>>555 の問題は剰余類環の問題の発展のように思えてちょっと興味深かったので、
loopで解が見つかるまで回す愚直なやり方ではなく、計算量のOが全然違う数学的な新しい解法を
原理的に考えてみようかと思ったが、それはかなり難しい未解決問題でアルゴリズムが存在するか
不明な問題かもしれない。
0639デフォルトの名無しさん2014/07/28(月) 03:29:51.75ID:oe4NCAZo
>>638
>loop回数はnで決まり、
その n は p, x から決まるのでは?
0640デフォルトの名無しさん2014/07/28(月) 08:25:58.02ID:6U+MneYR
>>555
>>638
考えてみた。
ttp://ideone.com/baFAYM
0641 ◆QZaw55cn4c 2014/07/28(月) 19:18:41.51ID:oe4NCAZo
>>638
>剰余類環の問題の発展のように思えて
うん,お題が数論だといつも意外に人気だね

>計算量のOが全然違う数学的な新しい解法
>>558

>アルゴリズムが存在するか
とりあえずユークリッドの互除法

>>640
本質的に >>555 は,
pn ≡ 1 (mod x)
を n について解く問題,これは gcd(p, x) = 1 であることが必要十分条件.
gcd を求める一般的かつ効率的な方法は上掲のユークリッドの互除法なんだが,
>>640 には互除法たるループが含まれていないのが,ナイーブなぱっとみだが,かなり疑問
時間ができたら精査するね.
0642 ◆Cn6bJfqbWU 2014/07/28(月) 20:45:45.25ID:E78m56Zj
>>639 n が p, x に依存して決まるのはもちろんのことだが、
>>634 が言っていることは
「一巻あたりの頁数pが大きくて、一回に読む頁数xが小さいとイテレーション回数が増大する」
ということ。これは、多分等式:
 n巻 × p頁 = 総頁数 = 読んだ回数×一回に読む頁数x+余り1または0
もっと単純化して書けば
                      n
 n×p ≒ 回数×x → 回数 ≒ p ---
                      x
から受けた印象だと推定している。それは違うと説明したのが>>638。

なぜならある巻をx頁ずつ読だら余る頁を求める計算に繰り返しはなく、剰余式一発だから。
それに、xが1や2のような小さな値のときを考えてごらん。pがどんなに大きくても2巻目の
繰り返しに入ることなく解がすぐ求まる。

何度も繰り返さないと解にいたらないのは、xが大きな素数など、剰余が色んな値を
渡り歩いてなかなか1や0にたどりつかないとき。
そして最悪のケースは、n==xに到達するまでn×p が xの最小公倍数にならない大きなxのとき。
0643 ◆Cn6bJfqbWU 2014/07/28(月) 20:55:46.88ID:E78m56Zj
>>641
この問題、ちょっとやらしいなと思ったのは、前回読んだ巻の残り頁数が次回の
分子の頁数に繰り越されて加算されていくでしょ。
商の分子が変動する場合の剰余類環問題を、巻数をincrementさせるloopを
使わずに効率的に解く方法がすぐ身見出せるか良くわからなかった。

ぼんやり考えていたのは
1. xのgcdとなる(p×n)を算出
2. xのgcdとなる(p×n-1)を算出
3. 1または2でnの小さい方に応じてnまたはfalseを返す

てな感じのもの。

>>558 のリンク先はdat落としてみられないけれど
gcdを求めるのにユークリッドの互除法を使うってことだよね。
おk?
0644 ◆Cn6bJfqbWU 2014/07/28(月) 21:19:39.66ID:+JNLoSEV
>>643
> 1. xのgcdとなる(p×n)を算出
> 2. xのgcdとなる(p×n-1)を算出
> 3. 1または2でnの小さい方に応じてnまたはfalseを返す

だめだ、ちがうな、これ。どうしよう…少し考える。
0645 ◆Cn6bJfqbWU 2014/07/28(月) 21:23:17.73ID:+JNLoSEV
>>644

これかよ
ttp://ja.wikipedia.org/wiki/%E3%83%A6%E3%83%BC%E3%82%AF%E3%83%AA%E3%83%83%E3%83%89%E3%81%AE%E4%BA%92%E9%99%A4%E6%B3%95#.E6.8B.A1.E5.BC.B5.E3.81.95.E3.82.8C.E3.81.9F.E4.BA.92.E9.99.A4.E6.B3.95

こりゃすぐには思いつかないぜよ。

とりあえず>>630で勘弁しといてくれたまえ>ハゲトども
0646デフォルトの名無しさん2014/07/28(月) 22:55:48.06ID:3g1lQlDG
>>555はこれだよね
http://oeis.org/A102057
0647デフォルトの名無しさん2014/07/29(火) 03:29:37.25ID:4ECyUkwP
こう書いてくれないとよくわからん http://oeis.org/A102057/table
0648デフォルトの名無しさん2014/07/29(火) 04:08:47.01ID:Tpl/vwjx
>>555
同じような解答出てたらすまん
http://ideone.com/uXiscr

>>640
p = x のときとか、p = 3, x = 2 のときおかしくない?
0649デフォルトの名無しさん2014/07/29(火) 05:26:34.66ID:4ECyUkwP
>>645
意地悪してつっていてごめんね。
でも、>>555 は素材もよくアレンジの見た目も違和感のない、問題として佳作だと思ったので、再度とりあげたくって。
0650デフォルトの名無しさん2014/07/29(火) 13:12:41.85ID:OtFP2bHT
データ数と処理時間が必ずしも比例関係にないデータを処理する際に、
事前に処理時間を見積もりたいのですが、例えば
データ数   処理時間[秒]
1   2
10   30
100   124
1000   2456
10000   34566
みたいな表(上表の数値は適当に入れているので実際のケースとは異なる)を
作っておいてそれを用いて予測するなどの方式を考えたのですが、
精度よく予測するには、表のデータ数をもっと増やす必要がありますが、こういう場合に、
もっと良い方式はありますか?
0651デフォルトの名無しさん2014/07/29(火) 17:37:17.12ID:H8EUDzLQ
>>650
すれ違い。知りたいことは回帰分析とか最小二乗法とかだろう
0652デフォルトの名無しさん2014/07/29(火) 19:00:59.41ID:Y+4C37is
649 は誰?
0653デフォルトの名無しさん2014/07/29(火) 19:32:29.14ID:4ECyUkwP
http://hissi.org/read.php/tech/20140729/NEVDeVVrd1A.html
0654片山博文MZ次期CEO ◆T6xkBnTXz7B0 2014/07/29(火) 22:08:14.21ID:qgm2mseY
お題:A4のページに大きくよく目立つ文字で「勝訴」と書かれた1ページのPDF文書ファイ
ル「shouso.pdf」を出力するプログラムを作れ。提出期限は8月5日まで。
0655片山博文MZ次期CEO ◆T6xkBnTXz7B0 2014/07/29(火) 22:45:12.66ID:qgm2mseY
アメリカ人やインド人に勝訴とは何かを説明してもらちがあかないだろ。
日本の一般常識を持った君たちだからこそベターにできる分野を任すのがいいと私は思うのだが。
0656デフォルトの名無しさん2014/07/29(火) 23:05:19.29ID:2RoZk/Js
アンタのは特定用途向け丸投げだ。パズルじゃねー。
0657片山博文MZ次期CEO ◆T6xkBnTXz7B0 2014/07/29(火) 23:16:07.77ID:qgm2mseY
仕事は楽しいパズルだけとは限らない。ルーチンワークや、精神をすり減らす
ような思考実験や、うんざりするようなテストの連続、ライブラリーを探し回ることも大事な仕事だ。
実戦に送り出す前にこうした訓練を行うことは大いに意義がある。
0658 ◆Cn6bJfqbWU 2014/07/29(火) 23:44:10.24ID:X2txY3YD
>>649
ユークリッドの互除法を使うという大きなヒントを貰ってしまったので
時間のあるときに解法の原理についてチョコチョコ考えていた。

何となく分かってきたのは
1)n×pをxで割った剰余が1となるのはn×pとxが互いに素な場合
2)剰余が巡り巡って1を経る前に0となる、即ち剰余1を経由せずに0となるのは
 n×pとxの間に>1な最大公約数がある場合。

じゃあそのどちらなのか、そして2)の場合はpが何巻目なのかを
ユークリッドの互除法を応用して求めれば行けそうな気がしてきた。

さて、オレ様に他人の書いた解のソースを参照することなくコードまで具現化できるかな。
一応職業ソフト屋でそれなりに多忙なので時間があったらもう少し検討を進めてみる。
0659デフォルトの名無しさん2014/07/30(水) 03:30:14.89ID:T03rYC/5
http://www.buzzword.jp/img/face10.png
0660デフォルトの名無しさん2014/07/30(水) 03:54:53.06ID:/sawPdNN
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_11_A
06615582014/07/31(木) 04:55:31.05ID:QIEzwx33
>>555 に対してついた解答を調べた
http://ideone.com/C8FJQf

なお >>558 はバグがあったので修正している
http://peace.2ch.net/test/read.cgi/tech/1313183984/766

>>648
この結果で >>648 が p = x = 1 のときにとちったことになっているのは、
私が ruby を読みちがえて翻訳に失敗している可能性が高い、ごめんね‥
0662 ◆0qAv26otVI 2014/07/31(木) 12:19:32.09ID:gZtClr0I
>>648 C/C++
で書き直したいんだけど、戻り値が構造体ってどうやるんだっけ?C++の参照でもいいけど。
1. #a, b が与えられたとき ax + by = gcd(a, b) となる x, y を返す
2.def euclid(a, b)
3. もしaが0ならば[0,1]の2変数を戻り値とする。
4. そうでなければ、euclid(b % a, a)からxとyを求めて、
5. [y - b / a * x, x]の2変数を戻り値とする。
6.end
7.
8.# pn ≡ 1 (mod x) となる最小の正整数 n を返す
9.def answer(p, x)
10. もしgcd(p,x)が1でないならば、falseを返す。
11. euclid(p, x)の2変数のうち最初の変数をnとし、
12. nが0未満なら、n+xを、そうでないならnを返す。
13.end
0663デフォルトの名無しさん2014/07/31(木) 12:42:28.88ID:lG7DqVRw
今のCはコピーでよければ構造体そのまま返せるよ
0664デフォルトの名無しさん2014/07/31(木) 21:43:57.36ID:nq8bRyMX
C++はタプルをコピー返しするかなぁ。
わざわざ構造体組むのメンドすぎる。
そのうちローカル変数のコピー返しはムーブに変更される予定。
0665 ◆Cn6bJfqbWU 2014/07/31(木) 22:19:35.04ID:V8Xz2olM
う〜む、人の解法を見ないようにしていたけど見えてしまったw
でも>>662のanswer関数の10,11,12でなぜpn ≡ 1 (mod x) となる最小の正整数 n が求まるのかは
パット見おれにはよく分からないので、もう少し自力なりの解法を考えてみたい。
俺にとって何か課題を解くということは、自分で考えることだし。

自分なりに少し考えて来たが、いま詰まっているのは
p頁とxの最小公倍数となる巻に至って剰余が0となる前に
剰余が1となる巻nを求める上で、剰余が
p%x,2p%x,3p%x,…、1、最小公倍数%x
と移り変わるとして、これを愚直にループで探さずに一気に収束するように検索うる解法として
ユーグリッドの互除法のような数学的な方法があるのか、ということろ。

ここの観点から>>662のanswer関数の10,11,12のコード(多分ここが核心)に至るには
それは正しいかも知れないが、数学面で論理的な飛躍がかなりあると思う。
間に定理が二つくらい必用な稀ガス
0666デフォルトの名無しさん2014/07/31(木) 23:12:55.88ID:dXluO/J+
×稀ガス
△希ガス
○気がする
0667デフォルトの名無しさん2014/07/31(木) 23:37:00.07ID:uCJCqnN7
インターネット人口の増加により一度途絶えたネット用語が復活強化される現象
0668 ◆Cn6bJfqbWU 2014/07/31(木) 23:55:58.26ID:V8Xz2olM
>>665

一般に、+1づつ増加する自然数1,2,3,…をxで割った
剰余は1,2,…,x-1,0(←ここで割り切れ、商は1となる)

一方>>555の問題は剰余が
p頁*1巻 % x頁 = m1頁
p頁*2巻 % x頁 = m2頁 =m1×2
p頁*3巻 % x頁 = m3頁 = m1×3
…と最初m1から始まって幅m1ずつ増える数列となる。
しかし剰余が大きくなっていきxを越えるとき、m1の倍数からドリフトし、
別の切片から始まり、傾きm1ずつ増える数列に切り替わる。これを繰り返し、
いずれ総ページがpとxの最小法倍数となる巻数で剰余は0になる。

問題は、上記剰余列のなかに値1となるときがあるか、あるならば何巻目か。
1巻目から検索せずに飛躍的して速やかに求める解法があるかどうかだ。

別の面から見ると、p*nがxで割り切れる巻数nは
pとxの最小公倍数から簡単に求められる。
そのときの総ページ数を、
・幅x頁で分割した節点
と
・幅m1で分割した節点
の位置関係のうち、
幅x頁で分割した節点の+1のところに幅m1で分割した節点があるか、
その位置が予測可能かどうかだともいえる。

この規則性みたいな物が定式化できれば解けるかも知れないけど
でも今オレに分かっているのは悪いけどここまでだ。

>>666>>667 どうせなら内容にケチ付けてよ。
0669デフォルトの名無しさん2014/08/01(金) 00:00:11.16ID:oaizx2Er
>>668
スマソ

あっ
0670 ◆Cn6bJfqbWU 2014/08/01(金) 00:11:20.92ID:RgAfYjhy
>>669
これでもくらえー
ttp://i.imgur.com/qOGRTXM.jpg
0671デフォルトの名無しさん2014/08/01(金) 03:48:59.91ID:fdnpPK/5
>>662
http://ideone.com/bRI0H8
0672デフォルトの名無しさん2014/08/01(金) 08:45:28.73ID:fdnpPK/5
>>661
あー、言ってる意味今やっとわかった。
最初みたとき ideone が取り込み中で見れなかったんだよな。

> この結果で >>648 が p = x = 1 のときにとちったことになっているのは、
> 私が ruby を読みちがえて翻訳に失敗している可能性が高い、ごめんね‥

>>555 の問題の意味考えたら p = x = 1 のとき n = 1 じゃないか?
0673 ◆Cn6bJfqbWU 2014/08/02(土) 18:31:07.63ID:S1OmLKHS
>>665
> p頁とxの最小公倍数となる巻に至って剰余が0となる前に剰余が1となる巻nを求める上で、
> 剰余が p%x,2p%x,3p%x,…、1、最小公倍数%x と移り変わるとして、
> これを愚直にループで探さずに一気に収束するように検索しうる解法として ユーグリッドの互除法
> のような数学的な方法があるのか、

>>668
> 幅x頁で分割した節点の+1のところに幅m1で分割した節点があるか、
> その位置が予測可能かどうかだともいえる。
> この規則性みたいな物が定式化できれば解けるかも知れない

互除法ではないがiterationで収斂させる一つの解法を得た。計算量はかなり減るがワーストケースは($p,$x) = (333,29)の様な場合か。
>>555 Perl
sub f {
$n = 1;
$w = $p % $x;
while ($m = $p * $n % $x) {
#say "volume $n: residural=$m";
return $n if $m == 1;
$r = ($x - $m) % $w;
$s = ($x - $m - $r) / $w;
$s += 1 if $r;
$n += $s;
}
'false'
}
($p,$x) = (213,16); say f;
($p,$x) = (214,16); say f;
($p,$x) = (333,29); say f;
($p,$x) = (3,2); say f;
0674デフォルトの名無しさん2014/08/02(土) 19:00:50.86ID:yAhCEHKv
天才火消しエンジニア霧島「もしPMおじさんが丸投げを覚えたら」|paizaオンラインハッカソンLite
https://paiza.jp/poh/kirishima

あなたは天才的頭脳で超人的な演算処理能力を持ち、幾多のデスマプロジェクトを鎮めてきた天才火消しエンジニア霧島 京子(26歳)。
エンジニアの間で知らない者のいない伝説のエンジニアである。
今回霧島に降りかかってきたミッションは、なんと史上最大級の20万人月プロジェクト。霧島の運命やいかに!!
0675デフォルトの名無しさん2014/08/02(土) 19:01:34.52ID:T9/uXsqS
>>555 Prolog

'全n巻の全集があり各巻の頁数はすべてp頁である。毎日x頁づつ読んだら
最後の日は1頁だけだった。p,xから最小のnを求める。解がない場合は偽を返す。'(_p,_x,_最小のn) :-
    length(_p頁,_p),
    length(_x頁,_x),
    '毎日x頁づつ読んだら最後の日は1頁だけだった。'([_p頁],_p頁,_x頁,_p頁,_全集),
    length(_全集,_最小のn).

'毎日x頁づつ読んだら最後の日は1頁だけだった。'(_全集,_p頁,_x頁,[_],_全集) :-
    append(_x頁,[_],_p頁),!.
'毎日x頁づつ読んだら最後の日は1頁だけだった。'(_,_,_,[],_) :- !,fail.
'毎日x頁づつ読んだら最後の日は1頁だけだった。'(_全集_1,_p頁,_x頁,L1,_全集) :-
    '毎日x頁づつ読んだら最後の日は1頁だけだった。まだ読み切ってはいない。'(_全集_1,_p頁,_x頁,L1,_全集).


'毎日x頁づつ読んだら最後の日は1頁だけだった。まだ読み切ってはいない。'(_全集_1,_p頁,_x頁,L1,_全集) :-
    append(_x頁,R1,L1),
    '毎日x頁づつ読んだら最後の日は1頁だけだった。'(_全集_1,_p頁,_x頁,R1,_全集).
'毎日x頁づつ読んだら最後の日は1頁だけだった。まだ読み切ってはいない。'(_全集_1,_p頁,_x頁,L1,_全集) :-
    append(L1,R1,_x頁),
    '毎日x頁づつ読んだら最後の日は1頁だけだった。'([_p頁|_全集_1],_p頁,_x頁,R1,_全集).
0676デフォルトの名無しさん2014/08/02(土) 20:06:32.71ID:PHOlJfeG
ボケ始めたオッサンの繰り言に見えなくもない
0677デフォルトの名無しさん2014/08/02(土) 21:00:27.11ID:0JC1bMIM
数学的なことは分からないが >>566の導出書いとく

p*n=x*m+1のnを見つける関数をf(p,x)とする。試しにf(213,16)を考える

213*n = 16*m + 1
→ n*(16*13 + 5) = 16*m + 1
→ 16*(n*(13+1)-m) = (16-5)*n + 1
これをp*n=x*m+1と見て再帰コール。答えがあれば(n*(13+1)-m)の値が返ってくる

 f(16,11)
 → 16*n = 11*m + 1
 → (11*1+5)*n = 11*m + 1
 → 11*(n*(1+1)-m) = (11-5)*n + 1

  f(11,6)
  → 11*n = 6*m + 1
  → (6*1+5)*n = 6*m + 1
  → 6*(n*(1+1)-m) = (6-5)*n + 1

   f(6,1)
   x==1 なら n=1,m=p-1 → p*1=1*(p-1)+1 だから答えは1 (x==0ならfalse)
   return 1

  6*1 = 1*n + 1 → n=(6*1-1)/1=5
  return 5

 11*5 = 6*n + 1 → n=(11*5-1)/6=9
 return 9

16*9=11*n+1 → n=(16*9-1)/11=13
return 13 (答え)
0678デフォルトの名無しさん2014/08/03(日) 07:30:24.62ID:0gEDGX2+
出来るだけ長い桁の素数を全て求めるプログラム 既出でしたらすみません
0679デフォルトの名無しさん2014/08/03(日) 08:14:19.22ID:sAbtnkbo
>>678
> 素数を全て求めるプログラム

ありません
0680デフォルトの名無しさん2014/08/03(日) 08:43:35.51ID:mU4IZymt
>>678
dlang

import std.stdio;
void main() {
auto a=[2];
auto t=0;
for(int n=3; n<int.max; n+=2) {
foreach(x; a) {
if((t=n%x)==0)break;
}
if(t)a~=n,writeln(n);
}
}
0681デフォルトの名無しさん2014/08/03(日) 09:01:04.16ID:vVRF2pWw
>>678 R
少しだけ長い桁の素数をひとつ求めるプログラム
cat(82:1,sep="")
0682デフォルトの名無しさん2014/08/03(日) 10:05:15.81ID:uHzlV8WU
整数nに対して、n<pである最小の素数pを求める。
n = 3^10 000 000では?
0683デフォルトの名無しさん2014/08/03(日) 11:39:48.05ID:xqw9muIy
C++ではオーバーフローします。
0684 ◆QZaw55cn4c 2014/08/03(日) 12:43:57.49ID:Z1N8do6Q
>>672
そうですね. mod. 1 ならすべて ≡0 になってしまうので,定式化 np≡1 (mod. x) は,n = p = 1 に限ってはまずかったわけですね.

>>674
混んでるねえ‥
0685デフォルトの名無しさん2014/08/03(日) 13:15:02.31ID:uHzlV8WU
>>683
3^10000000は、10進 4771214桁でテキストで出力しても4M。
メモリに乗らないはずがない。
0686 ◆QZaw55cn4c 2014/08/03(日) 14:53:35.68ID:Z1N8do6Q
>>674
http://peace.2ch.net/test/read.cgi/tech/1313183984/767
げ,限界,です‥
0687デフォルトの名無しさん2014/08/03(日) 15:31:42.34ID:q8fBalr7
>>685
2ちゃんのレスに収まる範囲にしてくれ
0688デフォルトの名無しさん2014/08/03(日) 16:21:36.50ID:vVRF2pWw
お題:九州の七つの県を三色で塗り分ける。
0689デフォルトの名無しさん2014/08/03(日) 21:33:42.17ID:xqw9muIy
>>674
ttp://ideone.com/kp55Df
ほぼC。魅惑の総当たり。割と確実だけど遅いよ。
はじめ、一人当たりの単価だしときゃいいだろうとやってたが明らかに甘かったので総当たりにした。
高速化はしてあるが、さほどきいてるとも思えず・・・。Orz
0690デフォルトの名無しさん2014/08/03(日) 21:36:54.00ID:xqw9muIy
>>685
多倍長演算めんどくて俺の頭がオーバーフローします。
uint64_tに乗る範囲にしてくれないと解けないよ。
からつば演算理解してないし。
0691デフォルトの名無しさん2014/08/04(月) 07:24:02.36ID:ZNwoMX35
>>674
ttp://codepad.org/blUCJdTE
ttp://paiza.jp/poh/kirishima/result/c911e7d1226b6faa91d2cf87bd8777ed

ぬーん
0692デフォルトの名無しさん2014/08/04(月) 07:59:26.34ID:sPmFx3ag
ここは現在進行中のコンテストのゴミ捨て場ではありません
0693デフォルトの名無しさん2014/08/04(月) 11:14:26.42ID:TGYEvOJ0
4x4のマスに1から15までの数字と*がある
ベースとなるデータA
1,2,3,4
5,6,7,8
9,10,11,12
13,14,15,*

シャッフルされたデータB
2,14,4,11
8,3,*,6
7,5,10,12
9,1,13,15

BをAに戻すための最短回数とどことどこを移動したか出力せよ
メモリに気をつける事
0694デフォルトの名無しさん2014/08/04(月) 11:38:48.91ID:RXrafceO
POHって登録いらないんだな。
>>689通してみたら、ユニット1で落ちた。出力結果が間違ってるそうだ。
ムラムラしてきた。
0695デフォルトの名無しさん2014/08/04(月) 12:08:37.18ID:RXrafceO
うーん。どう、出力が間違ってるのか予測がつかん。
総当たりのはずなので間違えようがないはずなんだが、なんでだ?
出力がみたい〜〜〜。

いつもトライアルアンドエラーでデバッグしてるのでこういう一発勝負は弱いなー。くそー。Orz
うほほーい。イライラスルー。
0696デフォルトの名無しさん2014/08/04(月) 15:43:19.24ID:RXrafceO
むかついたので、パイザでアカウント取って問題解いてた。キリシマ問題じゃない内部の奴。
Cランクにはなったが自分の力不足を痛感するに至った。うん、がんばろう。
とりあえず、テストは通るんだが時間付与の得点が稼げない。
俺、コーディングおっそいわ。
0697デフォルトの名無しさん2014/08/04(月) 16:53:41.52ID:RXrafceO
リファレンスの火村コード通したらテスト3まで通ったんだがなんで俺はとおらないんだ??
WHAT!?
0698デフォルトの名無しさん2014/08/04(月) 16:55:35.28ID:76hz+sYq
自分も5までしか通らないな
ソートと再帰検索を組み合わせてみたけどダメポ
なんかウィジェットのやつみたいに特殊なやり方があるんだろうか

コスパ順にソートするとか考えてみたけど
コスパが良いからといって必ず使うわけじゃないから難しい
絶対に使わないものを除外するとか有りかな
0699デフォルトの名無しさん2014/08/04(月) 17:43:13.46ID:FIHdxfkd
>>674のテストデータを生成するやつ。


#include <iostream>
#include <float.h>
using namespace std;

int kuujin = 200000;
int subcontractor = 35;
double kuujin_ratio=0.5;

double rnd_border=0.2;

double rndpercent() {
static double X=0, Y=0;
if(X <= DBL_MIN) { X = 0.5/rnd_border; Y = rnd_border/0.5; }
return Y * (X -0.5+((double)rand()/RAND_MAX));
}


int main() {
cout<<kuujin<<endl<<subcontractor<<endl;
double sosu = (double)kuujin/kuujin_ratio;
double base = sosu/subcontractor;
for(int n=0; n<subcontractor; n++) {
unsigned int su = (int)(0.5 + base * rndpercent());
unsigned int tanka = (int)(0.5 + 1000 * rndpercent());
cout<< su <<" "<<tanka*su<<endl;
}
return 0; }
0700デフォルトの名無しさん2014/08/04(月) 18:27:30.67ID:BvocbDBw
>>688 Prolog
http://nojiriko.asia/prolog/p_odai4_688.html
http://nojiriko.asia/prolog/p_odai4_688_2.html
0701デフォルトの名無しさん2014/08/04(月) 18:33:03.93ID:RXrafceO
>>699
参考にします。
けど、折角C++使うんだったら<random>使ってほしいなー。とわがままを言う・・・。Orz

この惨敗画面も本気でやって拝めるもんじゃない。あふー。
http://paiza.jp/poh/kirishima/result/bc22a2f628e9652ea544ad4f7ce81166
http://ideone.com/L2PtHN
0702 ◆QZaw55cn4c 2014/08/04(月) 18:44:04.17ID:Dl8fdRgk
>>698
今回のものは0-1-ナップザック問題に似ている.0-1-ナップザック問題なら厳密解が出るのだが,これは制限条件の中で最大値を求めるものだ.
一方,今回の paiza は縛りのもとで最小値を求めるもの‥
評価値(このばあいは r(i) )の逆数でやってみようか‥

>コスパ順にソートする
キューのソートか‥
>>686 は横型検索だが,キューの毎回ソートは考えていなかった.>>686 はなるたけ早く最小解を導きだせれば枝狩りが増える構造だから,ちょっと考えてみよう‥
0703デフォルトの名無しさん2014/08/04(月) 19:11:52.86ID:RXrafceO
ttp://ideone.com/2L8kZR
暇だったのでジェネレータ書いた。
>>699ほど気の利いたものでもないけど、実行結果がほしかった。
0704デフォルトの名無しさん2014/08/04(月) 19:26:10.97ID:RXrafceO
>>701
ttp://ideone.com/QizlO9
だめだ。イデオン先生にも解けないくらい重いアルゴリズムだった。
ふむ、あきらめついたわ。
0705デフォルトの名無しさん2014/08/04(月) 20:03:23.54ID:RXrafceO
へこむ。うん。がんばろ。
0706デフォルトの名無しさん2014/08/04(月) 21:17:45.26ID:YEOamTiV
がんばれ
0707 ◆QZaw55cn4c 2014/08/05(火) 01:36:10.59ID:pQGhTnDm
>>698
コストパフォーマンス順にあたってみる優先順位付きキューを使ってみたけれども,やっぱりレベル5 どまりだった‥
http://paiza.jp/poh/kirishima/result/df3b3ab0a49741981f99e17135722fb8
http://ideone.com/NmcoC4

幅優先探索じゃもうだめかもね‥
0708デフォルトの名無しさん2014/08/05(火) 05:23:03.28ID:aeIsZwXF
http://paiza.jp/poh/kirishima/result/712087ffa2ff08c13307c84b871be06c

#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>
using namespace std;
int main(){
int M, N, i, j;
scanf("%d%d",&M, &N);
vector<int> num(N), cost(N);
for( i=0; i<N; i++) scanf("%d%d",&num[i],&cost[i] );
unsigned int total = accumulate(num.begin(), num.end(), 0);
vector<unsigned int> X(total+1 ,-1); X[0]=0;
for(j=0; j<N; j++) {
int k = num[j];
for( i=total-k; i>=0; i--) if( X[i]!=-1 ) {
int x = X[i]+cost[j];
if( X[k+i]>x ) X[k+i]=x;
}}
cout<< *min_element(X.begin()+M, X.end()) << endl;
return 0; }
0709デフォルトの名無しさん2014/08/05(火) 18:37:14.26ID:jcF43kba
>>708
短い。速い。ちょっと考察させてもらったよ。
人数に対する最少コストリストをメモリ上に作って最後に人数を満たしたうえで小さいものを選ぶと。
順番とかは考慮しなくてもいいからとにかく作る。と。
結構メモリ食ってるね。ランダム生成した35項目で80万要素くらいのベクタできてた。まー、そうでもしないと高速化は無理か。
割り切りの面白い所は、とりあえず人数満たなくてもいいからリストは作っちゃえ。っていうのが面白かった。
俺はそういう発想が抜けてるから、総当たりとか選んじゃうんだなー。もっと柔軟になりたい。
けど、こんなにメモリ使うとなるとガクブルになっちゃうな。俺。時代を信じようか。512M使っても大丈夫という設定だし。

勉強になりました。
コード公開してくれてありがとう。
0710デフォルトの名無しさん2014/08/05(火) 19:16:23.72ID:AP1I3ptf
最後のほうがわけわからん
0711デフォルトの名無しさん2014/08/05(火) 19:37:16.71ID:jcF43kba
最後は俺の感想だよ。「俺」ってライターに決まってるじゃん。
うーん。どうにか重み係数で一発採用できないか考えてるが難しいねぇ。
人数*(最大コスト-コスト)ダメ
一人当たりのコスト計算ダメ。

なんかこううまい重みないかなー。
0712デフォルトの名無しさん2014/08/05(火) 21:12:52.59ID:I7+4Es4V
このスレって、昔の"bit"(共立出版)の「ナノピコ教室」
みたいですね。
0713デフォルトの名無しさん2014/08/05(火) 21:38:10.93ID:jcF43kba
ttp://ideone.com/Sl5189
普段の手抜き方法で実装できないかやってみたが、やっぱつぶされてるな。
重みづけはなんか失敗するし、ミンマックス法やってみたがうまいことつぶされてる。
俺の常識はもう時代遅れなのかねー。やっぱキテラッタ方法考えるのが常道になりつつあるのか。
うーむ。難しい。

なんか面白い重みないかなー。このパラメータでデバッガ眺めてる目ではわかるんだよな。
これをどうやってコードに落とそうか。。。

>>712
PGの専門誌ってあんまり読んだことないんだよね。
PC自作流行ってた時にそういう専門誌は買ってたけど。
DOS/V PowerReportとか。
0714デフォルトの名無しさん2014/08/05(火) 21:48:46.29ID:vupJs36I
完全にただのナップサック問題じゃねえか
ちょっとググればそのへんにサンプルごろごしてるだろ
0715デフォルトの名無しさん2014/08/05(火) 21:49:15.42ID:KgLhIz0r
>>708
最後の4行目

×if( X[k+i]>x ) X[k+i]=x;
○if( X[k+i]>x ) { X[k+i]=x; }
な、

1人でコーディングしてんなら、前者でも問題ないけど。
0716デフォルトの名無しさん2014/08/05(火) 21:52:50.66ID:vupJs36I
この手のチャレンジは変数一文字で
徹底省略が粋ってもんですよ
0717デフォルトの名無しさん2014/08/05(火) 21:55:46.23ID:jcF43kba
>>714
自力で解きたいんだよ。
解答見るのは簡単だけど、そう言う事じゃないんだ。
うん。俺が馬鹿なんだ。
0718デフォルトの名無しさん2014/08/05(火) 22:08:24.94ID:pQGhTnDm
>>712
なんの雑誌か忘れたけど、圏論は大熊正先生の連載は楽しかったな
0719デフォルトの名無しさん2014/08/05(火) 23:14:55.79ID:vupJs36I
火消しエンジニアか…嫌な響きだ
大抵は3次請4次受け使って人をかき集めて
地獄のようなプレッシャーかけて馬車馬のように働かせるのが仕事

火がついて客も自分も赤字が膨らんでる状況で、設計まで出戻ってリファクタなんか客が許すわけないですしw
0720デフォルトの名無しさん2014/08/05(火) 23:37:23.23ID:jcF43kba
これあれだしな。
火消してるのは前段階のコスト計算であって、火消そのものではないよね。
コスト計算に2年もかかった火村氏は、どうなんだ?
0721デフォルトの名無しさん2014/08/06(水) 00:24:54.09ID:s0fVHAbH
>>714
ナップザック問題だけど、一般的なナップザック問題とは値の向きが逆だね
>>716
最終的には可読性も評価対象

>>719>>720
残り一月で人月合わせとか突っ込みどころは山ほどあるけど、
一番の笑いどころは火村の過ちを全力で後追いしてる所だな。
過剰なテストを高速にパスする遊びで残り1ヶ月を0にすんなww
0722 ◆Cn6bJfqbWU 2014/08/06(水) 01:15:34.84ID:uN0CZP6f
もしも、二度と火を出しさず街の平和を大切にしたければ、
放火魔タイプの放つ火は消さず、放っておいてその屋敷を焼き払う。
そうすれば放火魔も焼け死んで、二度と火を放つことはない。
結論、放たれた火は消しては行けない
これ豆な
0723デフォルトの名無しさん2014/08/06(水) 01:18:35.30ID:lsZz8I5R
>>722
ひどいちゃぶ台返しだなそれ。
0724デフォルトの名無しさん2014/08/06(水) 04:08:29.53ID:ItmB6vur
まあ、君子危うきに近寄らずだな
0725>>7082014/08/06(水) 09:42:39.69ID:v3jxJ6D4
>>715 説明がないので。WKWKRN
#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>
using namespace std;
int main(){
  int M, N, i, j;
  scanf("%d%d",&M, &N);
  vector<int> num(N), cost(N);
  for( i=0; i<N; i++) scanf("%d%d",&num[i],&cost[i] );
  unsigned int total = accumulate(num.begin(), num.end(), 0);
  vector<unsigned int> X(total+1 ,-1); X[0]=0;
  for(j=0; j<N; j++) {
    int k = num[j];
    for( i=total-k; i>=0; i--) if( X[i]!=-1 ) {
      int x = X[i]+cost[j];
      if( X[k+i]>x ) { X[k+i] = x; }
  }}
  cout<< *min_element(X.begin()+M, X.end()) << endl;
  return 0; }
0726デフォルトの名無しさん2014/08/06(水) 13:57:06.46ID:4MouWiFt
>>708は迷路探索で使う代表的手法と同じだろ。
これを使わずクリアできるか?
0727デフォルトの名無しさん2014/08/06(水) 16:35:33.40ID:FZDkv36t
http://www.buzzword.jp/img/face10.png
0728デフォルトの名無しさん2014/08/06(水) 20:20:51.87ID:WntmyFY5
めい…ろ…?
0729デフォルトの名無しさん2014/08/06(水) 23:04:04.43ID:4MouWiFt
ダイクストラ法(最短経路問題)
http://www.deqnotes.net/acmicpc/dijkstra/


迷路の最短経路を求めるには? - ザリガニが見ていた...。
http://d.hatena.ne.jp/zariganitosh/20100419/maze


Rubyで最短経路を探索しよう!
http://melborne.github.io/2010/01/21/Ruby/
0730デフォルトの名無しさん2014/08/07(木) 01:03:27.30ID:DeLfuSuF
迷路探査か、なるほどそれなら再起で組んでも高々50段。スタックも心配ない。
小メモリで組めるかな?おそいかな?この場合深さ優先だけどな。
うーむ。
0731デフォルトの名無しさん2014/08/07(木) 01:19:47.58ID:RY/b0miJ
西暦紀元1年1月1日から9999年12月31日までのすべての日付(年/月/日)
のリストを出力するプログラムを作成せよ

※暦法はグレゴリオ暦とする
※リストは一日毎に改行する
※出力先はファイルでも標準出力でもよい
0732デフォルトの名無しさん2014/08/07(木) 02:43:25.64ID:UpVFQSLy
>>674
再帰を使ってみたが、
Test case 6 で 失敗 (タイムオーバーです)。
http://ideone.com/H3kdVo
0733デフォルトの名無しさん2014/08/07(木) 02:50:06.97ID:DeLfuSuF
ttp://paiza.jp/poh/kirishima/result/9794569a6e858eefa23ddbd2fbd7d200
http://ideone.com/Fok0NZ

>>674
言いだしっぺなので自分でもやってみました。再起。
ちと遅いですねぇ。メモリ量は良好ですけど、ちょっと多重ループになる部分が重たいですなー。
うーむ。

でも、レベルアップしたよ!
前は一個目のテストすら通らなかったからな。>>701
0734デフォルトの名無しさん2014/08/07(木) 03:42:28.49ID:DeLfuSuF
>>733 をイデオン先生に食わせてみたが、解けなかったなぁ。35項目のランダム。
メモリにキックするのがベターか。確かに早いもんなー。うーん。
http://ideone.com/Fok0NZ
コスパ順にソートして深さ優先探索をしました。必要のない実験コードが山のように入っています。
0735デフォルトの名無しさん2014/08/07(木) 03:44:16.22ID:DeLfuSuF
>>732
短いですな。その短さで追いつけないとなるとホント手がないね。
0736デフォルトの名無しさん2014/08/07(木) 04:06:19.68ID:DeLfuSuF
ttp://ideone.com/JJJ0XX
一行追加したら超高速化した。ケース6で跳ねられたけど。
手元では、>>708より早く解答出してるんだが。なんででしょ?
長いテストデータほしー。
0737デフォルトの名無しさん2014/08/07(木) 04:14:29.61ID:DeLfuSuF
>>708が安定アルゴリズムになるのに対して、俺のは不安定だからなぁ。
フラットなデータ持ってこられると弱いかも。
0738デフォルトの名無しさん2014/08/07(木) 05:43:27.51ID:v1FM2WV+
再帰なら末尾最適化したいができそうにない。
末尾最適化するなら根本のアルゴリズムから変更しないと。
0739デフォルトの名無しさん2014/08/07(木) 06:08:01.46ID:DeLfuSuF
それは難しいね。俺には>>736以上は望めないよ。結構満足したもん。
元々再起あんまり好きじゃないんだよ。だけど今回はしょうがないから使ったのであんまり再起は詳しくないんだ。
まぁ、手でループに展開するしかないんじゃないかナ。
その時は、スタックバッファは必要だわ下手するとGotoが必要になるわ。あんまりいいことなさそう。
ほんと、アルゴリズムそのものを変えないといけない。それは難しいな。やっとここまでたどり着いたんだが。Orz
0740デフォルトの名無しさん2014/08/07(木) 06:46:40.64ID:v1FM2WV+
末尾最適化なしではクリア無理と見た。状態保存のロスが大きく。
0741デフォルトの名無しさん2014/08/07(木) 08:38:10.19ID:DeLfuSuF
ん?メモリはそんなにくってないよ。
引数の半分は参照だし、8バイト*3を50スタックだからスタックオーバーフローが怖いくらいだね。
ほかはヒープだったりとか必要経費だったりとか。
普通スタックって1MB位あるもんじゃないの?十分収まってるはずなんだけど。
オッかしいなー。
0742デフォルトの名無しさん2014/08/07(木) 08:48:40.60ID:DeLfuSuF
寝ますです。おやすみなさいませ。皆様。
0743デフォルトの名無しさん2014/08/07(木) 18:35:20.23ID:v1FM2WV+
最大値(最小値)を求めるループ部分を再帰化したとき末尾再帰にできるものか?
簡単に思いつかない。
0744デフォルトの名無しさん2014/08/07(木) 23:04:13.64ID:DeLfuSuF
おはよう。
基本的にはスタックからヒープに逃がしてやる、スタックバッファの手法でループには展開できるよ。
手でやらないといけないし、コードの可読性めちゃ下がるけど。
幸いタプルが使えるようになったので、一々構造体定義しなくてもよくなったしハードルは下がってるよ。
ループは上限が不定値だからね。固定値だったらループアンロールできたかもだけど。
ループになったら、再起使うかループ構文使うかしかないし。選択肢はない。
0745デフォルトの名無しさん2014/08/08(金) 00:54:49.14ID:SSoGNqki
再計算を省いて再帰でクリアできた。ループは除去したいがわからん。



#include <stdio.h>
#include <vector>
using namespace std;
unsigned int M, N, num[50], cost[50];
vector< vector<unsigned int> > hash(200001 ,vector<unsigned int>(50, -1));


unsigned int recursion(int m, int n) {
if (m <= 0) return 0;
if (n == N) return -2;
if(hash[m][n]!=-1) return hash[m][n];
hash[m][n]=-2;
for (int i = n; i < N; i++) {
int w = recursion(m - num[i], i + 1);
if(w ==-2) continue;
hash[m][n] = std::min(hash[m][n], w+cost[i] ); }
return hash[m][n]; }



int main() {
scanf("%d%d",&M, &N);
for (int i = 0; i < N; ++i) scanf("%d %d", &num[i], &cost[i]);
printf("%d\n", recursion(M, 0));
}
0746 ◆Cn6bJfqbWU 2014/08/08(金) 00:59:24.42ID:+CEJg0iS
>>673 の計算量をもっと減らせないか考えていたら、
何か本質的な物が見つかるような気がして暇を探して考えていたけど…

>>674 の人気が高くて気になってきた。
そもそも>>674は縦読みで何の課題か分かっていない、ナップザック?

しかし霧島 京子(26歳)って…
ムチムチブリンブリンのかわいこちゃんだったらオレ、どうしよう。
0747デフォルトの名無しさん2014/08/08(金) 01:32:57.72ID:la99q2hi
>>745
やっぱ、メモリにキックするのが早道だね。むー。
しかし、難関をこうもあっさり超えていくとは、尊敬します。
俺も才能ほしい。
0748デフォルトの名無しさん2014/08/08(金) 01:44:08.07ID:la99q2hi
>>746
妄想上なら何やっても犯罪にはなりませんよ?(ニッコリ
でもリアライズしないでください。(きっぱり。
0749デフォルトの名無しさん2014/08/10(日) 00:26:40.00ID:bijgh7u9
すてんばーい
0750 ◆0qAv26otVI 2014/08/11(月) 13:44:33.88ID:cqkTXkup
お題:夏休みの自由研究
+--------------------+
|□時間差     X|
+--------------------+
|start 04:56:34.567 |
|stop 12:40:32.456 |
|          |
|+--+ 07:43:57.389 |
||−|        |
|+--+   27838389 |
+--------------------+
stopがstartより小さいときは+24:00:00して考える。
0751デフォルトの名無しさん2014/08/12(火) 00:16:39.75ID:KCPrEMOL
>>750 Python

def f(start,stop):
  a = [1000*reduce(lambda x,y:60*x+y, map(float,s.split(':'))) for s in (start,stop)]
  b = [int(a[1]-a[0]+86400000) % 86400000]*2
  for d in (1000,60,60): b = list(divmod(b[0],d)) + b[1:]
  print u"""\
+--------------------+
|□時間差     X|
+--------------------+
|start {} |
|stop {} |
|          |
|+--+ {:02d}:{:02d}:{:02d}.{:03d} |
||−|        |
|+--+   {:>8d} |
+--------------------+
""".format(start,stop,*b)

f("04:56:34.567","12:40:32.456")
0752デフォルトの名無しさん2014/08/12(火) 13:36:15.80ID:IbGC0kFi
Erlangだけ遅い。抜かせるか?


テストケース7 Erlang 最速実行時間 1.16 秒
https://paiza.jp/poh/kirishima
0753デフォルトの名無しさん2014/08/12(火) 20:35:40.77ID:oZd1SAr2
   |=番兵|_
  ( ・ω・) <イワレチャッタノン
  ○={=}〇
   |:::::::::\
、、、、し 、、、(((.@)
0754デフォルトの名無しさん2014/08/13(水) 06:44:29.07ID:I2kL8FiE
お題:与えられた文字列を正方形にして出力
縦横の字数が等しければ正方形とします
字数が足りない場合は'*'で埋めること
余る場合は余計な文字を捨ててかまいません
ただし与えられた字数により近い正方形にすること
例:http://ideone.com/mA41q6
0755デフォルトの名無しさん2014/08/13(水) 07:37:57.52ID:cRPYH3tS
>>ただし与えられた字数により近い正方形にすること
1, 2=1x1
3, 4, 5, 6=2x2
7, 8, 9, 10, 11, 12=3x3
13, 14, 15, 16=4x4
最終行が*だけにならないようにすること。
0756デフォルトの名無しさん2014/08/13(水) 08:58:47.36ID:FchliIN8
>>754 Perl
http://ideone.com/3fjixS
0757デフォルトの名無しさん2014/08/13(水) 16:19:10.80ID:yCsZpoZZ
>>754
http://ideone.com/ABkOGn
0758デフォルトの名無しさん2014/08/13(水) 17:36:45.44ID:qOurLBre
>>754
ttp://ideone.com/CVIThj
ほぼC。今調子悪いのでこれが限界。かなり適当に組んだ。
0759デフォルトの名無しさん2014/08/13(水) 19:17:52.47ID:tOwUt3z1
本調子ならおれもっといけるぜアピールっているのだろうか
0760デフォルトの名無しさん2014/08/13(水) 19:24:53.23ID:qOurLBre
勘ぐりすぎ。
適当に組んだから免責してくれ程度だよ。
0761デフォルトの名無しさん2014/08/13(水) 19:34:01.96ID:tOwUt3z1
公開するなら自信持ってけよ
ソースに対して文句言われるのがいやなら無理して公開せんでいいだけだし
任意なんでなここへのレスは

時々いるんだよ、必ず言い訳が伴ってて、常にリリースが暫定のやつ
そんでもって、時間切れで正式リリースなプログラマが
0762デフォルトの名無しさん2014/08/13(水) 19:40:22.62ID:qOurLBre
いや、指摘されるの嫌なわけじゃないよ。むしろやってくれ。参考にするから。
ただ今回は、転用しないでほしいくらいかな。自信ないから。
まぁ、いつものことだが、転用するんだったら自己責任で。
0763デフォルトの名無しさん2014/08/13(水) 20:03:44.72ID:DJCgQYDb
公開できない奴がごちゃごちゃ言うなよ...
0764デフォルトの名無しさん2014/08/13(水) 20:12:36.46ID:tOwUt3z1
>>763
おれのことか?おぉ?
0765俺もな〜2014/08/13(水) 20:16:26.22ID:DJCgQYDb
>>764
そうだよ、ごちゃごちゃ言うならコードに言えよ
0766デフォルトの名無しさん2014/08/13(水) 20:21:59.06ID:tOwUt3z1
>>765
いや、コードに対しては特にない
ただ、予防線はるやつが嫌いなもんで、その類いかと思ってしまっただけだ
0767デフォルトの名無しさん2014/08/14(木) 02:26:06.35ID:prwA4+6G
   |=番兵|_
  ( ・ω・) <ステンバーイ
  ○={=}〇
   |:::::::::\
、、1、し 、、、(((.@)3 14 15 16
0768デフォルトの名無しさん2014/08/14(木) 09:35:46.01ID:ii4GmoqV
>>754 Common Lisp
http://ideone.com/uP1D2K
07697682014/08/14(木) 11:23:44.17ID:zya7E7N4
>>754 Common Lisp
ちょっと修正(印字関数の削減等)
http://ideone.com/9VkbPB
0770デフォルトの名無しさん2014/08/15(金) 12:54:39.82ID:Aqg845W8
http://www.buzzword.jp/img/face10.png
0771デフォルトの名無しさん2014/08/15(金) 15:15:35.71ID:bnrtPcKG
>>770
カバおじさんウザいからあぼーんにしといたった
0772デフォルトの名無しさん2014/08/17(日) 04:55:20.49ID:QcJzz8Fl
>>754 J
f=: ,~@([: <. 0.5 + %:@#) $!.'*' ]

f '123456'
12
34

f '1234567'
123
456
7**
0773デフォルトの名無しさん2014/08/17(日) 07:11:05.08ID:QcJzz8Fl
>>754 Io
f := method(s,
n := s size sqrt round
s = s .. "*" repeated(n)
for(i, 0, n - 1, s slice(i * n, (i + 1) * n)println)
)
0774デフォルトの名無しさん2014/08/17(日) 14:56:13.60ID:5XbRNZSc
>>772
Jって、プログラム短いけど、習得するのは大変そうだな。
0775デフォルトの名無しさん2014/08/17(日) 15:22:49.38ID:B7+zOVct
圧縮率が半端ないといつも思う。
0776デフォルトの名無しさん2014/08/17(日) 16:21:22.61ID:QcJzz8Fl
お題:百円ショップで買い物をして支払いを一万円札だけでおつりなしで
済ませるには最低いくつの商品を買えばよいか。すべての商品は百円で
消費税は8%とする。
0777デフォルトの名無しさん2014/08/17(日) 17:03:23.47ID:rzQuK8EB
>>776 Python
from fractions import Fraction
print Fraction(10000,108).numerator
0778デフォルトの名無しさん2014/08/17(日) 20:11:41.39ID:8Zahaw3H
{.2 x:1e4r108
折角だから初めてJに手を付けた
たったこれだけのことなのに数時間悩んだ
分かりづらすぎだろ
0779デフォルトの名無しさん2014/08/17(日) 21:04:48.26ID:8sWJIA08
>>754 Emacs Lisp
(require 'cl-lib)
cl-lib

(defun f (s)
(let* ((a (length s))
(b (floor (+ (sqrt a) 0.5))))
(princ (cl-loop for i from 0 below (expt b 2)
concat (if (< i a) (substring s i (1+ i)) "*")
concat (if (= (% (1+ i) b) 0) "\n" "")))))
f

(f "123456")
12
34
"12
34
"

(f "1234567")
123
456
7**
"123
456
7**
"
0780デフォルトの名無しさん2014/08/17(日) 21:34:18.11ID:8sWJIA08
>>776 Emacs Lisp
(require 'cl-lib)
cl-lib

(/ (cl-lcm 10000 108) 108)
2500

(let ((a 10000))
(cl-loop
(when (= (% a 108) 0) (cl-return (/ a 108)))
(cl-incf a 10000)))
2500
0781デフォルトの名無しさん2014/08/18(月) 00:25:11.54ID:2fxbX/DU
>>776
あぁ、一万円札を1枚使い切るじゃなくて、一万円札を大量投入しておつりなしか。
勘違いしてた。
0782デフォルトの名無しさん2014/08/18(月) 00:36:27.30ID:2fxbX/DU
ttp://ideone.com/t3TcKr
ほぼC。C++にもlcm入る予定だけど、まだ先の話なのでもどかしい。
0783デフォルトの名無しさん2014/08/18(月) 01:44:16.48ID:TLYIzQdA
10000*p≡0(mod 108)
0784デフォルトの名無しさん2014/08/18(月) 05:54:54.07ID:nROqn5pO
>>776 Perl
http://ideone.com/1OsnkK
0785デフォルトの名無しさん2014/08/18(月) 12:07:50.98ID:yxRsaZzj
>>776
Squeak Smalltalk

(108 lcm: 10000) / 108 "=> 2500 "
0786デフォルトの名無しさん2014/08/18(月) 13:23:36.09ID:RJoulXY0
>>776 Prolog 順序が気に入らない。それと、込みの  消費税込みの商品の価格という仕様に存在しない語。


'百円ショップで買い物をして支払いを一万円札だけでおつりなしで
済ませるには最低いくつの商品を買えばよいか。すべての商品は百円で
消費税は8%とする。'(_いくつ) :-
いくつ買えばよいか(_いくつ),
'百円ショップ(すべての商品は百円で消費税は8%とする。)で買い物をして支払いを'(_いくつ,_百円ショップで買い物をして支払いを),
'一万円札だけでおつりなしで済ませる'(_百円ショップで買い物をして支払いを),!.


いくつ買えばよいか(_いくつ) :-
nth1(_いくつ,_,_).


'百円ショップ(すべての商品は百円で消費税は 8%とする。)で買い物をして支払いを'(_いくつ,_百円ショップで買い物をして支払いを) :-
'すべての商品は百円で消費税は8%とする'(_消費税込みの商品の価格),
__百円ショップで買い物をして支払いを is _いくつ * _消費税込みの商品の価格.


'すべての商品は百円で消費税は8%とする'(_消費税込みの商品の価格) :-
_消費税込みの商品の価格 is 100 * (100 + 8) / 100.


'一万円札だけでおつりなしで済ませる'(_百円ショップで買い物をして支払いを) :-
0 is _百円ショップで買い物をして支払いを mod 10000.
07877862014/08/18(月) 13:25:02.06ID:RJoulXY0
>>776 Prolog 順序が気に入らない。それと、消費税込みの商品の価格という仕様に存在しない語。
0788デフォルトの名無しさん2014/08/20(水) 01:48:35.20ID:CfiKXfMs
   |=番兵|_
  ( ・ω・) <ステンバーイ
  ○={=}〇
   |:::::::::\
、、E、し 、、、(((.@)mE,dit,or,,
0789デフォルトの名無しさん2014/08/20(水) 03:34:16.21ID:fFEsrW+Y
100円ショップで買い物をして、支払をお釣り無しで済ませるには枚数が最も
少なくて一万円札でいくら持ってゆけばよいか。(全ての商品は108円とする)
(使用出来るのは硬貨は無く、紙幣は一万円だけとする)

HINT:>>776は、1万円持って行き、1個だけ買って後は募金箱へ。
0790デフォルトの名無しさん2014/08/20(水) 17:54:58.43ID:A0Nsq15v
>>776には「1万円札だけ」「おつりなし」って書いてあるが……
0791デフォルトの名無しさん2014/08/20(水) 21:04:47.65ID:7LTH9ejx
>>789
ttp://ideone.com/LqjlYd
ほぼ>>782。まぁ、揚げ足にも取り方というものがあってね。
そんな強い言葉を使うということはそんなに自信あったかな?と。
絶望の言葉をすてて、希望の言葉を使おう(提案
っていうと、宗教っぽいな。
0792デフォルトの名無しさん2014/08/21(木) 12:24:02.91ID:VQrk/GGW
どうせ◆0qAv26otVIなんでしょ
0793デフォルトの名無しさん2014/08/23(土) 00:37:19.83ID:q/+BPTqG
正体はQZ
0794デフォルトの名無しさん2014/08/23(土) 08:20:43.01ID:z51kiHis
   |=氷水|_
  ( ・ω・) <ステンバーイ
  ○={=}〇
   |:::::::::\
、Ic,、し e、、(((.@)Bu,c,,ket, Challenge
0795デフォルトの名無しさん2014/08/23(土) 12:25:00.17ID:3KpHrN/+
お題: マーブルチョコレート(1個100円)を買ったら、
『世界の旅シリーズ シール』が1枚入っていました。
パッケージには『全49種類 1枚入り』との書いてありました。
どの種類も同じような比率で入っているとすると、
だいたいどのくらいのお金を使えば『全49種類』をコンプできるでしょうか?
0796デフォルトの名無しさん2014/08/23(土) 16:49:58.23ID:8w+qgx7U
100*(*([:+/[:%1+i.))49
0797デフォルトの名無しさん2014/08/23(土) 23:49:39.60ID:oMsmBkwg
49!*100円くらい?
数学ダメなのでよくわからん。
0798デフォルトの名無しさん2014/08/24(日) 00:02:37.36ID:rlxyewU2
約21948円
0799デフォルトの名無しさん2014/08/24(日) 00:31:07.68ID:ZwPHl626
>>795
ttp://ideone.com/8cx4gv
ほぼC。愚者の方法で解いてみた。大体2万円。
メルセンヌツイスターなかったら俺には解けない問題だ。
いっけね、消費税のこと忘れてた。自分で加算してくだせー。Orz=3
0800デフォルトの名無しさん2014/08/24(日) 00:51:05.86ID:rlxyewU2
ideone.comにScheme有ったので
ttp://ideone.com/BCWZ6A
俺も消費税考慮してないw。
0801デフォルトの名無しさん2014/08/24(日) 12:41:43.10ID:thPtQl+P
プログラミングのお題ということだから、計算するより実際に試行させる方が正しい気がする
0802デフォルトの名無しさん2014/08/24(日) 18:37:38.71ID:zvunYc1j
計算機に計算させなくてどーする
0803デフォルトの名無しさん2014/08/24(日) 19:11:53.26ID:1ar9zXjo
>>795
Squeak Smalltalk で。

49 * (1.0/(1 to: 49)) sum * 108 "=> 23703.9546504393 "

10000人で試行した場合、
50%の人がコンプするのに必要な金額は26136円。
最少額でのコンプは 9936円。もっとも金額がかかった人は71604円。

| N count stat sum size |
N := 10000.
count := (1 to: N) collect: [:idx |
 | bag |
 bag := Bag new.
 [bag add: 49 atRandom. bag asSet size = 49] whileFalse.
 bag size].
stat := count asBag sortedCounts.
sum := 0.
size := stat findFirst: [:kv | (sum := sum + kv key) > (N * 0.5)].
^{((stat first: size) collect: #value) max. count min. count max} * 108

"=> #(26136 9936 71604) "
0804デフォルトの名無しさん2014/08/24(日) 19:12:54.88ID:rlxyewU2
暇で仕方なかったので俺もメルセンヌツイスター使ってみたよ
百万回やってみた結果
約21835円になった消費税は入ってない。
0805デフォルトの名無しさん2014/08/24(日) 19:50:39.50ID:O3P3S/Bj
結果はわからないが、これか?


4900 * 1/H(49, 49)
+ 5000 * H(49, 1)/H(49, 50)
+ 5100 * H(49, 2)/H(49, 51)
+ ・・・

= Σ(n=0,∞) (4900+100n) * H(49, n)/H(49, 49+n)

組合せ (数学) - Wikipedia
http://upload.wikimedia.org/math/1/9/4/1941c34eb8b07a0fd45990620764282b.png
0806デフォルトの名無しさん2014/08/24(日) 19:52:42.57ID:O3P3S/Bj
間違えた。早い段階でそろった場合は引かないと計の確率が1を超えてしまう。
0807デフォルトの名無しさん2014/08/24(日) 20:53:15.02ID:IawgzNoV
>>795
#include <stdio.h>
int main(){
double sum = 0;
for (int i = 1; i <= 49; ++i)
sum += 49 / (double)i;
printf("%d¥n", (int)(100 * sum));
return 0;
}

結果:21948
0808デフォルトの名無しさん2014/08/24(日) 22:15:19.06ID:rlxyewU2
>>804
嗚呼、バグってたorz
やり直したら219.400551まで収束した。

Gauche依存
(use math.mt-random)
(use srfi-43)
(define mt (make <mersenne-twister> :seed (sys-time)))
(define (comp n)
(let ((v (make-vector n 0)))
(let loop ((count 0))
(let ((index (mt-random-integer mt n)))
(vector-set! v index (+ (vector-ref v index) 1))
(if (not (vector-index zero? v))
(+ count 1) ;バグ修正前はcountをそのままリターン最後をカウントしてなかった。
(loop (+ count 1)))))))
(let ((count 0)
(result 0))
(while (< count 1000000)
(set! result (+ result (comp 49)))
(set! count (+ count 1)))
(exact->inexact (/ result count)))
0809デフォルトの名無しさん2014/08/25(月) 10:32:01.38ID:W/mMJDzT
>>803
Squeak Smalltalk で。試行版をもっとシンプルなコードで。
乱数は組み込みのを使い 100万回で 219.521 * 108 円に収束。

(1 to: 1000000) inject: 0.0s3 into: [:ave :cou |
| bag |
bag := Bag new.
[bag add: 49 atRandom. bag asSet size = 49] whileFalse.
bag size - ave / cou + ave
] "=> 219.521s3 "
0810デフォルトの名無しさん2014/08/25(月) 12:07:26.40ID:/4YWSaS0
http://g.tenhou.net/sc/raw/viewer.cgi?scc2014082500.html.gz&;2303

”牌譜”のリンク先にあるURLはどのような規則で生成されるのか?
エロい人教えて
http://tenhou.net/0/?log=2014082500gm-00b9-0000-c4f50317
http://tenhou.net/0/?log=2014082500gm-00a9-0000-8ea97938
http://tenhou.net/0/?log=2014082500gm-00a9-0000-38817638


★見方

開始時間
 ↓
00:01 | 17 | 三鳳南喰赤− | 牌譜 | アニソン好き(+38.0) Lv1@きりりん(-7.0) NAGISUKE(-31.0)
     ↑
   所要時間(分)
0811デフォルトの名無しさん2014/08/26(火) 03:02:55.17ID:WR0tZU4r
   |=番兵|_
  ( ・ω・) <ステンバーイ
  ○={=}〇
   |:::::::::\
、、、、し e、、(((.@)vv、vvv、vvvvv
0812デフォルトの名無しさん2014/08/30(土) 11:40:55.99ID:RbgqTyUM
お題: 2000年2月生まれの中学生です!
うちのクラスは40人いて、誕生日が同じ人が2組4人います。
これってけっこう珍しいと思うんですけど、同学年の全国30000クラスのうち、
うちのクラスみたいなのは何クラスくらいあるんでしょうか?
0813デフォルトの名無しさん2014/08/30(土) 11:43:13.91ID:69TFMMC6
何クラスくらいあるかは、実際に調べないと分からない
0814デフォルトの名無しさん2014/08/30(土) 12:44:37.38ID:Co7FJu1+
>>812
どうしてほしいんだ?モンテカルロでもやれってか?
それは統計の分野なのでデータのないPGには難しい。
0815デフォルトの名無しさん2014/08/30(土) 17:28:40.22ID:DcuEk6Fw
>>812
http://ja.wikipedia.org/wiki/%E8%AA%95%E7%94%9F%E6%97%A5%E3%81%AE%E3%83%91%E3%83%A9%E3%83%89%E3%83%83%E3%82%AF%E3%82%B9
0816デフォルトの名無しさん2014/08/30(土) 23:44:05.36ID:FDr4RXqe
ts
0817デフォルトの名無しさん2014/08/30(土) 23:52:11.68ID:OIZS8T3M
いろいろ壊れているね‥
0818デフォルトの名無しさん2014/08/31(日) 01:10:08.91ID:IHvb2qNL
>>812
完全に数学の問題だが誕生日が一様分布してると仮定すると
40人中2組以上同じ誕生日いる確立は約64%になる
0819デフォルトの名無しさん2014/08/31(日) 01:15:12.69ID:IHvb2qNL
説明はめんどいのでここを見てくれ
ttp://okwave.jp/qa/q7977537.html
0820デフォルトの名無しさん2014/08/31(日) 01:42:39.83ID:B6a5pXyR
うほ。数学の問題だったか。やっぱ数学はよくわからん。
365の階乗はC++では無理なのでどうしようかな・・・。
ウィキペディアのはコードにできそうだけど。
0821デフォルトの名無しさん2014/08/31(日) 01:47:57.43ID:DCfsrrwi
C++のライブラリってBigInt無いのけ
0822デフォルトの名無しさん2014/08/31(日) 02:18:44.05ID:B6a5pXyR
ttp://ideone.com/uKrB40
ほぼC。一応コードにしてみたが、全然自信がない。
あってるかどうか教えてください。

>>821
Boostっていうライブラリにはあるけど、標準化は現在策定中。
17年にはいるか入らないかって感じ。
0823デフォルトの名無しさん2014/08/31(日) 02:34:36.77ID:kzVlzkbG
2月29日生まれのこをを忘れないでください。。。。。
0824デフォルトの名無しさん2014/08/31(日) 02:40:29.07ID:B6a5pXyR
救済策は・・・、ある!
引数のYearDayを366にしてください。ペコリ。
0825デフォルトの名無しさん2014/08/31(日) 02:41:30.15ID:B6a5pXyR
いや、違うか。
閏計算とか猛烈によくわからんことをしないといけないのか。
0826デフォルトの名無しさん2014/08/31(日) 02:46:02.72ID:kzVlzkbG
2000年生まれって縛りだから366で良いと思う。
0827デフォルトの名無しさん2014/08/31(日) 02:47:06.98ID:B6a5pXyR
うるう年対応ってこれでいいの?

#include <iostream>
#include <cstdint>
//ttp://ja.wikipedia.org/wiki/%E8%AA%95%E7%94%9F%E6%97%A5%E3%81%AE%E3%83%91%E3%83%A9%E3%83%89%E3%83%83%E3%82%AF%E3%82%B9

double U(std::uint64_t N,std::uint64_t M,std::uint64_t YearDay = 365 ){
double R = 1;
double Mul = 4;
if (N >= YearDay) return 1;
if (N <= M)return 1;

YearDay = YearDay*Mul + 1;

for (std::uint64_t i = M; i < N; i++)
{
R *= (YearDay - i*Mul) / static_cast<double>(YearDay);
}

return 1-R;
}
int main(){
double R = 0;

R = U(40, 4);
std::cout << R * 100 << '%' << std::endl;

return 0;
}
0828デフォルトの名無しさん2014/08/31(日) 02:48:42.02ID:kzVlzkbG
でも早生まれとか考慮すると。。。。めんどくさいw
0829デフォルトの名無しさん2014/08/31(日) 02:51:57.81ID:B6a5pXyR
>>826
あぁ、Y2Kだからそういうそうていだったか。うーむ。
出題者ってぼけてる割にはやるな。
0830デフォルトの名無しさん2014/08/31(日) 02:58:14.20ID:kzVlzkbG
やっぱり、早生まれ考えずに366で計算だな
1999年4月〜2000年3月まで考えると366日だよな。。。
0831デフォルトの名無しさん2014/08/31(日) 02:58:25.77ID:B6a5pXyR
4月2日が1番早いんだっけか。
で、Y2K年度の教室には2月29日うまれっていないんじゃないか。
出題者は1999年度の教室にいるんやね。多分。
0832デフォルトの名無しさん2014/08/31(日) 04:38:43.32ID:IHvb2qNL
for (std::uint64_t i = M; i < N; i++)
{
R *= (YearDay - i*Mul) / static_cast<double>(YearDay);
}

この辺見ると数式の意味分かってなさそう
あと4年分に伸ばして日数計算してるけど
厳密にはうるう年は400年に97回あるからそこも違う(まぁこれはどうでもいいような話だけど
0833デフォルトの名無しさん2014/08/31(日) 04:46:12.09ID:B6a5pXyR
意味は解ってないです。数学ダメなんですよ。
ウィキペディアからコンバートしただけなんで。
0834デフォルトの名無しさん2014/08/31(日) 05:38:11.86ID:nyWh23cZ
この問題は2組4人「だけ」を考えるってことでいいのか?
0835デフォルトの名無しさん2014/08/31(日) 09:57:13.33ID:kzVlzkbG
(define (prob n m)
(define (prob-inter n m result)
(if (= n 1)
result
(prob-inter (- n 1) m (* result (/ (- m (- n 1)) m)))))
(prob-inter n m 1))

(define (fact n)
(define (fact-inter n result)
(if (zero? n)
result
(fact-inter (- n 1) (* result n))))
(fact-inter n 1))

(define (comb n m)
(/ (fact n) (* (fact (- n m)) (fact m))))

二組だけ出来る確率
(exact->inexact (* (/ (comb 40 2) 366) (/ (comb 38 2) 366) (/ 1 (fact 2)) (prob 38 366)))
=>0.27979173783069944

二組以上出来る確率
(exact->inexact
(- 1
(prob 40 366)
(* (/ (comb 40 2) 366) (prob 39 366))))
=>0.6294588728184133

自信ない。。。。。
0836デフォルトの名無しさん2014/08/31(日) 10:08:58.88ID:zHQV/0rB
同じ誕生日の確率について日本語で書かれた本で
一番はやいのは、私の知る限り
森口繁一『応用数学夜話――現象と数理と統計』
(1978年10月、日科技出版社)
だと思う。
そこには、この問題をはじめて扱ったのは、
von Mises(イスタンブール大学理学部紀要、第4巻、1939、pp。145-163)
らしいこと。
森口先生はさらに、この問題を発展させて同じ集団に
3人組が現れる確率についても言及している。
この本自体、とても面白く、題材も豊富なので、
その問題をプログラムしてみるのもおもしろいかも
しれない。
いまでも出版されているかさだかではないが、図書館
などで見つけて読まれるとよいと思う
0837デフォルトの名無しさん2014/08/31(日) 10:43:44.68ID:Sej1+9Oo
>>812 Emacs Lisp

(require 'cl-lib)
cl-lib

(cl-defun f (x y &optional (d 365))
(let ((n 0))
(cl-dotimes (c y)
(let ((v (make-vector d 0)))
(cl-loop for i from 0 below x do (let ((r (cl-random d))) (cl-incf (aref v r))))
(when (= (length (cl-remove-if #'(lambda (x) (/= x 2)) v)) 2) (cl-incf n))))
n))
f

(f 40 30000 366)
9044
0838デフォルトの名無しさん2014/09/01(月) 03:52:26.69ID:jT60Kw0d
>>836
文庫版が出てますね

筑摩書房 応用数学夜話 / 森口 繁一 著
http://www.chikumashobo.co.jp/product/9784480094063/
0839デフォルトの名無しさん2014/09/01(月) 09:46:07.84ID:YNUioFD/
>838
森口繁一先生の本は、判り易くてそのくせ話題がユニーク
なので、ぜひ品切れの本を再販してほしいですね。
昔、東大の計数工学科の森口研究室に森口先生を
仕事でお尋ねしたとき、美人の秘書さんがお茶を
だしてくださったのお思い出します
0840デフォルトの名無しさん2014/09/01(月) 18:48:33.76ID:JDj2K3Fk
本の第五話に「秘書の選び方」があるらしいけど
なるほど興味深いですね
0841デフォルトの名無しさん2014/09/02(火) 01:28:26.78ID:drOQTNGn
誕生日の分布は絶対に一様ではない
0842デフォルトの名無しさん2014/09/02(火) 04:46:22.39ID:VEDZlsot
クリスマス生まれのやつはバレンタインデーに仕込まれた的な意味でか
0843デフォルトの名無しさん2014/09/03(水) 06:43:47.50ID:9/f0nkRi
お題:短辺aと長辺bの長方形の対角線の長さを求める。(0<a<b)

例
a=3, b=4 -> 5
a=3e200, b=4e200 -> 5e200
a=1234, b=2345 -> 2649.8643361501
0844デフォルトの名無しさん2014/09/03(水) 08:34:28.43ID:HhkG2w3X
aとbが接してる角が直角じゃ無いんだろ非ユークリッド平面に置かれてるんだろ?
俺は騙されないぞ。
0845デフォルトの名無しさん2014/09/03(水) 12:37:21.02ID:qW20Ksi1
>>844
非ユークリッド平面上でも直角は直角なのでは?
0846デフォルトの名無しさん2014/09/03(水) 15:06:30.29ID:sc+TP7Os
>>843 なんでそんな単純なお題を出したんだ? 何が狙いなんだ?
平方根何て標準ライブラリに有るだろうし自分で関数を作っても何の参考にもならないのでは?
アルゴリズムは確立されてるし
0847デフォルトの名無しさん2014/09/03(水) 15:26:52.56ID:HhkG2w3X
>>845
球面上だと長方形の角の合計が360°より大きくなるし
双曲面なら360°より小さく成るて事ぐらいしか知らない。
そういう角も非ユークリッド平面では直角って表現するの?
0848デフォルトの名無しさん2014/09/03(水) 19:06:53.40ID:qW20Ksi1
>>847
球面上でもその他の非ユークリッド空間上でも,局所でみて直角,いいかえるとその地点で切平面を置きそれに投影するとき,それが投影先にて充分に小さい範囲で直角なら,たとえば球面上で直角ということができる.
0849デフォルトの名無しさん2014/09/03(水) 23:39:33.48ID:+0xBNpaH
緯度と経度の交わりが直角でないってあり得るの?
0850デフォルトの名無しさん2014/09/04(木) 00:06:49.83ID:JrHf8QHD
>>849 メルカトール図法
0851デフォルトの名無しさん2014/09/04(木) 00:37:04.00ID:7dB2Q1uZ
スカトール図法?
0852デフォルトの名無しさん2014/09/04(木) 00:48:14.54ID:21+uVoyR
http://ja.wikipedia.org/wiki/%E3%83%A1%E3%83%AB%E3%82%AB%E3%83%88%E3%83%AB%E5%9B%B3%E6%B3%95
これか。結構有名だと思うけど。
0853デフォルトの名無しさん2014/09/04(木) 07:52:34.12ID:kYwta3WX
マギー審司「グリーンランドが...でっかくなっちゃった〜」
0854デフォルトの名無しさん2014/09/04(木) 12:44:28.71ID:BwmA5NqF
スカトロ図法ならわかる
0855デフォルトの名無しさん2014/09/04(木) 18:17:46.22ID:r3dec82J
>>846
このスレの出題、数字あそびに偏っている。
もっと文系の出題はないものか。
0856デフォルトの名無しさん2014/09/04(木) 19:01:34.34ID:pBVl6Z87
>>855
だって計算機だもん、数字遊び以外出来ない。
0857デフォルトの名無しさん2014/09/04(木) 19:07:52.69ID:S/Ci8qVf
>>843 R
f <- function(a, b){abs(a + b * 1i)}

> f(3,4)
[1] 5
> f(3e200,4e200)
[1] 5e+200
> f(1234,2345)
[1] 2649.864
0858デフォルトの名無しさん2014/09/04(木) 19:12:27.76ID:J4GUVyvv
>>856       
;;;;;;;;;;;ヽ         _,, -ー-、  ,r
;;;;;;;;;;;;;;;|       ,,r';´;;;;、ミミミミミ∨;;_;;;;;;;;;;;;;;;;;`ヽ,
;;;;;;;;;;;;;;;;|    /;;;;;;;;;;;_、、-''´ニニ ,__ `ヽ;;;;;;;;;;;;;/
;;;;;;;;;;;;;;;;;|  ./;;;;;;;;;/_, -''´::::;:;::::´ ̄`''' ';;;;;;;;/      / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
;;;;;;;;;;;;;;;;;;|/;;;;;;;;;;;/ ´._::::::::::::::::::,-、  ':;;;;/     /  
;;;;;;;;;;;;;;;;;;|\;;;;;;;;;;|  ‘ー''´ ,   、 ̄´  V、    <     ハァ?  意味わかんねえよ
;;;;;;;;;;;;;;;;;;|  \;;;;|      ,( ● ●)、    nヽ     \   
;;;;;;;;;;;;;;;;;|   .>y     ,'      ',   l゙) }      \_________________
;;;;;;;;;;;;;;;;|   l゙ n    l  _,,.--、, i    |、ノ
;;;;;;;;;;;;;;;|.   ', !〈    ',/r,二⌒ユヾ_   j
;;;;;;;;;;;;;;|    ヽ_∧    ''''´ ̄ ̄`   イ         __    (  丿
;;;;;;;;;;;;;|___,, -'''⌒ ヽv\       __,,ィ |        /,ハ    ) ノ   ドコマデクズヤネン
;;;;;;;;;;;;|ー- 、_      `ヽ`ヾ、ー''''´`´  ; j      r(ZZyZZZZZZ■
;;;;;;;;;;/   _,>、    `ヽ, `丁`l   ; √`-、   `ヽ `" //// 〉
;;;;;;;;;|   ´   `ー、    \|  ゝ、  ,〈  /       ゝ、,,_`´´ノ
;;;;;;;;ノ__       ィ´` 7ー、    ヽ\ノノ) ハ       ノ   /
;;;;;;/::::::`ー-、__   | ___,|  ヽ      `V/ '.,    /`ーァ ィソ
;;ノ:::::::::::::::::::::::`ー-Lユゝ,  `i          |   /   l//
:::::::::::::::::::::::::::::::::::::::::::::::::::ゝ,、、 l          |  ,r个 ー−イ
:::::::::::::::::::::::::::::::::::::::::::::::::::::lj |.|.l|          |. / �U   j
:::::::::::::::::::::::::::::::::::::::::::::::::::::´ lj.リ            |ノ      |
.

  .
0859デフォルトの名無しさん2014/09/04(木) 20:25:24.89ID:pBVl6Z87
>>858
意味わらないと言われても
λ............トボトボ
0860デフォルトの名無しさん2014/09/04(木) 21:00:02.00ID:S/Ci8qVf
>>843 Io
f := method(a, b,
4 repeat(
t := b / a
t = t * t
t = t / (4 + t)
a = a + 2 * a * t
b = b * t
)
a
)
0861 ◆0qAv26otVI 2014/09/04(木) 21:03:44.23ID:rCSZN0wR
お題:3目並べ亜種(3目並べたら負け)
3x3の配列を用意し、いつでも内容を表示できるように用意する。
 | |
−+−+−
 |○|
−+−+−
○| |
プレーヤーはAとBの2人だけとする。Bはあなたのプログラム。
ルール:各プレーヤーは一度に1個または2個の○を盤上に置く事ができる。
0個または3個は置く事が出来ない。AとBが交互にパス(抜け)無しで
盤上に○を置いていく。縦、横、斜めに3個の○を連続させたプレーヤーを
負けする。
0862デフォルトの名無しさん2014/09/04(木) 21:56:16.55ID:On4eRucT
>>861
先手必勝でゲームとして成立してないけどそれはいいの?
0863デフォルトの名無しさん2014/09/04(木) 22:06:36.11ID:Ks0RyVTt
>>859
お題スレでラムダ(λ)使うとは・・ラムダに関する出題の前振りですね?
0864 ◆0qAv26otVI 2014/09/04(木) 22:23:59.27ID:rCSZN0wR
ヘーソーナンダ?!
Bの先手で、必勝プログラムを作ってください。
0865デフォルトの名無しさん2014/09/04(木) 22:48:39.25ID:r3dec82J
>>864
第一手を中央に一個置けばあとは相手がどう打っても少なくとも2通り次の手で3個ならびになる。
だから、事実上2個打って3個ならびになる手を捜すプログラムとなる。
0866デフォルトの名無しさん2014/09/05(金) 00:17:13.56ID:CNIY1gt5
>>865
初手は「真ん中&どこかに一個」じゃね?
08678662014/09/05(金) 00:18:38.66ID:CNIY1gt5
>>866補足
初手が真ん中のみだと、後手が1個しか置かなかった場合に
4手目に逃げ場ができちゃうよねって意味で。
0868デフォルトの名無しさん2014/09/05(金) 01:06:30.98ID:RC7/Woiv
>>861

後手が1個

�A�B○
�B�@○
○○○

�B�A○
�B�@○
○○○


後手が2個

�A�A○
�B�@○
○○○

�B�A○
�A�@○
○○○

�A○�A
�B�@○
○�B○

�B○�A
�A�@○
○�B○
0869デフォルトの名無しさん2014/09/05(金) 02:06:22.47ID:NOu+x8kK
>>843 Emacs Lisp

(require 'cl-lib)
cl-lib

(defun f (a b)
(cl-flet ((fi (a b)
(sqrt (+ (expt a 2) (expt b 2))))
(fp (a b)
(cl-flet ((fp2 (a b)
(cl-flet ((e (f)
(condition-case nil
(let ((s (number-to-string f)))
(string-to-number (substring s (1+ (cl-position ?e s)))))
(error 1))))
(let ((gcd (expt 10.0 (cl-gcd (e a) (e b)))))
(* (sqrt (+ (expt (/ a gcd) 2) (expt (/ b gcd) 2))) gcd)))))
(let ((c (sqrt (+ (expt a 2) (expt b 2)))))
(if (= c 1.0e+INF) (fp2 a b) c)))))
(cond
((and (integerp a) (integerp b)) (fi a b))
(t (fp a b)))))
f

(f 3 4)
5.0

(f 3e200 4e200)
4.9999999999999995e+200

(f 1234 2345)
2649.8643361500604
0870 ◆0qAv26otVI 2014/09/05(金) 07:09:38.46ID:GogpZNam
>>>868 ありがっこ
0871デフォルトの名無しさん2014/09/05(金) 08:49:51.96ID:3yQsvyhF
>>843
Squeak Smalltalk

| a b |
a:=3. b:=4. (a@b) r. "=> 5 "
a:=3e200. b:=4e200. (a@b) r. "=> 5e200 "
a:=1234. b:=2345. (a@b) r. "=> 2649.86433615006 "
0872デフォルトの名無しさん2014/09/05(金) 16:46:17.82ID:UY2a0tkI
>>843 sqrt( a**2 + b**2 )
阿呆らしい、利用出来る物はすべて利用すべし
0873デフォルトの名無しさん2014/09/07(日) 00:56:22.63ID:Lw7aMs3G
�A�B�C
�B�@○
○○�C
これだと後手必勝じゃね?
0874デフォルトの名無しさん2014/09/07(日) 01:27:39.23ID:fsj+jXxx
>>873
> 3個の○を連続させたプレーヤーを負け
4の負けやん
0875デフォルトの名無しさん2014/09/07(日) 04:20:07.29ID:Lw7aMs3G
ああ、白と黒を置いていくんじゃないのね
0876 ◆0qAv26otVI 2014/09/07(日) 10:23:07.26ID:0qttlkaM
>>ID:Lw7aMs3G 873,875
その頭の中のルールを文章で表現すればお題になる。がんばれ
0877デフォルトの名無しさん2014/09/08(月) 00:58:41.28ID:9bN+Hq/u
>>861
ttp://ideone.com/3LcpIs
暇だったのでフレームだけ組んでみた。人口無能搭載!
デバッグほとんどしてないのでバグってたら勘弁。

いい暇つぶしになったわ。
0878デフォルトの名無しさん2014/09/08(月) 01:44:12.59ID:VULfi2Y/
>>877
結構酷いコードだなおい
0879デフォルトの名無しさん2014/09/08(月) 01:48:24.92ID:9bN+Hq/u
>>878
AIはクラスにすればよかったかもね。
気分で組んだので出来はそれなり。
サンプルプリーズ。
0880デフォルトの名無しさん2014/09/10(水) 02:25:55.76ID:qVXovwZv
   ∧__,,∧        
  ( ・ω・) < ステ−ン・・・  ∧ ∧
  〇={=}〇   バーイ > (*‘ω‘ *)
   |:::::::::\::|         (   )
、、、、 し 、、、(((.@)vv、vvv、vvvvvv、、v v、、、、
0881デフォルトの名無しさん2014/09/10(水) 03:09:33.40ID:8OMC9t+p
>>878
白黒のコマを置いていくのでは無く
白黒関係なく3個並んだら負けなのね。。。
白黒で実装してまったorz.
0882デフォルトの名無しさん2014/09/10(水) 03:10:53.06ID:8OMC9t+p
>>881
アンカー間違い
>>861へのレスです。
0883デフォルトの名無しさん2014/09/10(水) 04:15:44.52ID:QcMG0Y6U
>>881
あれ?あ、そうなんだ。
駒一種類しかないのね。これは文盲だった。
てっきり三並べの応用かと。。。
また暇があったら実装します。Orz
0884デフォルトの名無しさん2014/09/10(水) 11:44:57.05ID:9mRTgbsu
最小値Nから最大値Mまでの約数の総和を出力せよ
0885デフォルトの名無しさん2014/09/10(水) 12:30:52.92ID:nB7nTTkr
>>884
端折りすぎて意味がよくわからない
0886デフォルトの名無しさん2014/09/10(水) 15:12:58.17ID:lfz0Mpg7
>>884は、例えば
最小値N=9で最大値M=12なら、その間のそれぞれの約数
9の約数 〜 1,3,9
10の約数 〜 1,2,5,10
11の約数 〜 1,11
12の約数 〜 1,2,3,4,6,12
を全て足して 71 ってことじゃないのか?
0887デフォルトの名無しさん2014/09/10(水) 16:53:05.55ID:jJKfLPB5
>>884 Prolog

最小値Nから最大値Mまでの約数の総和を出力せよ(N,M) :-
最小値Nから最大値Mまでの約数の総和を(N,M,_約数の総和),
出力せよ(_約数の総和).

最小値Nから最大値Mまでの約数の総和を(N,M,_約数の総和) :-
最小値Nから最大値Mまでの約数の(N,M,_約数ならび),
総和を(_約数ならび,_約数の総和).

最小値Nから最大値Mまでの約数の(N,M,_約数ならび) :-
findall(_約数,(between(N,M,_整数),約数(_整数,_約数)),_約数ならび).

総和を(_約数ならび,_約数の総和) :-
sum_list(_約数ならび,_約数の総和).

約数(_整数,_約数) :-
between(1,_整数,_約数),
0 is _整数 mod _約数.

出力せよ(_約数の総和) :-
writef('%t\n',[_約数の総和]).
0888デフォルトの名無しさん2014/09/10(水) 19:22:31.15ID:jJKfLPB5
>>884 Prolog もう一段、述語の分割を進めると

最小値Nから最大値Mまでの約数の総和を出力せよ(N,M) :-
最小値Nから最大値Mまでの約数の総和を(N,M,_約数の総和),
出力せよ(_約数の総和).

最小値Nから最大値Mまでの約数の総和を(N,M,_約数の総和) :-
最小値Nから最大値Mまでの約数の(N,M,_約数の),
総和を(_約数の,_約数の総和).

最小値Nから最大値Mまでの約数の(N,M,_約数の) :-
findall(_約数,最小値Nから最大値Mまでの約数(N,M,_約数),_約数の).

最小値Nから最大値Mまでの約数(N,M,_約数) :-
最小値Nから最大値Mまでの(N,M,_整数),
約数(_整数,_約数).

最小値Nから最大値Mまでの(N,M,_整数) :-
between(N,M,_整数).

約数(_整数,_約数) :-
between(1,_整数,_約数),
0 is _整数 mod _約数.

総和を(_約数の,_約数の総和) :-
sum_list(_約数の,_約数の総和).

出力せよ(_約数の総和) :-
writef('%t\n',[_約数の総和]).
0889デフォルトの名無しさん2014/09/10(水) 20:12:03.99ID:iGOWbBA8
>>884 Emacs Lisp

(require 'cl-lib)
cl-lib

(defun f (N M)
(apply '+ (cl-loop for i from N to M collect (funcall (lambda (n) (apply '+ (cl-loop for i from 1 to n if (= (% n i) 0) collect i))) i))))
f

(f 9 12)
71
0890デフォルトの名無しさん2014/09/10(水) 20:44:55.53ID:TufH69Yz
かつて共立出版から『bit』というコンピュータ雑誌が
発行されていたことを覚えていらっしゃる方もいると思います。
その中に「ナノピコ教室」というコーナーで毎回プログラミング
にまつわるちょっとした問題がだされていました。
その中の一つ

n羽のニワトリを,いくつかの小屋にわけて入れます。このとき
次の条件が満たされるようにします。
1) 各小屋には,同数(仮にd羽)のニワトリがいる。
2) dは,ある素数である(同然d>1)。
すると,ニワトリの分け方は,何通りあるでしょうか?
ここで,小屋どうしの位置関係は問題にしません。
たとえば,n=4ならば
(a) [ニワトリ1,2],[ニワトリ3,4]
(b) [ニワトリ1,3],[ニワトリ2,4]
(c) [ニワトリ1,4]、[ニワトリ2,3]
の3通りです。(a)と(a')[ニワトリ3,4][ニワトリ1,2]
とは区別しません。
分け方の数を求める手順を示してください。ただしi番目の
素数N(i)を与える函数または配列を断りなく使用してもかまい
ません。いうまでもなくN(1)=2、N(2=3、N(3)=5
0891デフォルトの名無しさん2014/09/10(水) 22:31:03.14ID:oS7YMnaV
>>884
Squeak Smalltalk。思考停止版^^;

| divisorsSum |
divisorsSum := [:range | (range gather: [:n | (1 to: n) select: [:m | n isDivisibleBy: m]]) sum].
divisorsSum value: (9 to: 12) "=> 71 "
0892デフォルトの名無しさん2014/09/10(水) 23:26:01.37ID:ADC46RWM
>>890
ナノピコ教室だけでいいから再販してほしいな‥あと、大熊正さんの連載も好きだったんだが‥いったいなんの雑誌だったかもとんと忘れてしまった‥
0893デフォルトの名無しさん2014/09/11(木) 01:49:18.97ID:0jHMjnIQ
>>884
ttp://ideone.com/p3CX1A
ほぼC。一応こんな感じであってるのかな??
数学苦手だとツライ・・・。
0894デフォルトの名無しさん2014/09/11(木) 06:41:10.01ID:VlgISLDZ
>>893
IsNoRemainder();みたいなのは整数で計算したいな。

16行目を
if (IsNoRemainder(i, j) == true)C+=j;
 ↓
if (i % j == 0)C+=j;
とするとか
0895デフォルトの名無しさん2014/09/11(木) 14:12:54.32ID:I5Ff9Nvc
>>884
Ruby
def f(n,m)
 (n..m).flat_map{|i| (1..i).select{|j| i%j == 0}}.reduce(:+)
end
puts f(9,12) #=> 71

Python
def f(n,m):
 return sum(sum(j for j in range(1,i+1) if i%j==0) for i in range(n,m+1))
print(f(9,12)) #=> 71

Perl
use List::Util qw(sum);
sub f{
 my ($n,$m) = @_;
 sum(map {my $i=$_; sum(grep {$i%$_ == 0} (1..$i))} ($n..$m));
}
print f(9,12); #=> 71

PythonとPerlは普段使ってないのでメジャーな書き方なのか自信なし
0896デフォルトの名無しさん2014/09/11(木) 16:45:35.36ID:oL03u+Kk
>>890
Squeak Smalltalk で。

| primeFactors sumAllocOfCages |

primeFactors := [:n | (Integer primesUpTo: n+1) select: [:m | n isDivisibleBy: m]].

sumAllocOfCages := [:n |
 (primeFactors value: n) inject: 0 into: [:sum :d |
  ((d to: n by: d) inject: 1 into: [:k :rest | k * (rest take: d)]) / (n/d) factorial + sum
 ]
].

sumAllocOfCages value: 4. "=> 3 "
sumAllocOfCages value: 6. "=> 25 "
0897デフォルトの名無しさん2014/09/11(木) 16:51:54.99ID:fJPG+Epr
a,b,cは1以上の整数であり、x, yは100000 ≧ 1とする
a*b*c=x
a+b+c=y
x=y
になるa,b,cの組み合わせは何通りあるか求めよ

(a=1, b=1, c=1のときのxとyは1となる)
(a=1, b=2, c=3のときのxとyは6となる)
(a=3, b=1, c=2のときのxとyは6となる)
0898デフォルトの名無しさん2014/09/11(木) 17:10:50.95ID:n8ZAYUyo
  ∧_∧        
 ( ´・ω・) < ステンバーイ
  〇={=}〇           ∧,, ∧
  |::::::::::\           (*‘ω‘ *)
、、、し 、、、(((.@)vv、vvv、vvv 、v(、vv)w、、、
0899デフォルトの名無しさん2014/09/11(木) 18:25:45.13ID:qwOWbb9V
C言語、a+b+cもa*b*cも変項を入れ替えても変化しない対照式だから、
その辺を使って最適化しようと思ったら計算がすぐに終わった
#include <stdio.h>
int main(void)
{
unsigned int aend = 100000;
unsigned int bend, cend;
unsigned int a,b,c;

unsigned int ok,ng;
ok = ng = 0;

for(a=1; a<=aend; a++) {
bend = aend / a;
for(b=1; b<=bend; b++) {
cend = aend / (a*b);
for(c=1; c<=cend; c++) {
if( (a+b+c) == (a*b*c) ) {
printf("ok:%d,%d,%d¥n", a,b,c);
ok++;
} else {
ng++;
}
}
}
}
printf("report:ok:%d, ng:%d¥n", ok, ng);
return 0;
}
0900デフォルトの名無しさん2014/09/11(木) 19:06:50.39ID:fJPG+Epr
ループが多いな
一応最大で100000ループで終わる問題
そこから計算量を減らすと半分ぐらいになる問題
0901デフォルトの名無しさん2014/09/11(木) 19:08:32.29ID:G5fsQWzY
ここのお題解いてたら勉強遅れた
しばらく静観
今はインタープリター作って勉強します
0902デフォルトの名無しさん2014/09/11(木) 20:59:21.11ID:C8Sp0ta0
100000≧1じゃなくて[100000, 1]じゃね?
0903デフォルトの名無しさん2014/09/12(金) 00:14:40.72ID:Vlgyzafh
>>894
素晴らしい!
その時何考えてたか忘れたけど、あなたのほうがスマートですわ。
なんか余計なこと考えてた気がする。Orz
0904デフォルトの名無しさん2014/09/12(金) 02:16:14.41ID:UgGtRjkl
>>897
俺が寝ぼけているのでなければ、
>(a=1, b=1, c=1のときのxとyは1となる)
は 1+1+1=1 と言っているんだよな?
0905デフォルトの名無しさん2014/09/12(金) 02:49:41.90ID:kQWkHZX/
>>890
Rubyで。

def valueOf(n,x)
r=(2..n).inject(:*)
(n/x).times{
r/=(2..x).inject(:*)
}
r/=(2..n/x).inject(:*)
end

def func(n)
ans=0
2.upto(n-1){|x|
if(n%x==0)
ans+=valueOf(n,x)
end
}
printf("input = %d¥tanswer = %d¥n",n,ans)
end

func(4)
func(6)
func(10)
func(20)

# input = 4 answer = 3
# input = 6 answer = 25
# input = 10 answer = 1071
# input = 20 answer = 3689854454
0906デフォルトの名無しさん2014/09/12(金) 03:08:18.59ID:kQWkHZX/
>>884
Rubyで。

def func(n,m)
r=0
(n..m).map{|x|
a=(1..x).to_a
a.map!{|e|
(x%e!=0)?0:e
}
r+=a.inject(:+)
}
printf("input = %d ~ %d¥n",n,m)
printf("output = %d¥n",r)
end

func(9,12)

# input = 9 ~ 12
# output = 71
0907デフォルトの名無しさん2014/09/12(金) 03:41:37.69ID:Vlgyzafh
>>897
ttp://ideone.com/TA9Eue
ほぼC。暇だったのでちょっと二ーしてみた。
これあってるのか?なんか答えがしょぼいんだが。
イデオンで0.2Sっておっそいな。
0908デフォルトの名無しさん2014/09/12(金) 03:58:54.79ID:Vlgyzafh
>>897
Yの最大値はLim+2なので、ABCはそれ以上にはならない。
Limをシェアするので、1変数あたりの分担はずいぶん小さくなる。
最適化の方針としては、動的なLimを適応することで動的にオーダーを下げられる。
であってるかな?

今日はとっても暇なんだ。
鶏問題は俺には高度すぎるし。
0909デフォルトの名無しさん2014/09/12(金) 10:31:55.41ID:DEp77wH6
>>897
Ruby

# abc=a+b+c
# a(bc-1)=b+c
# a=(b+c)/(bc-1)>=1
# (b+c)/(bc-1)>=1
# (b+c)>=(bc-1)
# bc-1<=b+c
# (b-1)(c-1)<=2
# b-1<=2
# b<=3
# c-1<=2
# c<=3
(1..3).map { |b|
(1..3).map { |c|
if((b*c-1>0)&&(b+c)%(b*c-1))==0
a=(b+c)/(b*c-1)
p [a,b,c]
end
}
}
# [3, 1, 2]
# [2, 1, 3]
# [3, 2, 1]
# [1, 2, 3]
# [2, 3, 1]
# [1, 3, 2]
0910デフォルトの名無しさん2014/09/12(金) 13:02:22.85ID:Vlgyzafh
>>909
スゲー。式おってったら意味は解ったがその解法は俺には思いつかないな。
数学怖い。Orz
0911デフォルトの名無しさん2014/09/12(金) 15:51:28.50ID:Vlgyzafh
>>861
http://ideone.com/OrQpCj
一応C++。3並べない作った。今度こそ仕様あってるよね。あー疲れた。
暇だから始めたんだけど、結局作りこんでしまった。
3種の無能搭載。デバッグはほとんどしてない。

アピールポイントはポリモーフィックにAIが定義できること。だけ。
400行はキャパシティオーバーだ。AIタイプはランダムと評価関数。
一応評価関数のランダム化っていうのをやってるやつもある。
先にツールキット作っとくと開発楽だけど、時間結構かかったな。
まぁ、いい暇つぶしになった。眠い。
0912デフォルトの名無しさん2014/09/13(土) 00:11:05.47ID:C9DYFDtp
初心者なんですけどコードの間違いを直せって問題でもいいですか?
0913デフォルトの名無しさん2014/09/13(土) 00:15:12.16ID:mOSERTji
もいいです
0914デフォルトの名無しさん2014/09/14(日) 06:59:56.84ID:TJ2FN846
宿題は宿題スレでw
0915デフォルトの名無しさん2014/09/14(日) 08:29:09.97ID:GzjRn3L/
>>912
一つの言語に依存した問題はみんなで楽しめないので却下したいと思います。
0916デフォルトの名無しさん2014/09/14(日) 11:12:28.37ID:Hxg+bro1
エヘヘ
前から後ろから
みんなで楽しむんだな
エヘヘ
0917デフォルトの名無しさん2014/09/14(日) 11:22:30.96ID:s+BV7Cb9
>>914
宿題スレは馬鹿が居座っているからこちらの方が快適
0918デフォルトの名無しさん2014/09/14(日) 11:58:05.43ID:s+BV7Cb9
>>911
実行結果の読み方がよくわからん‥
0919デフォルトの名無しさん2014/09/14(日) 12:03:55.37ID:oLWnP7Fy
>>918
元の問題見れば一目瞭然と思うが・・・
0920デフォルトの名無しさん2014/09/14(日) 18:15:25.80ID:HdLxe6NW
  |=番兵|_
 (  ・ω・) < ステンバーイ
  〇={=}〇        ∧,, ∧
  |::::::::::\        (*‘ω‘ *)
、、、し 、、、(((.@)vv、vvv 、、(、v、)っv、、
0921デフォルトの名無しさん2014/09/14(日) 19:35:49.30ID:s+BV7Cb9
>>919
>一度に1個または2個
そっか‥二子もありか‥
0922デフォルトの名無しさん2014/09/15(月) 04:13:54.54ID:RdKEbqlY
>>861
今更だけど、俺も「Land of Lisp」日本語版ぱくって作ってみた。
ほぼ丸ぱくりw
http://ideone.com/rjXbRZ
0923デフォルトの名無しさん2014/09/15(月) 06:07:38.87ID:f1AbVb67
>>922
なになに?
>>861ってLand of Lispにあるの?

そういう「ゲーム」もつくるのか
おもしろそうだな。初心者の俺は
The little Lisperと改訂版の
The little Schemer読み中だけど
それ終えたら読むわ
今、最終章でつくったインタープリターを拡張して発想を染み込ませているところ、もうすぐ上陸だな。
0924デフォルトの名無しさん2014/09/15(月) 14:59:34.90ID:RdKEbqlY
>>923
Land of Lispを読み終えると>>861の様なプログラムがサクサク
作れるようになります。たぶん。。。。。

俺はlistの海で溺れ無限の流れに押し流される所だったorz
0925デフォルトの名無しさん2014/09/16(火) 15:05:41.23ID:/nkFWhJ5
Land of Listp欲しいけど例に漏れず高いな
漫画がおもしろそうだ
0926デフォルトの名無しさん2014/09/16(火) 16:43:46.00ID:BQdAUcse
マンガは期待するなw
0927デフォルトの名無しさん2014/09/16(火) 16:52:41.16ID:V1Xx4jW9
英語版はただだよ
キンドル版
Kindleでも見やすい
0928デフォルトの名無しさん2014/09/16(火) 23:40:40.59ID:/nkFWhJ5
えっAmazonのサンプルは面白そうだったのに>マンガ
タダなら立ち読みしてよっかな
英語読めないけど
0929デフォルトの名無しさん2014/09/17(水) 01:04:17.73ID:q8zBZZ2r
>>861
Haskellで
http://ideone.com/JOLfng
コードがそこそこ短いということしか言うことがない
0930デフォルトの名無しさん2014/09/17(水) 17:15:14.08ID:gVQg6rOM
>>922
ミニマックス法のバグ取りとコンピュータの自殺を防止。
コンピュータの差し手に少しランダム性を持たせた。
もうバグが有っても放置しますw

http://ideone.com/7pmf38
0931デフォルトの名無しさん2014/09/18(木) 02:10:16.93ID:qu4CN4ax
hドライブの「honda」フォルダ内のファイル:本田_10.TXTを読み込み、英大文字を英小文字に変換、英小文字を英大文字に変換、その他はそのままで表示せよ。

これ誰かわかりますか教えて下さい
0932デフォルトの名無しさん2014/09/18(木) 02:53:34.78ID:0oM4N5+z
>>931 C++
http://ideone.com/7NKHED
0933デフォルトの名無しさん2014/09/18(木) 03:34:45.68ID:zFHSfbht
>>932
ありがとうございます!!
0934デフォルトの名無しさん2014/09/18(木) 05:52:59.32ID:P8fv0efM
次からは宿題スレに行こうね
0935デフォルトの名無しさん2014/09/18(木) 13:14:38.88ID:M8giSVcf
100000 <= a < b <= 1000000000000000000000000000000000
aとbの範囲の素数がいくつ存在するか1秒以内に求めよ
0936デフォルトの名無しさん2014/09/18(木) 13:15:30.93ID:M8giSVcf
参考

C++: 0.007
PHP: 0.8
Python: 1.03
0937デフォルトの名無しさん2014/09/18(木) 13:27:09.76ID:7eeU4PcQ
そんなに速くは求められないとおもうが。
素数定理とか近似でいいなら速いが。
厳密な素数分布がわかれば世紀の大発見じゃないか。
0938デフォルトの名無しさん2014/09/18(木) 16:14:47.43ID:M6S1ZPsM
計算機を指定しないで秒数指定されても
0939デフォルトの名無しさん2014/09/18(木) 17:55:00.01ID:XZgFHrlX
>>935
俺は、多倍長精度演算が入るまでこの手の問題は解きません。っていうか解けません。
とりあえず、CPUがなにか教えてください。

一応追記型素数検索は過去に書いてるのでそれを参照のこと。
素数検索はCPUのコア数でスケールするので計算機次第ではパフォーマンスがだいぶん変わってきます。
0940デフォルトの名無しさん2014/09/18(木) 18:08:07.08ID:1V+j4aYj
悪いがこれ32bitの範囲内で解けるから
0941デフォルトの名無しさん2014/09/18(木) 18:10:46.79ID:XZgFHrlX
数学苦手だからわかんね。Orz
0942デフォルトの名無しさん2014/09/18(木) 18:17:22.62ID:ov/0I+4y
>>940
>1000000000000000000000000000000000
が32ビットの範囲なのか?
0943デフォルトの名無しさん2014/09/18(木) 18:26:36.44ID:M6S1ZPsM
32ビットコードで解けるっていいたいんだろうがそれが許されるなら8ビットでも最悪4ビットでもできるんじゃねぇのという気が少し
0944デフォルトの名無しさん2014/09/18(木) 18:35:53.04ID:kmctZUBf
記号処理として扱えば大した大きさじゃないしな
かかる時間についてはパッとは想像つかないが
0945デフォルトの名無しさん2014/09/18(木) 18:53:37.74ID:jCMZi8UD
>>935を理解できてないのは俺だけか・・・
0946デフォルトの名無しさん2014/09/18(木) 18:56:31.03ID:RTfVSx+m
>>945
心配すんな!自分もだよ!
0947デフォルトの名無しさん2014/09/18(木) 18:56:51.20ID:XZgFHrlX
>>945
俺も俺も。
多倍長精度演算無しで解く方法をぜひ見せてほしい。>>940
0948デフォルトの名無しさん2014/09/18(木) 19:03:08.64ID:jCMZi8UD
あっ、aとbは入力として与えられるのか
0949デフォルトの名無しさん2014/09/18(木) 19:06:12.75ID:XZgFHrlX
俺はエラトステネスの篩と試し割り法しか知らないので多倍長無いと解けない派。
0950デフォルトの名無しさん2014/09/18(木) 19:13:48.96ID:f3YnogPC
参考で書いた時間がa=b=100000ならわかる
0951デフォルトの名無しさん2014/09/18(木) 19:20:30.78ID:XZgFHrlX
試し割り法の場合、√N+1まで試せばいいから各コアに処理振ったらそれの数だけスケールするんよ。
それをベクタに溜めてって二分探査すればisprimeも実装できる。
だから、CPUの名前が知りたい!
0952デフォルトの名無しさん2014/09/18(木) 19:22:51.97ID:XZgFHrlX
追記型使えば素数デーモンとか作れるなーと、うにっくす詳しくないのに思いついた。
ただ、ディスクスペースを馬鹿みたいに食うが。
0953デフォルトの名無しさん2014/09/18(木) 19:39:45.86ID:7eeU4PcQ
多倍長は使っていいとしても簡単ではない。
特別なケースで、a-1< a <a+1の範囲の一つの数が素数かどうかを判別するという問題を含んでいるが。
桁が多いと時間食う。
0954デフォルトの名無しさん2014/09/18(木) 20:05:27.56ID:7eeU4PcQ
素数定理 - Wikipedia

素数定理とは自然数の中に素数がどのくらいの「割合」で含まれているかを述べる定理である。
素数が自然数の中にどのように分布しているのかという問題は整数論において基本的な関心事であるが極めて難しく、
2014年現在でも解明されていない部分も多い。この定理はその問題について重要な情報を与える。

具体的には、この定理は次の式で表される。
http://upload.wikimedia.org/math/0/4/7/04796109b3dea8eee24623590ce25b9a.png
π(x) は素数の個数関数で、x 以下の素数の個数を表す。
また Li x は(補正)対数積分。

近似の様子
π(10000000)= 664579    Li(10000000)= 664917.35・・・
π(100000000)= 5761455    Li(100000000)= 5762208.33・・・・


現今最良の近似の誤差は次の結果である(ヴィノグラードフの素数定理)。
http://upload.wikimedia.org/math/9/a/9/9a981e23473000f17624c1b6f559805c.png

さらに、リーマン予想が正しければ次のように誤差評価を改善できる。
http://upload.wikimedia.org/math/7/9/a/79a68b9dbd99cc3e387a8adc9961ebd1.png
逆に、上記の評価式が成り立てばリーマン予想が成り立つことも知られている。
0955デフォルトの名無しさん2014/09/18(木) 23:54:57.82ID:XZgFHrlX
>>953
まぁ、それは解ってるけど、多倍長がないと問題に取り掛かることもできない。Orz

>>954
数学は解らんと言っとるがなぁー!!(逆切れ
0956デフォルトの名無しさん2014/09/19(金) 00:03:57.04ID:kBCWl9e1
MPIR GMPは使っていいことにすれば?
整数では最もメジャーだろう。
0957デフォルトの名無しさん2014/09/19(金) 00:14:51.02ID:KFfXT43O
>>935はどこから転載してきたんだ?
0958デフォルトの名無しさん2014/09/19(金) 03:00:34.27ID:JRtZOBn9
>>956
イデオンで動くの?
一応、イデオンで動くことを証明することが俺のこのスレでの意義なので、それ以外は興味ない。
あと、なるべく標準ライブラリと1ソースで済ませたい。
0959デフォルトの名無しさん2014/09/19(金) 03:24:46.16ID:kBCWl9e1
>>958
動くようだが。PHP

http://ideone.com/Zrg9DH
0960デフォルトの名無しさん2014/09/19(金) 03:28:42.95ID:JRtZOBn9
>>959
ほう。
ライブラリを覚えないといけないな。
うむむむ・・・。片手間でやるにはちと面倒だけど、暇があったら試してみよう。
ちなみに俺はC/C++使いだ。
0961デフォルトの名無しさん2014/09/19(金) 04:10:20.14ID:mBwsz/nF
俺は乳首使いだ
0962デフォルトの名無しさん2014/09/19(金) 04:25:20.38ID:JRtZOBn9
VCに入れるには、なんかコンフィギュア動かさないといけないっポイけど、どれ動かせばいいんだ?
gmp.hがジェネリックになってて普通に入れただけでは動かなかった。nmakeもMAKEFILEが無い。

俺、VCのデバッガないと開発できない体になってしまったのでちょっと厳しいなぁ。
うぅ。ホビー開発者にやさしくない。sh動かないとだめかなー??
世のなかキビシー
0963デフォルトの名無しさん2014/09/19(金) 05:06:26.86ID:UwNOujrp
拡張子を全角英字で書くようなプログラマにやさしい世の中とかちょっと嫌だなぁ…

>>962
http://stackoverflow.com/questions/3261337/using-gmp-on-windows
Q:CygwinでGMPのコンパイルは出来たけどLIBじゃないからVCで使えません。どうすればLIBを作れますか?
A:LIBの作り方とか知らないけど、MPIR見れば良いと思うよ。MPIRはVCをサポートするGMPのフォークです。
http://www.mpir.org/
0964デフォルトの名無しさん2014/09/19(金) 06:09:04.62ID:JRtZOBn9
>>963
誘導ありがとう。
なんかソリューションをビルドしようとすると、一つのファイルのIOを食い合って排他処理しないから変なファイルが自動生成される。
プロジェクト単位でビルドするとうまくいった。それに気づくのにめちゃくちゃ時間かかった。
とりあえずうまくいきそう。あー疲れた。
続きはまた次回。

とりあえず、導きに感謝!
0965デフォルトの名無しさん2014/09/19(金) 07:05:10.73ID:spaja6yA
このスレに書く内容じゃあないと分かってるんですかね
0966デフォルトの名無しさん2014/09/19(金) 07:07:57.87ID:JRtZOBn9
>>965
あぁ、すまん。あとは俺の領分だ。俺も一歩前進できて満足だよ。
イデオンで動くなら適当にコードでコントリビュートするから生暖かく見守っててくれ。
そのためにはライブラリを覚えないといけないんだが頭悪いんだよなー。。。Orz
0967デフォルトの名無しさん2014/09/19(金) 11:10:09.17ID:JRtZOBn9
ttp://ideone.com/dyLeXK
ぐあ、LIBのパス通ってねー。オワタ\(^q^)/
やっとコンパイルまでこぎつけたのに。Orz
0968デフォルトの名無しさん2014/09/19(金) 11:59:53.87ID:mBwsz/nF
俺も導かれてタチになったぜ
0969デフォルトの名無しさん2014/09/19(金) 12:15:46.34ID:9XZ97K9m
お題:x^5 = a^5 + b^5 + c^5 + d^5 (a<b<c<d<x) ただし^はべき乗
この式をみたす自然数x,a,b,c,dを求める。
0970デフォルトの名無しさん2014/09/19(金) 13:28:32.69ID:QRiIEsK8
多倍長がないとお手上げな数学とアルゴリズムに弱いバカはこのスレから消えろ4ね
0971デフォルトの名無しさん2014/09/19(金) 16:33:40.99ID:JGrS0y/F
普通にがりがり計算して素数判定
(define (prime? n)
(let ((limit (sqrt n)))
(define (eratosthenes-pass? e)
(let ((eratos1 (+ (* e 6) 1))
(eratos2 (+ (* e 6) 5)))
(cond ((or (> eratos1 limit) (> eratos2 limit)) #t)
((or (zero? (modulo n eratos1)) (zero? (modulo n eratos2))) #f)
(else (eratosthenes-pass? (+ e 1))))))
(cond ((= n 1) #f)
((or (= n 2) (= n 3) (= n 5)) #t)
((or (even? n) (zero? (modulo n 3)) (zero? (modulo n 5))) #f)
(else (eratosthenes-pass? 1)))))

gosh> (time (prime? 2305843009213693951))
;(Time (prime? 2305843009213693951))
; real 53.469
; user 53.450
; sys 0.010
#t
この程度じゃ話しにならんな、問題を解くにはミラーラビンテスト使うんだろうけど。
0972デフォルトの名無しさん2014/09/19(金) 16:55:21.02ID:JGrS0y/F
>>971
6行目間違ってたよ。。。。orz
正しくは
(cond ((and (> eratos1 limit) (> eratos2 limit)) #t)
0973デフォルトの名無しさん2014/09/19(金) 20:05:09.41ID:JRtZOBn9
>>970
冗談でも言っていいことと悪いことがあるんだよ?
死んでもいいけど、俺の持ってるカルマを全部引き継いでくれる前提なら死んであげる。
あと、コードはちゃんと実行可能なのを上げてるので問題ないよね。

俺の手番はおしまい。
次は君の番だ。君の活躍を期待しているよ。
0974デフォルトの名無しさん2014/09/19(金) 20:18:20.66ID:JRtZOBn9
>>970
ところで、この人この世の何人に対してこの悪意を放ったんでしょうかね。
多倍長が使えなく、カツ、数学とアルゴリズムに弱い人全滅だから選民すぎる。
ディストピアつくりたいんだったら、まず文章にして出版してくれ。
俺も君に死ねっていうタイミングがあるかもしれないから。
それなら平等だろ?
0975デフォルトの名無しさん2014/09/19(金) 20:18:42.87ID:7xkfrLWD
>>973
あほーなど無視しとけ
君は真摯だから俺は好きだ

エヘヘ
乳首が弱いんだ、オレ
0976デフォルトの名無しさん2014/09/19(金) 20:21:27.70ID:fWL44I6k
この素数のお題(>>935)はいくらなんでも悪問もいいところ。

概算でいいのならそう書け。どう考えても、

>>936
>C++: 0.007
>PHP: 0.8
>Python: 1.03

概算でしかありえない。概算アルゴリズムなら瞬時で当たり前。

スレの多くの反応からして、皆、概算ではなく、数学的にちゃんとしたものを求めようとしてる。
>>935のお題からだと、そう受け取るのがデフォルト。概算なら概算と明記が必須。

>>956
>MPIR GMPは使っていいことにすれば?

これも概算アルゴリズムだし。普通、「使っていいことにする」とかやっぱりそういう言い方になるよね。

出題者、自分は勝手に概算でやっておいて、1秒以内で終らせておきながら、そのことは何も言わない。

稀に見る悪問だ。
0977デフォルトの名無しさん2014/09/19(金) 20:34:45.85ID:O8AT4gzL
GMPはバグや改変がなければ厳密に整数を扱える。
PHPなどに移植されたバージョンは精度を犠牲に速度を取ってることはある。
0978デフォルトの名無しさん2014/09/19(金) 20:39:48.05ID:fWL44I6k
>>977
概算というのは、一応、素数の判定に関するメソッドのことね。
MPIR GMP全体のことじゃないよ。
このような信頼度の高いライブラリーでも、素数に関しては概算を使うほかないのに、
出題者が>>936の高速結果を晒しているのは概算以外にありえないという意味で。
0979デフォルトの名無しさん2014/09/19(金) 20:40:36.63ID:O8AT4gzL
素数を求めるのに最速だと思われるアトキンのふるいをやってみたが。>>935の桁では1秒以内は絶対ムリかと。
0980デフォルトの名無しさん2014/09/19(金) 20:51:43.77ID:JRtZOBn9
>>969
ttp://ideone.com/yXV2nN
ttp://ideone.com/Nay7aT
コード適当に書いてみたけど、浮動小数の誤差が出てうまく判定ができない。
10進化少数を待て次回!
0981デフォルトの名無しさん2014/09/19(金) 20:55:13.27ID:JRtZOBn9
>>975
ありがと!
0982デフォルトの名無しさん2014/09/19(金) 21:05:42.27ID:JRtZOBn9
とある名言で、大工はなんでものこぎりとハンマーとくぎで解決しようとする。という名言があるんだが、
コンピュータである程度高速に問題を解けるようになったもんだから、PG屋っていうか俺は力技で解こうとするんだな。
数学屋は式捻って解決するんだろうけど。
0983デフォルトの名無しさん2014/09/19(金) 21:16:49.94ID:A/k0GxKC
  |=番兵|_
 (  ・ω・) < ステンバーイ
  〇={=}〇        ∧,, ∧
  |::::::::::\        (*‘ω‘ *)
、、、し 、、、(((.@)vv、vvv 、、(、v、)っv、、
0984デフォルトの名無しさん2014/09/19(金) 21:33:24.34ID:spaja6yA
お疲れ
自分語りは中学生までにしておけよ
0985デフォルトの名無しさん2014/09/19(金) 21:35:51.97ID:O8AT4gzL
>>978
概算は素数定理を使ってf(x):=x/log(x)と置くと
f(10^33) = 1.316*10^31で手計算可能レベル。
0986デフォルトの名無しさん2014/09/19(金) 21:39:30.84ID:JRtZOBn9
三つ子の魂百まで。中学生になった時にはもう遅いのだ。
なんてね。
0987デフォルトの名無しさん2014/09/19(金) 22:24:06.46ID:JGrS0y/F
>>979
「アトキンのふるい」て知らなかった。
実装してみよっと。
0988デフォルトの名無しさん2014/09/19(金) 22:30:04.37ID:xoQnq0yE
スクリプト言語のバトルスレから、こんなお題。

9−3÷1/3+1 を 結果が 1 を返すようパーズして評価するコードを書け。

なお、
・数字は半角ではない。
・/ は ÷より優先される。どちらの演算も割り切れない場合は分数を返す。
・組み込みで分数をサポートしない言語は、既存ライブラリーを使ってもよいし
 自分で簡易実装してもよい。無理なら小数点数で扱ってもよい。
・パーザーは手書きでもパーザー生成器などライブラリーを使ってもよい。
 いずれにせよ、他の類似の式文字列も同様にパーズ・評価できるように実装する。
 例:1/2÷3/4÷5/6×7/8 #=> 7/10
・余力があれば二桁以上の数値、漢数字、括弧、全角返値などへの対応もご自由に。
0989デフォルトの名無しさん2014/09/20(土) 01:31:37.57ID:nhi4Nvua
>>988
ttp://ideone.com/nXxAgF
一応C++。何かいろいろおかしいけど一応動くものができた。かなり疲れた。
字句解析ってあんまり得意じゃないのですごい汚い。
エクストラステージも一応やっておいた。
歯抜けなので転用はなるべく控えてください。
0990デフォルトの名無しさん2014/09/20(土) 02:04:04.92ID:M/9MxdSa
>>931 Emacs Lisp

% cat h:/honda/本田_10.TXT
hドライブの「honda」フォルダ内のファイル:本田_10.TXTを読み込み、英大文字を英小文字に変換、英小文字を英大文字に変換、その他はそのままで表示せよ。

% cat aaa.sh
#!/bin/sh

emacs -batch -Q --eval='
(progn
(require (quote cl-lib))
(princ
(with-temp-buffer
(insert-file-contents (car (last command-line-args)))
(cl-map (quote string) (lambda (x)
(cond
((eq (aref (standard-case-table) x) x) (upcase x))
((aref (standard-case-table) x) (downcase x))
(t x)))
(buffer-substring (point-min) (point-max))))))' $1

exit $?

% sh aaa.sh h:/honda/本田_10.TXT
Hドライブの「HONDA」フォルダ内のファイル:本田_10.txtを読み込み、英大文字を英小文字に変換、英小文字を英大文字に変換、その他はそのままで表示せよ。
0991デフォルトの名無しさん2014/09/20(土) 02:37:58.55ID:M/9MxdSa
>>935 Emacs Lisp

http://www.wolframalpha.com/input/?i=number+of+primes+greater+than+100000+and+less+than+199999
8392

(defun f (a b)
(cl-flet ((num-of-primes (upto)
(/ upto (log upto)))))
(round (- (num-of-primes b) (num-of-primes a))))
f

(f 100000 199999)
7699
0992デフォルトの名無しさん2014/09/20(土) 10:49:58.32ID:jeZ3jwgu
>>984
アホは書き込み禁止
0993デフォルトの名無しさん2014/09/20(土) 12:08:27.24ID:gfBeDOZE
>>971
ミラー・ラビンテストは素数を正確に検出することはできません‥
0994デフォルトの名無しさん2014/09/20(土) 12:47:56.52ID:Z1UbwCef
テストケースの範囲が規定されてるんだから、 高速な近似アルゴリズムがその範囲内において厳密に正解である、てのを前もって(遅いけど厳密なアルゴリズムで)検証しとけばイイんじゃねぇの?
0995デフォルトの名無しさん2014/09/20(土) 13:17:39.78ID:opmeqTUD
>>988

すでに出ているコード

Squeak Smalltalk
http://peace.2ch.net/test/read.cgi/tech/1409066255/487

OMeta/JS
http://peace.2ch.net/test/read.cgi/tech/1409066255/489

F#
http://peace.2ch.net/test/read.cgi/tech/1409066255/490

gawk
http://ideone.com/3W5gUW
0996デフォルトの名無しさん2014/09/20(土) 13:36:07.16ID:nhi4Nvua
>>995
スレに収まるほどの範囲でかけるもんか〜。
俺もまだまだだな。

ところで次スレってあるの?
0997デフォルトの名無しさん2014/09/21(日) 00:35:50.74ID:WCtTxfaP
プログラミングのお題スレ Part5
http://peace.2ch.net/test/read.cgi/tech/1411227287/
0998デフォルトの名無しさん2014/09/21(日) 01:11:17.40ID:+YftySIr
生き埋め
0999デフォルトの名無しさん2014/09/21(日) 01:13:41.17ID:l8xEPcUn
救出
1000デフォルトの名無しさん2014/09/21(日) 01:14:51.02ID:gq8YyBjq
丁度一ヶ月たった日にそれはちょっと不謹慎…
とか言い出すと不謹慎脳って言われるんだろうか?

>>997
乙
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。