プログラミングのお題スレ Part7 [転載禁止]©5ch.io
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2015/04/16(木) 23:41:15.63ID:XyyhtFlt前スレ
プログラミングのお題スレ Part6
http://peace.2ch.net/test/read.cgi/tech/1418278634/
【出題と回答例】
1 名前:デフォルトの名無しさん
お題:お題本文
2 名前:デフォルトの名無しさん
>>1 使用言語
回答本文
【ソースコードが長くなったら】 (オンラインでコードを実行できる)
http://ideone.com/
http://codepad.org/
http://compileonline.com/
http://rextester.com/runcode
http://runnable.com/
http://code.hackerearth.com/
http://melpon.org/wandbox
https://paiza.io/
宿題は宿題スレがあるのでそちらへ。
0002デフォルトの名無しさん
2015/04/16(木) 23:41:53.41ID:XyyhtFlt5 http://peace.2ch.net/test/read.cgi/tech/1411227287/
4 http://peace.2ch.net/test/read.cgi/tech/1402622093/
3 http://peace.2ch.net/test/read.cgi/tech/1390525149/
2 http://toro.2ch.net/test/read.cgi/tech/1357191974/
出されたお題をコーディングして罵られるスレ
http://toro.2ch.net/test/read.cgi/tech/1354393458/
0003デフォルトの名無しさん
2015/04/16(木) 23:43:38.65ID:XyyhtFltmail欄はsageteoff
0004デフォルトの名無しさん
2015/04/19(日) 08:41:01.48ID:499dPEsl@Mathematica
http://ideone.com/PNfH13
00054
2015/04/19(日) 08:53:13.36ID:499dPEsl修正版:
http://ideone.com/xCuVGQ
0006デフォルトの名無しさん
2015/04/19(日) 15:24:17.99ID:QL2TDW9ACDを積み上げた3つのタワーがある
その中の幾つかのCDを順番に再生したい
とれる行動は次の2つである
1. あるタワーの一番上のCDを、違うタワーの一番上に移動させる
2. あるタワーの一番上のCDを再生し、どれかのタワーの一番上に戻す
3つのタワーA, B, Cの状態を以下とする
A: 0 1 2 3
B: 4 5 6 7 8
C: 9
右であるほどタワーの上に位置することを表す
再生したいCDの順は 2 5 8 3 9 0 6 4 である
最短でCDを再生したときの行動の回数を求めよ
0007デフォルトの名無しさん
2015/04/19(日) 16:00:55.03ID:QeOPKk73森にお帰り
http://yomogi.2ch.net/test/read.cgi/classical/1421552256/
0008デフォルトの名無しさん
2015/04/19(日) 17:04:18.53ID:lN5g8+76あれ元ネタ何なのかね。
どう考えてもかなり無理筋っていうか、もっと適切な題材あるだろうに
0009デフォルトの名無しさん
2015/04/19(日) 18:56:30.78ID:DZ/Rp3k50010デフォルトの名無しさん
2015/04/19(日) 20:59:04.90ID:1mXx6e32ハノイの塔解くだけなら再帰は不要だもんな。
0011デフォルトの名無しさん
2015/04/19(日) 21:42:30.83ID:jVWc52Q3修正して欲しいんですけど
0012デフォルトの名無しさん
2015/04/19(日) 21:48:01.35ID:QeOPKk730013デフォルトの名無しさん
2015/04/19(日) 22:09:46.09ID:G8ijS8/cぐぐれ
http://ja.wikipedia.org/wiki/%E3%83%8F%E3%83%8E%E3%82%A4%E3%81%AE%E5%A1%94
0014デフォルトの名無しさん
2015/04/19(日) 22:53:01.22ID:U9YI9x1Z質問しようとした後に解決しました
0015デフォルトの名無しさん
2015/04/21(火) 13:43:03.07ID:h/4KxI3Lhttp://ideone.com/ozSyPR
ideoneの5秒制限になんとか収まった
0016デフォルトの名無しさん
2015/04/22(水) 09:02:20.22ID:EjMM/uR21から任意の整数の間に、逆から読んでも同じ数となるような数
(131 とか 24642 のような数)がいくつあるか求めてください
例:1〜11の場合、10以外は左右どちらから見ても同じ数になるので10個
サンプルとして 1〜77777 の場合を求めてみてください
解答例(C言語):
http://ideone.com/tf4HaW
0017デフォルトの名無しさん
2015/04/22(水) 10:14:30.61ID:s50RILJhttp://ideone.com/W6QWtU
C++。あってるかな。関数の切り方にちょっと悩んだ。
0018デフォルトの名無しさん
2015/04/22(水) 13:40:28.78ID:ttLBdBNjhttp://ideone.com/ZbVF4X
0019デフォルトの名無しさん
2015/04/22(水) 14:23:39.16ID:73pI9GPx$ ruby -e 'p (1..77777).select{|i| i.to_s==i.to_s.reverse}.count'
876
$ seq 1 77777|while read;do [ $REPLY = $(echo $REPLY|rev) ] && echo $REPLY ;done|wc -l #遅い
876
0020デフォルトの名無しさん
2015/04/23(木) 01:07:36.35ID:sLyuD+KM+/ (-: |. &. ":)"0 >: i. 77777
876
0021デフォルトの名無しさん
2015/04/23(木) 02:31:21.11ID:Zj+Mf1q4http://ideone.com/vRdSZY
0022デフォルトの名無しさん
2015/04/23(木) 03:47:13.95ID:r6E26dzhhttp://ideone.com/zmWDHB
0023デフォルトの名無しさん
2015/04/23(木) 06:57:51.35ID:r6E26dzh少し短くなった
https://ideone.com/KEkL3t
0024デフォルトの名無しさん
2015/04/23(木) 07:05:00.69ID:r6E26dzh何度もすまん
https://ideone.com/vbNQBl
0025デフォルトの名無しさん
2015/04/23(木) 12:05:16.10ID:ED5B2lIFttp://codepad.org/dUCHywPU
0026デフォルトの名無しさん
2015/04/23(木) 13:25:57.63ID:ED5B2lIFttp://codepad.org/jhajiA13
>>25 は間違えた
0027デフォルトの名無しさん
2015/04/23(木) 15:48:24.62ID:zpz2iPldhttp://ideone.com/FDuADy
>>16 Haskell
シンプル http://ideone.com/oDak6h
高速 http://ideone.com/1OaYZ5
0028デフォルトの名無しさん
2015/04/23(木) 16:51:00.77ID:ED5B2lIFttp://codepad.org/OTJ7hxTF
>>26 まだバグが残っていた
0029デフォルトの名無しさん
2015/04/23(木) 20:18:48.74ID:sLyuD+KMこの並びの任意の位置から連続した1個以上の並びを取り出し、その合計値の最大値を求める。
例
1,2,3 -> 6
-1,-2,-3 -> -1
-41,-61,81,-15,-75,74,13,-82,61,39,-85,41,60,-83,15,74,-76,-13,81,-62 -> 127
0030デフォルトの名無しさん
2015/04/23(木) 21:12:20.23ID:zpz2iPldimport Data.List
main = mapM (print . solve) [[1,2,3], [-1,-2,-3], [-41,-61,81,-15,-75,74,13,-82,61,39,-85,41,60,-83,15,74,-76,-13,81,-62]]
solve = maximum . concatMap (map sum . filter ((0 <) . length) . tails) . inits
--
6
-1
127
0031デフォルトの名無しさん
2015/04/23(木) 21:38:04.69ID:VOQkakNgC++
http://ideone.com/kyYbYS
0032デフォルトの名無しさん
2015/04/24(金) 00:04:10.11ID:5q3CaoMettp://ideone.com/gVduTO
C++。正直>>31が理解できなかったので、理解するために書いた。遅いよ。
0033デフォルトの名無しさん
2015/04/24(金) 01:09:01.72ID:BOC1RPMaO(n)
n=800000 で3.5秒
http://ideone.com/njhwPG
0034デフォルトの名無しさん
2015/04/24(金) 07:43:51.12ID:kOI58QZSn=20のデータは sin(cos(i*2)) を100倍して切捨てつくりました。(i=1,2,...,20)
同じ式を使った場合、同じデーータの繰り返しになって
結果も同じになってしまいますが
n=10000
-41,-61,81,...,-83,18,72 -> 128
n=1000000
-41,-61,81,...,0,-79,68 -> 128
何か他によい例があったら教えてください。
0035デフォルトの名無しさん
2015/04/24(金) 11:18:16.63ID:Fj4jFnZ5http://ideone.com/mhSKuL
n=1000000の時の答え合わせに>>31さんの方法を
使わせていただきました
0036デフォルトの名無しさん
2015/04/24(金) 15:20:10.00ID:Fj4jFnZ5出現数値の偏りにそれほどこだわらないなら大きな数を1から順に割って
その数から目的のデータを作るってのはどうでしょう
例:C
http://ideone.com/PakckH
例:Haskell
http://ideone.com/IB33HQ
整数の割り算ということに気を付ければ言語によらず同じ結果が
得られそうな気はします
例で示した被除数の 123456789012345678 は64bit整数型で扱える数で
打ち間違えにくいように1から順に18桁並べただけで、数字自体に
特に意味は無いです
(数の選び方によって偏りを少なくできるとかあるのかもしれません)
0037デフォルトの名無しさん
2015/04/24(金) 18:48:30.96ID:kOI58QZSありがとうございます。Jでも再現できました。
99 -~ 199 | <. 123456789012345678x % >: i. 10
76 88 92 _6 15 96 68 _53 31 57
0038デフォルトの名無しさん
2015/04/28(火) 23:28:06.23ID:BwHbTSC8半年ぶりくらいのPython・・・リハビリのつもりで書いてみますた
https://ideone.com/edqkQu
def find_max(lst):
return max([max((max([sum(lst[j:i]) for i in range(j + 1, len(lst)+1)]),
max([sum(lst[i:j + 1]) for i in range(j, -1, -1)])))
for j in range(len(lst))])
print(map(find_max,
[
[1,2,3],
[-1,-2,-3],
[-41,-61,81,-15,-75,74,13,-82,61,39,-85,41,60,-83,15,74,-76,-13,81,-62]
]))
→ [6, -1, 127]
0039デフォルトの名無しさん
2015/04/29(水) 01:48:55.16ID:5AfRCLH1http://ideone.com/mcj8LX
def find_kaibun(num):
return all([str(num)[i] == str(num)[len(str(num)) - i - 1] for i in range(len(str(num)) / 2)])
l = [i for i in range(1, 77777 + 1) if find_kaibun(i)]
print(len(l), l)
→ (876, [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44, 55, 66, 77, 88, 99, 101, 111, 121, ・・・
半年前に来てた時は自分以外にもPythonの人がいたと思ったけど、最近はどうなの?
0040デフォルトの名無しさん
2015/04/29(水) 21:28:49.44ID:iBeGX6EQPython3で。
https://paiza.io/projects/rU853W4pytivHv2bCGPzLw
>>20,21の理屈はわかるが、Pythonでの実装が出来なひ・・・
0041デフォルトの名無しさん
2015/05/01(金) 14:31:24.98ID:9G1+bMO9最小値を求める。円の中心点は格子点でなくてよい。
例
n=2 -> 0.5
n=5 -> 16.170331
n=6 -> 2.5
0042デフォルトの名無しさん
2015/05/01(金) 18:56:38.52ID:T0v4P88i0043デフォルトの名無しさん
2015/05/01(金) 19:57:21.58ID:xQOVo91L0044デフォルトの名無しさん
2015/05/01(金) 20:17:19.05ID:FLjxIOyJ1点減らした5点はそのまま同じ円を通るんだし
なので解は必ず n+1の解 >= nの解 となるような気がする
0045デフォルトの名無しさん
2015/05/01(金) 20:23:37.36ID:yafupUA10046デフォルトの名無しさん
2015/05/01(金) 20:28:40.32ID:FLjxIOyJn=5は5個ぴったり(5個より多いのは含まない)ってことなのね
任意に設定した点を通る という意味かと思ったわ
0047デフォルトの名無しさん
2015/05/01(金) 21:39:43.70ID:43Y0oyenシュタインハウスの問題と呼ばれているようだね
http://infoshako.sk.tsukuba.ac.jp/~hachi/COS/combin.jp/maebara_08.pdf 定理7-1
0050デフォルトの名無しさん
2015/05/02(土) 23:40:09.79ID:JnlLatCo頭の悪い方法しか思いつかない
代数的にやったほうがいいのかなあ
0051デフォルトの名無しさん
2015/05/03(日) 03:11:51.36ID:TxyRXx/wx=5/6, y=5/6を中心に半径sqrt(625/18)≒5.89256かも知れんね
0052デフォルトの名無しさん
2015/05/03(日) 12:01:26.71ID:RahNxiIo0053デフォルトの名無しさん
2015/05/04(月) 03:41:04.46ID:uRpO/aWf一応解けたけどn=5の時の答えが一致しない
http://ideone.com/WibF1p
0054デフォルトの名無しさん
2015/05/04(月) 04:04:31.40ID:imk+xUyg0055デフォルトの名無しさん
2015/05/04(月) 04:08:05.16ID:uRpO/aWf0056デフォルトの名無しさん
2015/05/05(火) 15:18:54.52ID:H4XzqbDo0057デフォルトの名無しさん
2015/05/05(火) 15:33:14.43ID:BGv+Ql+D0058デフォルトの名無しさん
2015/05/05(火) 18:17:45.73ID:u63F52Uq呼んでもないのに出てくるなよ。
0059デフォルトの名無しさん
2015/05/06(水) 03:20:59.74ID:gsFpCXg1それHaskellで書かなきゃいけないようなプログラムかな
逆にすごくわかりにくくなっている
0060デフォルトの名無しさん
2015/05/06(水) 10:46:33.24ID:93pCkaKt検索打ち切ってるところにn=17,19がある可能性
32bit整数がオーバーフローしてる可能性
そもそもプログラムが間違えている可能性
計算でぱぱぱっと結果出せないかなー…
0061デフォルトの名無しさん
2015/05/06(水) 11:23:44.80ID:Iqww/TfGnが偶数なら格子点上か(0.5,0.5)の点が中心になり
奇数なら(0,k)か(k,k)(k:は任意実数)が中心になるんではないか
それなら半径x以下を調べるのがO(x)で出来そう
0062デフォルトの名無しさん
2015/05/06(水) 11:24:52.05ID:/1rfMabx小さい円から網羅していけばいいのでは。
0063デフォルトの名無しさん
2015/05/06(水) 11:37:09.99ID:/1rfMabxhttp://canon-its.jp/supp/tc/tct2016a.gif
http://canon-its.jp/supp/tc/tct2016c.gif
http://canon-its.jp/supp/tc/tct2016d.gif
http://canon-its.jp/supp/tc/wtct2016.html
0064デフォルトの名無しさん
2015/05/06(水) 11:51:18.89ID:93pCkaKtn=7(9/22,5/22)
0065デフォルトの名無しさん
2015/05/06(水) 12:26:40.95ID:/1rfMabxすべてのn>=2に対して円周上にn個の格子点をふくむようにできるか?
0066デフォルトの名無しさん
2015/05/06(水) 12:45:18.82ID:Iqww/TfG完全に勘違いしてた kが実数なのに(0,k)をO(k)で探索するなんて無理な話だった
>>64
即反例がでて悲しい
ちなみにそれ中心の半径いくつで7になるんですか?
0067デフォルトの名無しさん
2015/05/06(水) 12:51:22.77ID:93pCkaKtR=23.890677 R^2=138125/242
結構小さい
0068デフォルトの名無しさん
2015/05/06(水) 12:56:00.09ID:/1rfMabx0069デフォルトの名無しさん
2015/05/06(水) 13:06:21.47ID:+6vRJGiM好きでHaskell使ってるんだよ
適した言語があるなら教えてほしい
0070デフォルトの名無しさん
2015/05/06(水) 14:55:21.65ID:/1rfMabx最小半径を求めるには使えんな。
5^16 = 152587890625
0071デフォルトの名無しさん
2015/05/06(水) 18:10:02.29ID:/1rfMabx3点で円が一意に決まる。平行移動で3点は第一象限にとっていいか。
とりあえず100*100に限定すると、3点のとりかたは同一だとみなせるのを除去とたらいくつだろうか?
0072デフォルトの名無しさん
2015/05/06(水) 18:35:26.70ID:/1rfMabx16*16だと、345440とおりだ。
□□□□ □□□■
□□□□ □□□■
□□□□ □□□■
■■■□ □□□□
■□□□ ■■■□
■□□□ □□□□
■□□□ □□□□
□□□□ □□□□
□■■■ □□□□
□□□□ ■□□□
□□□□ ■□□□
□□□□ ■□□□
□□□□ □□□□
□□□■ □□□□
□□□■ □□□□
□□□■ □■■■
0073デフォルトの名無しさん
2015/05/06(水) 21:06:36.30ID:b3w9X6pcPython 2.7
GWの暇つぶしにやってみました
http://ideone.com/LhvO7D
※制限事項
重量の小数点以下の桁数は1以下であること、2桁目以降がある場合は切り捨てて実行します
0074デフォルトの名無しさん
2015/05/06(水) 23:28:42.12ID:b3w9X6pcPython 2.7
https://ideone.com/ldNnLS
※制限事項
単純に処理すると全部最短経路になるようなので特に「最短経路」に関する処理をしていません
前提が変われば処理修正が必要になります
0075デフォルトの名無しさん
2015/05/07(木) 08:25:29.14ID:fp1OfwiH並列処理できるからGPUとか分散コンピューティングとかのベンチマークになりそう。
0076デフォルトの名無しさん
2015/05/08(金) 16:04:38.05ID:yNFQd1ZkN=35 (1/6,1/6) R=4979.210251 R^2=446265625/18
N=53 (7/22,1/22) R=5010.952106 R^2=6076533125/242
0077デフォルトの名無しさん
2015/05/08(金) 16:22:54.99ID:rlI7+SsFそれを外側で接する円を調べたらいいか?
原点とX軸の点として一般性は失わないか。
0078デフォルトの名無しさん
2015/05/08(金) 17:00:02.98ID:rlI7+SsF格子点 (0,0) (C,0) (D,E)を通るとして解くと
a=C/2 b=(E^2+D^2-C*D)/(2*E) らしい。
0079デフォルトの名無しさん
2015/05/08(金) 17:04:17.57ID:yNFQd1Zk0080デフォルトの名無しさん
2015/05/08(金) 17:11:04.08ID:rlI7+SsF三角形に外接する円で、合同三角形を除外し、半径で打ち切りし探索するのが良さげと思ったが。
0081デフォルトの名無しさん
2015/05/08(金) 17:12:35.09ID:R3VV3ruE例えばn=3のときとかね
0082デフォルトの名無しさん
2015/05/08(金) 17:17:54.05ID:rlI7+SsFそうだ。移動や回転でX軸に持っていけると思ったら整数値でなくなる。
0083デフォルトの名無しさん
2015/05/08(金) 17:56:39.86ID:rlI7+SsF3点目は正弦定理で円の半径を限定しつつ決めればいいか。
正弦定理
http://blog-imgs-44.fc2.com/m/a/t/mathgalois/snap_mathgalois_201111221225.jpg
http://mathgalois.blog.fc2.com/category4-1.html
0084片山博文MZ ◆T6xkBnTXz7B0
2015/05/08(金) 22:05:06.61ID://zzhYF7さらに、「文字列nameが与えられるとstrsに含まれているか判定する」次の例のようなswitch文のネストを含むソースコードを吐き出す。
例) "abc", "abb", "cd"
switch (p[0]) {
case 'a':
switch (p[1]) {
case 'b':
switch (p[2]) {
case 'b': return 1;//abb
case 'c': return 0;//abc
default: return 0;
}
default: return 0;
}
case 'c':
switch (p[1]) {
case 'd': return 2;
default: return 0;
}
default: return 0;
}
0085片山博文MZ ◆T6xkBnTXz7B0
2015/05/08(金) 22:09:08.57ID://zzhYF7(誤) default: return 0;
(正) default: return -1;
0086片山博文MZ ◆T6xkBnTXz7B0
2015/05/08(金) 22:16:43.00ID://zzhYF7戻り値は-1かインデックスとする。
0087デフォルトの名無しさん
2015/05/09(土) 00:06:05.79ID:Zpa6XC8tガバガバな出題だな
http://ideone.com/NaV8MO
http://ideone.com/UlQvR0
0088片山博文MZ ◆T6xkBnTXz7B0
2015/05/09(土) 00:15:06.77ID:IBcmzD7Pまだこの頭脳はinsaneだから、細かい所に不具合がある。
case 0:は必要だったね。nameじゃなくてpだね。ごめんよ。
0089デフォルトの名無しさん
2015/05/09(土) 00:17:05.78ID:v8DO1laqすげーよく整理されてる
0091片山博文MZ ◆T6xkBnTXz7B0
2015/05/09(土) 01:20:42.41ID:IBcmzD7Pそれをスマートに判定して切り替えることはできないか?
0092片山博文MZ ◆T6xkBnTXz7B0
2015/05/09(土) 01:56:13.56ID:IBcmzD7P0093デフォルトの名無しさん
2015/05/09(土) 04:58:10.84ID:0eap6abI0094デフォルトの名無しさん
2015/05/09(土) 05:35:51.17ID:WDrUd2Zmstrsに重複があったらどうするか…
0095デフォルトの名無しさん
2015/05/09(土) 22:04:06.89ID:2bA/PfbD原点Oおよび点A=(Ax,Ay),点B=(Bx,By)をとる(ただし、∠O≦∠A≦∠Bとなるようにする)
また、△OABの外接円の半径をRとし、Rの上限をMaxRとする
格子点はx軸,y軸,y=±xに対して対称なので0≦Ay≦Axとして一般性を失わない
また、正弦定理より2*MaxR≧2*R=√(Ax^2+Ay^2)/sinB≧Ax ∴Ax≦2*MaxR
さらに、△OABの面積S=|Ax*By-Bx*Ay|/2=|OB|*|AB|*sinB/2=|OA|*|OB|*|AB|/(4*R)より
R=√(Ax^2+Ay^2)*√(Bx^2+By^2)*√{(Ax-Bx)^2+(Ay-By)^2}/(2*|Ax*By-Bx*Ay|)≦MaxR
∠A≦∠BよりBx^2+By^2≦Ax^2+Ay^2…�@ ∴Bx≦√(Ax^2+Ay^2-By^2)
また、OAの垂直二等分線の方程式はAx*X+Ay*Y=(Ax^2+Ay^2)/2で
∠O≦∠AよりAx*Bx+Ay*By≧(Ax^2+Ay^2)/2 ∴(Ax^2+Ay^2-2*Ay*By)/(2*Ax)≦Bx…�A
�Aを�@へ代入して整理すると4*By^2-4*Ay*By-3*Ax^2+Ay^2≦0
∴(Ay-√3*Ax)/2≦By≦(Ay+√3*Ax)/2
以上より、点A,Bおよび半径Rの取りうる範囲をまとめると
(1) 0≦Ay≦Ax≦2*MaxR
(2) (Ay-√3*Ax)/2≦By≦(Ay+√3*Ax)/2
(3) (Ax^2+Ay^2-2*Ay*By)/(2*Ax)≦Bx≦√(Ax^2+Ay^2-By^2)
(4) R=√(Ax^2+Ay^2)*√(Bx^2+By^2)*√{(Ax-Bx)^2+(Ay-By)^2}/(2*|Ax*By-Bx*Ay|)≦MaxR
△OABの外接円の中心(Rx,Ry)はOAの垂直二等分線とOBの垂直二等分線の交点より
Ax*Rx+Ay*Ry=(Ax^2+Ay^2)/2,Bx*Rx+By*Ry=(Bx^2+By^2)/2で、これを解くと
Rx={(Ax^2+Ay^2)*By-(Bx^2+By^2)*Ay}/{2*(Ax*By-Bx*Ay)},
Ry={Ax*(Bx^2+By^2)-Bx*(Ax^2+Ay^2)}/{2*(Ax*By-Bx*Ay)}
よって、3点O,A,Bを通る円の方程式は(X-Rx)^2+(Y-Ry)^2=R^2を整理して
{2*(Ax*By-Bx*Ay)*X-(Ax^2+Ay^2)*By+(Bx^2+By^2)*Ay}^2
+{2*(Ax*By-Bx*Ay)*Y-Ax*(Bx^2+By^2)+Bx*(Ax^2+Ay^2)}^2
=(Ax^2+Ay^2)*(Bx^2+By^2)*{(Ax-Bx)^2+(Ay-By)^2}
0096デフォルトの名無しさん
2015/05/09(土) 22:42:07.23ID:wRhRlmIF0097デフォルトの名無しさん
2015/05/09(土) 22:58:12.70ID:1wgbTbIMマルチプラットフォームで図形描写するのは何が手軽で主流?
格子点を数えるのは、円描写と同じだよな。
QuickDrawはどのように素早く円を描いていたのか? - ザリガニが見ていた...。
http://d.hatena.ne.jp/zariganitosh/20100318/1269006632
0098デフォルトの名無しさん
2015/05/09(土) 23:04:14.73ID:2bA/PfbD案の定間違ってた…
�Aを�@へ代入するところBx<0のときは成り立たないので場合分けする必要があるな
0099片山博文MZ ◆T6xkBnTXz7B0
2015/05/09(土) 23:20:39.86ID:IBcmzD7P0100デフォルトの名無しさん
2015/05/09(土) 23:27:29.73ID:P1lrEbUi0102デフォルトの名無しさん
2015/05/09(土) 23:34:24.44ID:1wgbTbIM考えたら同じではなく似てるだけだった。描写は近似した整数点でもいいので。
0103デフォルトの名無しさん
2015/05/10(日) 00:06:22.02ID:CCUjLZHW何をするのか知らないけど、どうぞ
0104デフォルトの名無しさん
2015/05/10(日) 00:28:10.08ID:fqW2K+gxproce55ingは…主流では無いかなあ?
でもjavaで動いてprocessing.jsもあるから少しの変更でブラウザでも
動くから大抵の環境で動作するんじゃないかな?
jsfiddle.netで公開もできるし
0105デフォルトの名無しさん
2015/05/10(日) 23:58:40.59ID:HYyw/XzX> マルチプラットフォームで図形描写する
思いつきだけど、canvas(とsvg)とか どうだろうか
http://ja.wikipedia.org/wiki/Canvas%E8%A6%81%E7%B4%A0
0106デフォルトの名無しさん
2015/05/13(水) 01:39:35.99ID:HT6TaRELこのスレ的にはどうなのよ
0107デフォルトの名無しさん
2015/05/13(水) 09:16:20.77ID:Fx6ryoFE0108デフォルトの名無しさん
2015/05/13(水) 13:04:43.46ID:ELTMIXW3(n+1)^2-n^2 <= 600 であるような n についてだけ素数を確認すればいいから
0109デフォルトの名無しさん
2015/05/13(水) 13:16:52.23ID:RNPZGRStどんな大きい数Nに対してもN <= aがあって、区間(a, a+600)に素数が含まれるだろう。
0110デフォルトの名無しさん
2015/05/13(水) 14:29:47.42ID:dc+Mu+3b600以内って証明されてるの?
0111デフォルトの名無しさん
2015/05/13(水) 15:34:11.65ID:PDozDIS+ttp://www.47news.jp/smp/CN/201402/CN2014022601001180.html
これ言ってんのかもしれたいけど、全ての隣接する素数の間隔が600以内とは違うぞ。
0112デフォルトの名無しさん
2015/05/13(水) 15:41:30.24ID:PDozDIS+(n+1)!+2, (n+1)!+3,…(n+1)!+n+1
は、全て合成数。
0113デフォルトの名無しさん
2015/05/13(水) 17:37:03.26ID:RNPZGRStは間違った。これは当たり前で。こっちか。
どんな大きい数Nに対してもN <= aがあって、区間(a, a+600)に2つの素数が含まれるだろう。
0114デフォルトの名無しさん
2015/05/14(木) 06:01:15.56ID:W2iLHg+g0115デフォルトの名無しさん
2015/05/14(木) 07:10:23.71ID:3LY3Y9ta// C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc beep.cs
using System;
using System.Runtime.InteropServices;
class Program {
[DllImport("kernel32.dll")]
private extern static bool Beep(uint dwFreq, uint dwDuration);
static void Main(string[] args) {
uint dwFreq = (uint)(440.0 * Math.Pow(2.0, 0 / 12.0));
Beep(dwFreq, 1000);
}
}
0116デフォルトの名無しさん
2015/05/14(木) 18:02:34.04ID:wgcm9SnCvar ac = new AudioContext(), o = ac.createOscillator();
o.connect(ac.destination);
o.start();
0117デフォルトの名無しさん
2015/05/14(木) 18:15:38.89ID:tu5PNrB+0118デフォルトの名無しさん
2015/05/14(木) 19:56:36.53ID:rp22TBsk俺が計算したのではこんなん
ただし半径256以上は最小じゃないかも知れないから注意
http://ideone.com/2WBTbl
0119デフォルトの名無しさん
2015/05/14(木) 19:59:13.35ID:rp22TBsk0120デフォルトの名無しさん
2015/05/14(木) 20:02:19.86ID:gFnFPpwL0121デフォルトの名無しさん
2015/05/14(木) 21:09:48.14ID:LRwinxcPhttp://www.itmedia.co.jp/news/articles/1505/12/news088.html
【お題】
現在時刻を取得し、「フィボナッチ時計」の表示を表現する文字列を表示せよ
※5分未満の端数は切り捨てとする
※候補が複数ある場合は、適当にひとつ選べ
赤=>R, 緑=>G, 青=>B, 白=>W
とする。
上記URLにある6:30の3つの例はそれぞれ、
RRRGGGGG WWGBBBBB BBRWWWWW
RRGGGGGG WWRBBBBB BBGWWWWW
RRRGGGGG WWWBBBBB BBBWWWWW
RRRGGGGG WWWBBBBB BBBWWWWW
RRRGGGGG WWWBBBBB BBBWWWWW
となる。
0122デフォルトの名無しさん
2015/05/14(木) 22:31:22.24ID:tu5PNrB+やってみようとしたら計算途中ですぐオーバーフロー。
0123デフォルトの名無しさん
2015/05/14(木) 22:33:22.99ID:rp22TBskhttp://ideone.com/MvIEqv
0124122
2015/05/14(木) 23:35:34.97ID:tu5PNrB+0125デフォルトの名無しさん
2015/05/15(金) 01:52:12.47ID:Qr95k8cQf =: 3 : 0
t =. (([:(- 5&|) 1&{) + 60 * 12 | 0&{) y
a =. 0 60 5 65
b =. > ,{ 5 # < a
c =. +/("1) 1 1 2 3 5 *"1 b
d =. 'WRGB' {~ a i. b {~ {. I. t = c
d {~ (5 5 $ 4),.~(3 3 $ 3),~(2 2 $ 2),.1 0
)
f 3 4 { 6!:0 ''
WWRGGGGG
WWWGGGGG
GGGGGGGG
GGGGGGGG
GGGGGGGG
3 4 { 6!:0 ''
1 44
f 6 30
WWBBBBBB
WWWBBBBB
WWWBBBBB
WWWBBBBB
WWWBBBBB
0126デフォルトの名無しさん
2015/05/15(金) 18:57:25.80ID:Fu7EElRXこれは何分くらい計算しましたか?
自分でやったのは15分くらいやってもっと精度が悪かった。
>>118で求まってない47個に絞って高速化を測ってみよう。
0127デフォルトの名無しさん
2015/05/15(金) 19:25:32.61ID:QL9b63wQ何分回したか覚えてないが15分回して半径1850までだったわ
0128デフォルトの名無しさん
2015/05/15(金) 19:32:03.74ID:Fu7EElRX実測してないけど。円の方程式を与えた時に円周に乗ってる格子点を数えるのが時間食ってるはずで、
正n角形を円に内接、外接させることで、格子点の個数の概算を求められないか。これあった。
ミンコフスキーの定理
S を任意の正数とする.平面上に面積Sの任意の平面図形F がある.
F に適当な平行移動をおこなって, Fの内部か周に含まれる格子点の数をSよりも大きくすることができる.
http://aozoragakuen.s■ak●ura.ne.jp/suuron/node65.html
ピックの公式
頂点が等間隔の格子点にのる、穴のない多角形の面積は、つぎのように求められる。
内部に含まれる格子点の数をP、辺にのる格子点の数をQとすると、面積Sは、S=P+Q/2-1である。
http://origami.asablo.jp/blog/img/2012/07/22/219864.jpg
http://origami.asablo.jp/blog/cat/katachi/?offset=70
次の円はちょうどn個の格子点を通る
n=2k+2のとき,点(1/2,0)を中心とする円 (2x-1)^2+(2y)^2=5^k
n=2k+1のとき,点(1/4,0)を中心とする円 (4x-1)^2+(4y)^2=5^2k
http://www.geocities.jp/ikuro_kotaro/koramu/1080_d.htm
0129デフォルトの名無しさん
2015/05/15(金) 20:00:15.63ID:Qr95k8cQbeep 440,1000
END
0130片山博文MZ社外取補 ◆T6xkBnTXz7B0
2015/05/15(金) 20:04:50.35ID:hBLf1mmaテープがずれたときの音響効果を再現せよ。
0131デフォルトの名無しさん
2015/05/15(金) 20:15:47.79ID:1SR5Grtlvar spv = WScript.CreateObject("SAPI.SpVoice");
spv.Speak("qawsedrftgyhujikolp;");
0132片山博文MZ社外取補 ◆T6xkBnTXz7B0
2015/05/15(金) 20:39:36.46ID:hBLf1mmaテープレコーダーの再生の仕組みを再現する必要がある。
さあ、絶望を味わえ。おのれの未熟さを痛感しろ。
0133デフォルトの名無しさん
2015/05/16(土) 00:04:48.68ID:CabkBQjc0134デフォルトの名無しさん
2015/05/16(土) 00:45:20.24ID:35PZJ6Jdおまえは宿題スレから出てくるなよ
0135デフォルトの名無しさん
2015/05/16(土) 06:29:37.05ID:fG0ClAbZ使わずにFizzBuzz問題を解
0136デフォルトの名無しさん
2015/05/16(土) 08:25:17.40ID:EZH0vInn0137デフォルトの名無しさん
2015/05/16(土) 10:24:52.52ID:/L8Apnqu0138デフォルトの名無しさん
2015/05/16(土) 10:32:13.07ID:Xo5bM6FI0139デフォルトの名無しさん
2015/05/16(土) 11:12:15.88ID:fG0ClAbZえー、なんでそんな拡大解釈するかな
たとえば、cなら+,-,*,/,%を使わずにというつもりなんだけど
剰余は、演算子じゃなくて関数やメソッドになっている言語もあるので
そうかいただけ
関数、メソッドが全部、禁止なんてかいたつもりないけど
0140デフォルトの名無しさん
2015/05/16(土) 12:00:36.09ID:/ON7fb4Iこのカッコがないとパースできない頭脳は人間よりも先行者に近い
0141デフォルトの名無しさん
2015/05/16(土) 12:03:15.08ID:Zn7RHpQ7意味不明
(ループは使わないけれど)
inc,decは四則演算子じゃない
0142デフォルトの名無しさん
2015/05/16(土) 12:23:26.19ID:/L8Apnquプログラムは考えられうることを考慮するんですよ。
どうとでも突っ込まれる曖昧な物言い(出題など)は駄目ですよ。
言葉に気を付けましょう
>>141
i++ は i = i + 1 なんですよ
0143デフォルトの名無しさん
2015/05/16(土) 12:30:28.86ID:EZH0vInn0144デフォルトの名無しさん
2015/05/16(土) 12:43:34.53ID:ASNC2Pc+where
f (_,3,5)="FizzBuzz"
f (_,_,5) ="Buzz"
f (_,3,_) ="Fizz"
f (x,_,_) =show x
0145デフォルトの名無しさん
2015/05/16(土) 12:50:32.73ID:b6wyU2Fnなんて馬鹿なんだ
おまえ、キモイからレスするなよ
はいNG
0146デフォルトの名無しさん
2015/05/16(土) 13:13:10.21ID:Itk97lw+static int add(int a, int b)
{
int i = a ^ b, j = a & b;
return j == 0 ? i : add(i, j << 1);
}
0147デフォルトの名無しさん
2015/05/16(土) 13:34:39.03ID:Xo5bM6FIソフトウェア技術としてとても重要
まあこんなとこでそんなこと言ってもしょうがないけど
0148デフォルトの名無しさん
2015/05/16(土) 15:27:55.73ID:Itk97lw+N=17 (7/16,6/16) R=627.437512 R^2=100781525/256
N=19 (7/16,2/16) R=627.437512 R^2=100781525/256
↓
N=17 (9/34,1/34) R=567.075947 R^2=185870425/578
N=19 (13/34,7/34) R=567.075947 R^2=185870425/578
ちょびっと小さくなった
0149デフォルトの名無しさん
2015/05/16(土) 16:22:19.99ID:SJX8fmIU円周の三時の位置付近の格子点から、y軸方向へ+1した点と、そこからx軸方向-1した点のどちらが円周に近いかは、
d(x,y)=f(x-1,y)^2 - f(x,y)^2と置くとd(x,y)の正負で判明する。
d(x,y)を因数分解すると、c^2*(2*c*x-c-2*a)で割り切れて、D(x,y)=d(x,y)/(c^2*(2*c*x-c-2*a))と置くと
x > 0.5 + a/cならば、D(x,y)とd(x,y)の正負は一致する。
D(x,y+1) = D(x,y) -4*c*y-2*c+4*b 、 D(x-1,y) = D(x,y) + 4*c*x-4*c-4*a なので、各点でのd(x,y)の正負は容易に計算できる。
0150デフォルトの名無しさん
2015/05/16(土) 20:17:15.44ID:WeEOI2RF| fizz buzz |
fizz := #('' '' Fizz).
buzz := #('' '' '' '' Buzz).
(1 to: 15) collect: [:n | (fizz atWrap: n), (buzz atWrap: n) ifEmpty: n]
"=> #(1 2 'Fizz' 4 'Buzz' 'Fizz' 7 8 'Fizz' 'Buzz' 11 'Fizz' 13 14 'FizzBuzz') "
0151デフォルトの名無しさん
2015/05/16(土) 22:24:47.22ID:SJX8fmIUyの動く範囲が0〜2980232238769531で計算せずともインクリメントするだけでも相当な時間かかる。
いったいどうやったら47点を求められるのか?
>>149のようにしたら円周にそって格子点候補が求まるがそれでもループ回数は同じ。
0152デフォルトの名無しさん
2015/05/16(土) 23:25:44.84ID:SJX8fmIUzを複素数、C(z)をその複素共役とするとz・C(z)=5^(N-1)のZ[i]の範囲での解が具体的に計算可能。
5 = 2^2 + 1^2 = (2+i)(2-i)なので、
z = u * (2 + i)^s*(2 - i)^(N-1-s) (u=±1、±i、s=0、…、N-1)が全解で4N個らしい。
実数表示したX^2 + Y^2 = 5^(N-1)の格子点の個数も4N個。
mod 4すると、X^2 + Y^2 ≡ 1で、X≡±1、Y≡0またはX≡0、Y≡±1となり、
X≡1、Y≡0 (mod 4)と制約つけると、解の個数が1/4になってN個らしい。
それを表す具体的方程式が(4x-1)^2 + (4y)^2 = 5^(N-1)らしい。
この関係から格子点は列挙できるはず。途中、条件がちょっと違って正しくないかもしれない。
0153デフォルトの名無しさん
2015/05/17(日) 01:01:26.46ID:YC8igNN27のとき最小は確実だとして。円の方程式にすると、(22*x-9)^2 + (22*y-5)^2 = 2^3*127*2719。
22という数は、原点中心の円のX^2 + Y^2 = 2^3*127*2719の解の個数を1/22にする効果があると予想してみたがこの解はゼロらしい。
原点中心の円の解の個数をmodで調整する方針は無理か。>>152のときはmodで個数が半減できるが、こっちだとゼロ解から解が増える。
2平方和定理
4n+1の形の素数は2つの整数の平方の和として表されます.たとえば,5=1^2+2^2,13=2^2+3^2,17=1^2+4^2,29=2^2+5^2
幾何学的な解釈を与えると半径√pの円上には8個の格子点が存在するのです.しかし,4n+3の形の素数は1つもこのようには表せないのです.
それでは,どのような自然数mが2つの平方数の和の形に書くことができるのでしょうか?
mの素因数分解におけるp=4n+3の形のすべての素因数の指数が偶数であるときに限り,2つの平方数の和の形に表すことができるのです.
http://www.geocities.jp/ikuro_kotaro/koramu/837_r5.htm
0154デフォルトの名無しさん
2015/05/17(日) 01:27:18.07ID:YC8igNN2X^2 + Y^2 = 2^3*127*2719は平行移動で154(7*22)点の格子点を通るようにできるとかか?
0155デフォルトの名無しさん
2015/05/17(日) 02:02:56.39ID:YC8igNN2mod 22で解が0個や1個や4個もありえて、22解あるわけでない。
0156デフォルトの名無しさん
2015/05/17(日) 03:05:02.38ID:YC8igNN2通分?すれば円の方程式は整数の範囲で(cx-a)^2 + (cy-b)^2 =Nの形にできるから、
X^2+Y^2=Nが整数解を持たないことには上の解もない。
X^2+Y^2=Nの整数解に対して、aやbを足しcで割り切れるかどうかで解の個数を制限できる。
>>153の7の場合が解なしで変とおもったら因数分解を間違ってて、右辺は 2*5^4*13*17だった。これだと解が多くある。
0157デフォルトの名無しさん
2015/05/17(日) 10:38:24.31ID:muk8ohrWhttp://u.cs.biu.ac.il/~margolis/Sadna/Proofs%20rom%20the%20Book%203rd%20Ed..pdf
日本語版も丸善出版から出てるはず
0158デフォルトの名無しさん
2015/05/17(日) 12:52:33.45ID:nYjMnLoA(require 'cl-lib)
cl-lib
(defun FizzBuzz (i)
(let ((aaa (list nil nil 'Fizz nil 'Buzz 'Fizz nil nil 'Fizz 'Buzz nil 'Fizz nil nil 'FizzBuzz)))
(rplacd (last aaa) aaa)
(let ((bbb (nth i (cons nil aaa))))
(if bbb bbb i))))
FizzBuzz
(cl-loop for i from 1 to 30 collect (FizzBuzz i))
(1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16 17 Fizz 19 Buzz Fizz 22 23 Fizz Buzz 26 Fizz 28 29 FizzBuzz)
0159デフォルトの名無しさん
2015/05/17(日) 14:22:25.31ID:YC8igNN2N = 5^kの解個数は4(k+1)個
N = 5^k *13の解個数は8(k+1)個
N = 5^k *13*17の解個数は16(k+1)個 k=7なら128個。N=17265625。
N = 5^k *13*17*29の解個数は32(k+1)個 k=3なら128個。N=801125。k=7なら256個。N=500703125。
N = 5^k *13*17*29*37の解個数は64(k+1)個 k=1なら128個。N=1185665。k=2なら256個。N=5928325。
N = 5^k *13*17*29*37*41の解個数は128(k+1)個 k=1なら256個。N=48612265。
0160デフォルトの名無しさん
2015/05/17(日) 14:34:20.24ID:YC8igNN2と思って>>118さんの表と見比べたら、
72解、128解はそれぞれR^2 = 5^2*13^2*17/2、5^3*13*17*29/2で達成できて微調整がいると分かった。
0161デフォルトの名無しさん
2015/05/19(火) 07:15:31.85ID:Da+Vo19d0162デフォルトの名無しさん
2015/05/19(火) 10:59:10.05ID:S02ugk9hただし文字列型を使うのは禁止ね。
つまりNを文字列に変換してそれを反転させて比較するのはダメってこと。
0163デフォルトの名無しさん
2015/05/19(火) 11:31:47.36ID:MQMNHW3R0164デフォルトの名無しさん
2015/05/19(火) 16:39:18.56ID:J5n0/uIWその公式は初めて知ったが。
すでに個数だけでなくその具体的な解まで判明してるがそれでも最小半径は簡単ではない。
素数は2を除けば4n+1型か4n-1型。
4n+1型は複素数の範囲で素数でなくなり、4n-1型は複素数でも素数。
5 = (1+2i)(1-2i)、13 = (2+3i)(2-3i)など。
複素数では素数でない素数では13 = 2^2 + 3^2などが求まり、実数と複素数で素数では解なし。
一般のNについては、Nを素因数分解したとき、2ベキは無視してよく(解個数を変化させない)、
4n-1型素数が奇数乗含まれれば解がなく、偶数乗なら(px)^2 + (py)^2=p^2*Nから無視していい。全体をp^2で割る、または掛ける。
結局、4n+1型のみに素因数分解できるものを考えればよくそのときは>>152のように全解を列挙できる。
0165デフォルトの名無しさん
2015/05/19(火) 16:45:36.52ID:Da+Vo19dhttp://ideone.com/zNugUr
0166165
2015/05/19(火) 16:46:16.94ID:Da+Vo19d0168デフォルトの名無しさん
2015/05/21(木) 04:49:33.68ID:NcgsUaMqFizzBuzz <- function(n){
a <- 1:n
a[seq(3,n,3)] <- "Fizz"
a[seq(5,n,5)] <- "Buzz"
a[seq(15,n,15)] <- "FizzBuzz"
cat(a,sep="\n")
}
0169デフォルトの名無しさん
2015/05/21(木) 06:49:27.33ID:NcgsUaMqf <- function(n){
w <- n
r <- 0
while(w > 0){
r <- r * 10 + w %% 10
w <- w %/% 10
}
r == n
}
> f(121)
[1] TRUE
> f(1122)
[1] FALSE
0170デフォルトの名無しさん
2015/05/21(木) 15:21:23.73ID:Sp3MrkTl| isPalindromic |
isPalindromic := [:N |
| N1 |
N1 := N.
N = ((0 to: N log) inject: 0 into: [:M :e | M * 10 + (N1 \\ 10 flag: (N1 := N1 // 10))])
].
isPalindromic value: 0. "=> true "
isPalindromic value: 10. "=> false"
isPalindromic value: 1234. "=> false "
isPalindromic value: 12321. "=> true "
isPalindromic value: 123321. "=> true "
isPalindromic value: 1234567890987654321. "=> true "
0171デフォルトの名無しさん
2015/05/21(木) 17:58:34.98ID:NcgsUaMqfunction f(n)
a = digits(n)
a == reverse(a)
end
julia> f(1234)
false
julia> f(1234321)
true
0172デフォルトの名無しさん
2015/05/23(土) 11:17:36.56ID:4DltYx6W0173デフォルトの名無しさん
2015/05/23(土) 12:50:18.11ID:PpO+s1up平面上の点v[1],...,v[n]が与えられる。
一本の直線で折って重ねることができる点の個数の最大値を求めよ。
より正確には、直線Lに対して、Lで折ることで点v[i]が移る先の点をL(v[i])
とおき、L(v[i])∈{v[1],...,v[n]}となるような点v[i]の個数をN(L)とおくとき、
N(L)が最大となるような直線Lを探し、そのときのN(L)の値を求めよ。
0174デフォルトの名無しさん
2015/05/23(土) 13:37:10.47ID:TCe7XEwZ0175デフォルトの名無しさん
2015/05/23(土) 14:05:35.40ID:CdB4mnZs0176デフォルトの名無しさん
2015/05/23(土) 18:41:03.49ID:KLESbJHwO(n^2)はすぐ思いつくけど、計算量が厳しそうだな・・・
0177デフォルトの名無しさん
2015/05/23(土) 19:41:48.57ID:xvr22N4V0178デフォルトの名無しさん
2015/05/23(土) 20:04:53.12ID:1SFlVJvM異なる二線分を選び、追ってみればできるか?
線分が重複しないケースもあるか? すくなくとも2点重なれば線分がかさなるか。
0179デフォルトの名無しさん
2015/05/23(土) 20:17:17.58ID:1SFlVJvM0180デフォルトの名無しさん
2015/05/23(土) 21:17:24.86ID:xvr22N4V0181デフォルトの名無しさん
2015/05/23(土) 21:34:54.34ID:1SFlVJvM直線候補の抽出がO(n)で可能ってほんとかよ?
0182デフォルトの名無しさん
2015/05/24(日) 00:58:29.75ID:RlzRxNiRテストケースを用意してない>>173のせいやな
0183デフォルトの名無しさん
2015/05/24(日) 01:09:29.39ID:neLU6sWs0184デフォルトの名無しさん
2015/05/24(日) 01:19:01.88ID:I/ZOM1+g小学生だったらいいが。
中学以上なのに理解できないとなるとヤバイのでは。
0185デフォルトの名無しさん
2015/05/24(日) 02:42:51.04ID:neLU6sWs0186デフォルトの名無しさん
2015/05/24(日) 02:44:54.66ID:neLU6sWs数学怖い。
0187デフォルトの名無しさん
2015/05/24(日) 03:28:30.16ID:RlzRxNiRhttp://ideone.com/vKMt7n
0188187
2015/05/24(日) 05:16:24.96ID:RlzRxNiR3じゃなくて8だ
0189デフォルトの名無しさん
2015/05/24(日) 16:41:09.92ID:+Ut0g5Tdf := method(p,
line := list
for(i, 0, p size - 2,
x1 := p at(i) at(0); y1 := p at(i) at(1)
for(j, i + 1, p size - 1,
x2 := p at(j) at(0); y2 := p at(j) at(1)
a := x2 - x1; b := y2 - y1
c := (x2 * x2 + y2 * y2 - x1 * x1 - y1 * y1) / 2
d := (a * a + b * b) sqrt
line push(list(a / d, b / d, c / d))
)
)
line uniqueCount map(last) max * 2
)
0190デフォルトの名無しさん
2015/05/24(日) 21:54:15.74ID:vbCiNCOWたとえば (0 1) (0 2) (0 3) (1 0) (2 0) (3 0) の6点の場合は、
L が y = x の直線で、返値は 6 という解釈であっている?
0191デフォルトの名無しさん
2015/05/24(日) 22:24:21.09ID:I/ZOM1+g小さい順に網羅していけば求まったところまでは求まるけど。エラトステネスのふるいの様に。
それだと格子点数を勝手に与えた時、例えば30分で必ず解けるとならない。
半径最小で無ければ>>128の後半のように解けるが半径が大きすぎ。
大きい半径からなんらかの操作で半径を縮められるアルゴリズムでもないとむりげ。
ニュートン法とか、楕円曲線に群構造入るとか、そういうやつ。
ニュートン法 - Wikipedia
http://upload.wikimedia.org/wikipedia/commons/thumb/8/8c/Newton_iteration.svg/729px-Newton_iteration.svg.png
楕円曲線 - Wikipedia
http://upload.wikimedia.org/wikipedia/commons/thumb/c/c1/ECClines.svg/680px-ECClines.svg.png
0192デフォルトの名無しさん
2015/05/25(月) 18:38:29.95ID:Y7rX6z/Wあなたの脳の中のプログラミング関連のキーワードを100個あげてください。
0193デフォルトの名無しさん
2015/05/25(月) 18:57:58.42ID:xijIFAYnVoid!
Void!
Void!
Void!
Void!
Void!
Void!
Void!
Void... 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
0194デフォルトの名無しさん
2015/05/25(月) 18:59:45.79ID:CLPSKXwIっていうか繰り言バカって何が楽しいのかね。
アルツハイマーか知的障害か何かか?
0195デフォルトの名無しさん
2015/05/25(月) 19:03:33.31ID:xijIFAYn0196デフォルトの名無しさん
2015/05/25(月) 19:08:56.92ID:CLPSKXwIしかも病識がないんだから相当ヤバそうだな。
0197デフォルトの名無しさん
2015/05/25(月) 19:10:24.47ID:xijIFAYn俺が書いたんだぞ。
題意になんか外れてるか?
0198デフォルトの名無しさん
2015/05/25(月) 19:12:15.54ID:CLPSKXwI脳の生理機能がまともな人でそういうのをネタとして成立していると思う人は
恐らく1%もいないだろう。
0199デフォルトの名無しさん
2015/05/25(月) 19:13:38.32ID:xijIFAYnそれより、題意に外れてるか?
0200デフォルトの名無しさん
2015/05/25(月) 19:42:25.68ID:xijIFAYn0201デフォルトの名無しさん
2015/05/26(火) 05:14:44.55ID:1oDb+v9J0202デフォルトの名無しさん
2015/05/26(火) 06:19:31.43ID:9h2BjrvB0203デフォルトの名無しさん
2015/05/26(火) 12:58:50.16ID:6Dkv9O3J宿題スレに戻ってくるなよ
0204デフォルトの名無しさん
2015/05/26(火) 13:07:07.66ID:gECC5ZzUQZは頭の病気だからな
医者も措置入院させればいいのに
0205山下雄介 ◆1Bax/hBUwKIJ
2015/05/26(火) 14:26:38.57ID:JlsMtCsC*--*-
--*--
-----
*----
W x Hの長さの方眼用紙がある
図のように目印を置きたい
ただし目印を中心として縦横2マス分に目印を置くことは出来ない
ダメな例
-----
*-*--
-----
*----
-----
WとHが与えられた時に最大で何個の目印を付けられるか求めよ
0206デフォルトの名無しさん
2015/05/26(火) 16:17:31.20ID:UiDv1Vcun = h / 3 * w + (h % 3 * w + 2) / 3
で良いのかな?
0207デフォルトの名無しさん
2015/05/26(火) 21:25:01.07ID:efMquilK長さnのビット列bと、その列のi番目から連続する5個のビットを取り出した部分列B(i)について考える
任意のiに対してB(i)が一意であるような(言い換えれば全てのi, j (i != j) でB(i) != B(j) であるような)最長のbを全て求めよ
0208207
2015/05/26(火) 21:42:21.84ID:efMquilK×全て求めよ
○1つ求めよ
0209デフォルトの名無しさん
2015/05/26(火) 23:05:39.07ID:UiDv1Vcuhttp://ideone.com/8LRb06
0210デフォルトの名無しさん
2015/05/26(火) 23:55:37.13ID:pWlDwc7e000001111110110111010101111001011001101001001110001010001100001000000
JavaScriptだと時間がかかった
0211デフォルトの名無しさん
2015/05/28(木) 03:02:01.94ID:HpiHcMm6複数の文字列があります(例:あさがお、ひまわり、ばら…)
これらをあいうえお順に並び替えなさい
0212デフォルトの名無しさん
2015/05/28(木) 03:35:31.90ID:4sk1+J2t(defun sort-order-of-あいうえお (list)
(sort list #'string<))
(sort-order-of-あいうえお
'(あさがお ひまわり ばら ちゅーりっぷ さくら れんげ たんぽぽ こすもす))
; => (あさがお こすもす さくら たんぽぽ ちゅーりっぷ ばら ひまわり れんげ)
0213デフォルトの名無しさん
2015/05/28(木) 03:54:08.42ID:2OA2b1Hf0214デフォルトの名無しさん
2015/05/28(木) 06:31:58.74ID:k9GSrpZW0215デフォルトの名無しさん
2015/05/28(木) 07:02:10.29ID:2OA2b1Hf0216デフォルトの名無しさん
2015/05/28(木) 08:17:32.88ID:3K5uFNHw0217デフォルトの名無しさん
2015/05/29(金) 14:56:57.46ID:AjLw/6wQH(0) = 0
H(n) = n - H(H(H(n - 1))) (n > 0)
0218デフォルトの名無しさん
2015/05/29(金) 15:22:19.69ID:CjkVTpMLhttp://ideone.com/zg8Pj2
数学解らんからこれで良いのかわからないw
0219デフォルトの名無しさん
2015/05/29(金) 15:27:05.84ID:KO9INHN8http://ideone.com/tKQJh1
0220デフォルトの名無しさん
2015/05/29(金) 15:34:53.49ID:7gkBDvqN答え出ないんだが
こちらの処理系(gcc4.9.2)では1368
0221デフォルトの名無しさん
2015/05/29(金) 15:38:47.23ID:CjkVTpMLconst int N = 2005;
0222デフォルトの名無しさん
2015/05/29(金) 15:45:05.87ID:7gkBDvqNあ、ごめん
それと答え出たね
http://ideone.com/Q9tbKG
0223デフォルトの名無しさん
2015/05/29(金) 18:33:58.90ID:mOKk8Lcr0224デフォルトの名無しさん
2015/05/29(金) 20:22:03.26ID:iCMpStJ70225デフォルトの名無しさん
2015/05/29(金) 21:35:20.97ID:iCMpStJ7ttp://ideone.com/VlPAfS
C++。メモ化のアイディアいっちばーんとか思ってたら、みんなやってたわ。
なのであんまり面白いコードにならなかったなぁ。
0226デフォルトの名無しさん
2015/05/29(金) 21:37:01.64ID:k/z27UFZ0227デフォルトの名無しさん
2015/05/29(金) 21:43:56.07ID:gldsOPm0http://ideone.com/4IUbLw Haskell
http://ideone.com/YPaDxI C
0228デフォルトの名無しさん
2015/05/29(金) 21:52:45.50ID:iCMpStJ7ただの再起関数問題だけど、再起回数が多いので処理量が多い。
多重ループ組んでるような窮屈感がある。
0229デフォルトの名無しさん
2015/05/29(金) 22:16:08.95ID:k/z27UFZあーやっぱり再帰の問題は再帰の問題なのか。
なんかもっとまったく別のアプローチがあるのかと
0230デフォルトの名無しさん
2015/05/29(金) 22:18:00.47ID:iCMpStJ7まぁ、暇なら組んでみて。
0231デフォルトの名無しさん
2015/05/30(土) 02:28:10.40ID:xl0Q5N5Kであってる?
(JavaScriptで約1秒で計算)
0232デフォルトの名無しさん
2015/05/30(土) 02:55:07.25ID:XGN93yVi10000 6823
100000 68233
1000000 682328
10000000 6823278
100000000 68232781
0233デフォルトの名無しさん
2015/05/30(土) 07:03:27.91ID:oUtY+/A5H =: 3 : 0 M.
if. y < 1 do. 0 else. y - H H H y - 1 end.
)
H 2015
1375
0234デフォルトの名無しさん
2015/05/30(土) 14:44:43.48ID:xl0Q5N5K0235デフォルトの名無しさん
2015/05/30(土) 16:59:43.54ID:XGN93yVihttp://ideone.com/cklUZ0
0236デフォルトの名無しさん
2015/05/30(土) 18:17:14.61ID:xl0Q5N5Kよくできましたね
次は、奇数の完全数をひとつ見つけてみましょう
(完全数:自分自身を除く約数の総和が自分自身に一致
28=1+2+4+7+14など)
0237デフォルトの名無しさん
2015/05/30(土) 18:29:37.97ID:aOrY5qKq見つけたら名前が残るね‥
どこかで探索しているのかな?
0238デフォルトの名無しさん
2015/05/30(土) 18:33:31.27ID:MYQQ8lln紀元前より考察されている対象であるにもかかわらず、「偶数の完全数が無数に存在するか?」、「奇数の完全数は存在するか?」、「末尾が6か8以外の完全数は存在するか?」、という問題は未解決である。
奇数の完全数(その1)
http://www.geocities.jp/ikuro_kotaro/koramu/6099_m8.htm
奇数の完全数の最大素因子について
要本稿では,もし奇数の完全数が存在するならば,その最大素因子は 108 以上でなければならないことを示す.
そのためには計算機を用いるが,従来のアルゴリズムを改良することにより計算時間を大幅に短縮し,主結果を導くことが可能となった.
我々のアルゴリズムは,円分数の性質を利用している.
http://www.ma.noda.tus.ac.jp/u/tg/perfect/perfect-j.pdf
0239デフォルトの名無しさん
2015/05/30(土) 18:37:55.20ID:MYQQ8lln近畿大学の大野泰生さんと共同で、「奇数の完全数がもし存在したとすると、その最大素因子は 10^8 以上でなければならない」ということを示しました。これまでの記録は以下の通りです。
記録 発表年 著者
60 1944 Kanold [8]
104 1973 Hagis and McDaniel [5]
105 1975 Hagis and McDaniel [6]
3 x 10^5 1978 Condict [2]
5 x 10^5 1982 Brandstein [1]
10^6 1996 Hagis and Cohen [4]
10^7 2003 Jenkins [7]
10^8 2008 Goto and Ohno [3]
http://www.ma.noda.tus.ac.jp/u/tg/html/perfect-j.html
0240デフォルトの名無しさん
2015/05/30(土) 20:12:02.55ID:xl0Q5N5K適しているとは限らないのでこの辺で
JavaなどのGUIライブラリが用意されている言語で
マウスで打った点に関するボロノイ図を色分けで
表示するアプリ(単独起動可)の作成
単一言語・単一ファイルで記述をルールとする
余裕があれば、球面上バージョンとか、
トーラス上バージョンとか....
0241デフォルトの名無しさん
2015/05/30(土) 20:48:43.38ID:xl0Q5N5K変形に応じて点や領域もリアルタイムに移動できること
難しすぎかw
0242デフォルトの名無しさん
2015/05/30(土) 22:52:24.39ID:oUtY+/A5f =: 3 : 0
a =. 0$0
c =. 0
i =. 2
while. c < y do.
if. 0 p: i do.
if. i = |.&.": i do.
if. (+/ "."0 ": i) = +/ "."0 ; <@":"0 q: i do.
a =. a , i
c =. >: c
end.
end.
end.
i =. >: i
end.
a
)
10 10 $ f 100
4 22 121 202 454 535 636 666 1111 1881
3663 7227 7447 9229 10201 17271 22522 24142 28182 33633
38283 45054 45454 46664 47074 50305 51115 51315 54645 55055
55955 72627 81418 82628 83038 83938 90409 95359 96169 164461
173371 239932 256652 262262 294492 362263 373373 445544 454454 505505
515515 535535 545545 635536 704407 717717 832238 841148 864468 951159
956659 974479 983389 1076701 1094901 1199911 1395931 1442441 1493941 1575751
1593951 1659561 1680861 1722271 1749471 1771771 1845481 1846481 2009002 2025202
2058502 2176712 2194912 2221222 2279722 2289822 2356532 2408042 2434342 2466642
2491942 2563652 2581852 2594952 2599952 2614162 2738372 2792972 2850582 2851582
0243デフォルトの名無しさん
2015/05/30(土) 23:50:03.11ID:MYQQ8lln奇数完全数は未解決。
素因数が10^8以上の数に存在する可能性はある。
存在するなら計算機で解ける可能性はある。
0244デフォルトの名無しさん
2015/05/31(日) 18:41:56.98ID:jHkPthzbそうやっていつも自演してるから忘れんだろ無職
0245デフォルトの名無しさん
2015/05/31(日) 20:42:44.87ID:ywCtFlc+宿題スレからでてくんな。うっとおしい。
0246デフォルトの名無しさん
2015/06/01(月) 13:53:15.66ID:EiVVrKyZ| limit primes primeFactorsOf smithNumbers palindromicSmithNumbers |
limit := 3e6.
primes := Integer primesUpTo: limit.
primeFactorsOf := [:n |
| m factors |
m := n.
factors := Bag new.
[m > 1] whileTrue: [
m := m / (factors add: (primes detect: [:prime | m isDivisibleBy: prime]))].
factors].
smithNumbers := Generator on: [:g |
| digitSumOf |
digitSumOf := [:n | (n asString asArray collect: #digitValue) sum].
2 to: limit do: [:n |
(n isPrime not and: [
((primeFactorsOf value: n) valuesAndCounts associations
inject: 0
into: [:sum :kv | (digitSumOf value: kv key) * kv value + sum]
) = (digitSumOf value: n)]
) ifTrue: [g yield: n]].
self error: 'too small limit'].
palindromicSmithNumbers := Generator on: [:g |
| isPalindromic next |
isPalindromic := [:n | n asString reversed asInteger = n].
[(isPalindromic value: (next := smithNumbers next)) ifTrue: [g yield: next]] repeat].
palindromicSmithNumbers next: 100
0247デフォルトの名無しさん
2015/06/03(水) 16:31:29.46ID:/b2V8QjMpaizaのSランク問題を3時間で全問解け
0248デフォルトの名無しさん
2015/06/03(水) 17:10:55.64ID:xfgrg7Y4出題するってルールは本当に守られているのかね。
0249デフォルトの名無しさん
2015/06/03(水) 17:56:10.27ID:UsIXtbxm0250デフォルトの名無しさん
2015/06/03(水) 20:01:14.19ID:mcx3WV4g0251デフォルトの名無しさん
2015/06/03(水) 20:10:42.03ID:COS6vTt10252デフォルトの名無しさん
2015/06/03(水) 23:42:43.46ID:aOqGEwFh0253デフォルトの名無しさん
2015/06/04(木) 08:00:37.85ID:BptMwneT0254デフォルトの名無しさん
2015/06/04(木) 09:07:24.98ID:A81QgshT0255デフォルトの名無しさん
2015/06/06(土) 08:43:51.78ID:320L9c16例
(0,0),(4,0),(4,3) -> 6
(-10,-10),(1,-10),(-2,3) -> 71.5
(0,0),(1,1),(2,2) -> 0
0256デフォルトの名無しさん
2015/06/06(土) 10:45:55.83ID:TEHNGSNb| triangleAreaFrom |
triangleAreaFrom := [:p1 :p2 :p3 |
(p1 dist: p2) * (p3 dist: (p3 nearestPointAlongLineFrom: p1 to: p2)) / 2
].
triangleAreaFrom value: 0@0 value: 4@0 value: 4@3. "=> 6 "
triangleAreaFrom value: -10@ -10 value: 1@ -10 value: -2@3. "=> (143/2) "
triangleAreaFrom value: 0@0 value: 1@1 value: 2@2. "=> 0.0 "
0257デフォルトの名無しさん
2015/06/06(土) 11:40:19.87ID:M49TyJvhほんと屑
0258デフォルトの名無しさん
2015/06/06(土) 12:09:48.16ID:2HKNrNNp何でも自演にすれば精神安泰なんて、やっすい精神だな。
0259デフォルトの名無しさん
2015/06/06(土) 12:19:20.96ID:KMNvqcU5最近あちこちに書いてる奴だから、触らない方が良い。
0260デフォルトの名無しさん
2015/06/06(土) 12:40:30.58ID:ghnGBhwh精神病の話題が出てあわてたか?
おまえな
なにしろ安易な自演認定は精神病の傍証そのもの
0261デフォルトの名無しさん
2015/06/06(土) 12:53:41.67ID:M49TyJvhお前のファビョりぐあいを如実に表してるなおい
0262デフォルトの名無しさん
2015/06/06(土) 13:07:23.00ID:ghnGBhwh俺を誰と思った?精神病君。
これらが、おまえだ!と言うレス番号のリストを書き込んでみ?
俺は>>260だからな
旧イモバ3GだからIDは頻繁に勝手に変わる。おまえ、それさえ知らんし、教えられても、それ無視して故意に変えたんだとしか思えないだろ?精神病だもなあ
ま、俺が書いた自演リスト出してみろ
0263山下雄介 ◆1Bax/hBUwKIJ
2015/06/06(土) 13:29:54.74ID:jF9pW3bD0264デフォルトの名無しさん
2015/06/06(土) 13:38:52.06ID:IVsptkgW0265デフォルトの名無しさん
2015/06/06(土) 13:45:34.90ID:TEHNGSNb念のため >>256 だけど、>>255 は別の人。
Smalltalkでも特にSqueak/PharoでAPIが充実してる類なので
さくっと書き下ろしただけ。宿題スレとやらもどこか知らないので
仮にその自演の人がSmalltalk使いでも、俺ではない。
0266デフォルトの名無しさん
2015/06/06(土) 20:26:22.54ID:PdKk/nzRこのスレのSmalltalkの中の人はまともな人だよ。
0267デフォルトの名無しさん
2015/06/06(土) 20:32:15.29ID:IVsptkgWチンコグイーン!!
0268デフォルトの名無しさん
2015/06/06(土) 23:13:35.73ID:TEHNGSNb| fn |
fn := [:points |
| max |
max := 0 -> {0@0. 0@0}.
points combinations: 2 atATimeDo: [:pair |
| middlePt onlinePt count |
middlePt := pair sum / 2.
onlinePt := pair first rotateBy: #left centerAt: middlePt.
count := points count: [:pt |
| nearestPt |
nearestPt := pt nearestPointAlongLineFrom: middlePt to: onlinePt.
nearestPt ~= pt and: [points includes: (pt rotateBy: #pi centerAt: nearestPt)]].
max := max max: count -> {middlePt. onlinePt}].
max key
].
fn value: {0@1. 0@2. 0@3. 1@0. 2@0. 3@0} "=> 6 "
0269デフォルトの名無しさん
2015/06/07(日) 01:24:23.17ID:hr3tQ2QJ0270デフォルトの名無しさん
2015/06/07(日) 05:46:14.21ID:F4jsoQ5+f := method(p1, p2, p3,
((p1 at(0) - p3 at(0)) * (p2 at(1) - p3 at(1)) -
(p2 at(0) - p3 at(0)) * (p1 at(1) - p3 at(1))) abs / 2
)
Io> f(list(0,0),list(4,0),list(4,3))
==> 6
Io> f(list(-10,-10),list(1,-10),list(-2,3))
==> 71.5
Io> f(list(0,0),list(1,1),list(2,2))
==> 0
0271デフォルトの名無しさん
2015/06/07(日) 08:39:10.87ID:scvCZOmW| triangleAreaFrom |
triangleAreaFrom := [:p1 :p2 :p3 | (p2-p1 crossProduct: p3-p1) abs / 2].
triangleAreaFrom value: 0@0 value: 4@0 value: 4@3. "=> 6 "
triangleAreaFrom value: -10@ -10 value: 1@ -10 value: -2@3. "=> (143/2) "
triangleAreaFrom value: 0@0 value: 1@1 value: 2@2. "=> 0.0 "
0272デフォルトの名無しさん
2015/06/07(日) 10:24:28.32ID:F4jsoQ5+f =: 3 : ' -: +/ 2(-/ .*)\ (,{.)y'
f 0 0 , 4 0 ,: 4 3
6
f _10 _10 , 1 _10 ,: _2 3
71.5
f 0 0 ,1 1 ,: 2 2
0
0273デフォルトの名無しさん
2015/06/07(日) 13:17:26.96ID:hr3tQ2QJ落書きなら自分のメモ帳でやれよ無職QZ
無駄レスするな
0274デフォルトの名無しさん
2015/06/07(日) 13:30:20.89ID:IR8285sC0275デフォルトの名無しさん
2015/06/07(日) 14:38:39.87ID:Aei0oKIv引きこもり底偏差値精神病、哀れな人生だな
0276デフォルトの名無しさん
2015/06/07(日) 20:06:02.11ID:sjmslyut知見の浅さがよくかもし出された素晴らしいレスだな。
0277デフォルトの名無しさん
2015/06/07(日) 22:51:36.86ID:hr3tQ2QJ自慢のコードをけなされて発狂か?
事実だからしかたないね
0278デフォルトの名無しさん
2015/06/07(日) 23:00:53.39ID:B4A1i88eID化に抵抗していた奴だろう。
0279デフォルトの名無しさん
2015/06/07(日) 23:14:55.22ID:aEGjSSvQ俺はID化に反対していたが、その理由はIDの存在こそがかえってスレッドと無関係な
「荒れ」を助長するから。
今実際そうなってるな。
しかし、そういう統合失調症みたいな話をよく恥ずかしげもなく書けるな。
言っちゃわるいけどこれが2ch脳か。
0280デフォルトの名無しさん
2015/06/07(日) 23:53:07.90ID:hr3tQ2QJかえって単発でコメントして自演だと疑われなくなるからな
0281デフォルトの名無しさん
2015/06/08(月) 00:14:16.95ID:ZCyLBFNO宿題スレに帰れよ。
0282デフォルトの名無しさん
2015/06/08(月) 00:21:43.71ID:BYDNcOl5糞コード垂れ流して年月が経つ方が深刻
0283デフォルトの名無しさん
2015/06/08(月) 00:26:18.83ID:ZCyLBFNO0284デフォルトの名無しさん
2015/06/08(月) 02:01:06.69ID:vgqsPLS1> menseki <- function( a, b, c ){
+ L <- sqrt( c( sum( ( a - b )^2 ), sum( ( b - c )^2 ), sum( ( c - a )^2 ) ) )
+ s <- sum( L ) / 2
+ T <- sqrt( prod( s - c( 0, L ) ) )
+ return( T )
+ }
> menseki( c(0,0), c(4,0), c(4,3) )
[1] 6
> menseki( c(-10,-10), c(1,-10), c(-2,3) )
[1] 71.5
> menseki( c(0,0), c(1,1), c(2,2) )
[1] 0
0285デフォルトの名無しさん
2015/06/08(月) 02:21:30.36ID:BYDNcOl50286デフォルトの名無しさん
2015/06/08(月) 02:27:57.99ID:zYY+ADpM0287デフォルトの名無しさん
2015/06/08(月) 08:38:12.69ID:2liztMX70288デフォルトの名無しさん
2015/06/09(火) 14:23:55.60ID:IUtGJvNPlet area (a, b) (c, d) (e, f) =
let a, b, c, d = a - e, b - f, c - e, d - f
abs (float (a * d - b * c)) / 2.
area (0,0) (4,0) (4,3) // 6.0
area (-10,-10) (1,-10) (-2,3) // 71.5
area (0,0) (1,1) (2,2) // 0.0
0289デフォルトの名無しさん
2015/06/09(火) 16:13:13.02ID:39J/emkYNGにするよりQZの発狂ぶりを見物してる方が面白いからさ
0290片山博文MZ ◆T6xkBnTXz7B0
2015/06/10(水) 23:35:38.85ID:ifXizSNQユーザーとコンピューターの間で
「(名詞)は、(形容詞)。」
「(形容詞)は、(名詞)。」
を繰り返す。先行はユーザー。ユーザーの返しが空(から)であれば、ユーザーの負け。
コンピューターがお返しできなければコンピューターの負け。
コンピューターの知識は前もってテキストファイルに格納しておく。
ユーザーのお返しはテキストファイルに記録して活用する。
0291片山博文MZ ◆T6xkBnTXz7B0
2015/06/10(水) 23:52:43.84ID:ifXizSNQあかいは、ほのお。
ほのおは、あつい。
あついは、ねっとう。
ねっとうは、こわい。
こわいは、ゆうれい。
ゆうれいは、ばける。
ばけるは、たぬき。
0292デフォルトの名無しさん
2015/06/10(水) 23:55:24.57ID:qPaXw8OK0293片山博文MZ ◆T6xkBnTXz7B0
2015/06/11(木) 00:06:59.26ID:zLNW2Jkb☆ 同じ単語は二度と使えない。
>>292
ない
0294デフォルトの名無しさん
2015/06/11(木) 00:11:37.11ID:xDKpfzbh0295デフォルトの名無しさん
2015/06/11(木) 00:22:40.68ID:hFqXak+Y自演の布石か?
0296デフォルトの名無しさん
2015/06/11(木) 00:50:33.08ID:Yw4ulbNM0297デフォルトの名無しさん
2015/06/11(木) 07:35:17.55ID:ddgaxHOq辞書すら用意してない == 自分は組んでない(組めない)
わけだから、このお題はスルーだな
0298片山博文MZ ◆T6xkBnTXz7B0
2015/06/11(木) 07:40:51.28ID:zLNW2Jkbインターネットにつながっていればいいのに。。。
0299デフォルトの名無しさん
2015/06/12(金) 22:26:58.97ID:eWJlMPNbここの作り方が問題っていうことですか?
0300デフォルトの名無しさん
2015/06/13(土) 07:24:27.03ID:Eq+WANys0301片山博文MZ ◆T6xkBnTXz7B0
2015/06/16(火) 14:30:41.22ID:Xu7A0Hiehttps://github.com/katahiromz/make_switch
https://github.com/katahiromz/MakeSwitch
0302デフォルトの名無しさん
2015/06/16(火) 16:21:12.51ID:6MdaxgSRこれが>>290の解なの?まずそれを出せよ。QZなの?
0303デフォルトの名無しさん
2015/06/16(火) 16:27:47.90ID:Yo/uiXhs俺も書き込みてないけど
0304デフォルトの名無しさん
2015/06/20(土) 10:25:11.91ID:ZFb7OxHV[input] 1
[output]
Hello,
world!
[input] 3
[output]
Hello,
__Hello,
____Hello,
____world!
__world!
world!
0305デフォルトの名無しさん
2015/06/20(土) 12:55:33.69ID:fq3+jKQodef odai(input):
def func(max_num, cur_num):
return '_' * (cur_num - 1) + 'Hello,\n' + func(max_num, cur_num + 1) + '_' * (cur_num - 1) + 'world!\n' if max_num >= cur_num else ''
return func(input, 1)
print odai(1)
print odai(3)
print odai(10)
●実行結果
https://ideone.com/qSk50s
0306305
2015/06/20(土) 12:57:37.15ID:fq3+jKQodef odai(input):
def func(max_num, cur_num):
return '_' * (cur_num - 1) + 'Hello,\n' + func(max_num, cur_num + 1) + '_' * (cur_num - 1) + 'world!\n' if max_num >= cur_num else ''
return func(input, 1)
0307デフォルトの名無しさん
2015/06/20(土) 13:13:21.50ID:dwzMpSBC| fn |
fn := [:n |
| rec |
rec := nil.
rec := [:m |
m < 1 ifTrue: [#()] ifFalse: [
#('Hello,'), ((rec value: m-1) collect: [:x | '__', x]), #('world!')]].
(rec value: n) asStringWithCr
].
fn value: 3
0308デフォルトの名無しさん
2015/06/20(土) 13:43:48.02ID:AzG5f3bm if n > 0
f(n-1,["Hello,",*a.map{|i|" "+i},"world!"])
else
a
end
end
puts f(3)
0309デフォルトの名無しさん
2015/06/20(土) 13:44:54.02ID:AzG5f3bm正しくインデント表示するのってどうすればいいの
def f(n,a=[])
if n>0
f(n-1,["Hello,",*a.map{|i|" "+i},"world!"])
else
a
end
end
puts f(3)
0310デフォルトの名無しさん
2015/06/20(土) 13:51:22.87ID:xvoMQVpa0311デフォルトの名無しさん
2015/06/20(土) 14:42:57.47ID:17g1JDvp最近直書きの流れ多いな
0312デフォルトの名無しさん
2015/06/20(土) 15:14:36.03ID:2GjEDXn2長さn (n>5)の文字列sについて、そのMD5文字列の先頭n文字がsと同一であるようなsを求めてください。
% printf 83d5 | /sbin/md5 | cut -c1-4
83d5
((lambda (s) (substring (md5 s) 0 (length s))) "619d0")
"619d0"
0313デフォルトの名無しさん
2015/06/20(土) 15:40:16.34ID:2GjEDXn2(require 'cl-lib)
(defun hw (i)
(cl-flet ((aaa (i)
(append
(cl-loop for j from 1 to i collect (concat (make-string (* (1- j) 2) ?_) "Hello,"))
(cl-loop for j from i downto 1 collect (concat (make-string (* (1- j) 2) ?_) "world!")))))
(mapcar (lambda (s) (princ s) (terpri)) (aaa i))))
hw
(hw 1)
Hello,
world!
(t t)
(hw 3)
Hello,
__Hello,
____Hello,
____world!
__world!
world!
(t t t t t t)
0314デフォルトの名無しさん
2015/06/20(土) 16:34:39.69ID:FAuvNGny大文字ならn=6で4個見つかったが時間掛かるわー
270CF0
29813D
B910B8
C924C3
大文字n=7、小文字n=6,n=7だと見つからん
0315デフォルトの名無しさん
2015/06/21(日) 00:47:54.56ID:Z784gdbwttp://ideone.com/0Fy72k
C++。ひっさしぶりにコード書いたわ。
0316デフォルトの名無しさん
2015/06/21(日) 03:32:35.85ID:Z784gdbwhttps://ja.wikipedia.org/wiki/MD5
MD5を自作しようと思ってウィキペディアのコードパクってみたんだがどうにも数字が合わない。
何が間違ってるんだろうか・・・。Orz
0317デフォルトの名無しさん
2015/06/21(日) 04:40:11.95ID:sM1nkpyG真 d41d8cd98f00b204e9800998ecf8427e
偽 d98c1dd44b2008f980980e97e42f8ec
↓ 32bitで分ける
d98c1dd4 (0)4b2008f 980980e9 7e42f8ec
↓ エンディアン変換
d41d8cd9 8f00b204 e9800998 ecf8427e
出力のエンディアン?
0318デフォルトの名無しさん
2015/06/21(日) 04:49:19.98ID:Z784gdbwレポートありがとう。
あれ?ウィキペディアはリトル前提じゃなかったんかいな。
門外漢にはつらい仕打ちだ。
とにかく、バグがわかってよかったよ。
ありがとう。
0319デフォルトの名無しさん
2015/06/21(日) 05:20:33.53ID:7H6WuTHmfunction nest_hello(n, s)
if n > 0 then
print(s .. "Hello,")
nest_hello(n - 1, s .. "__")
print(s .. "world!")
end
end
nest_hello(1,"")
nest_hello(3,"")
0320デフォルトの名無しさん
2015/06/21(日) 09:23:06.70ID:ZiaZ2OM3最近、PC触ってない。ましてやプログラムなんかしてない。
じゃ、なにやってるか
(ΦωΦ)フフフ…
沖縄の三線だ。某エイサー団体の三味戦担当になった。
若い娘がぁぁ
目の前で踊るぅぅ!
Σ(゚∀゚ノ)ノキャー
おまえらはカチャカチャしてろ
俺は踊る女体眺めながら三線弾いてるからな
わはははははは
0321デフォルトの名無しさん
2015/06/21(日) 09:34:23.81ID:U6MEl5GCまあ女体を見ることがメインなら関係ないけど
0322デフォルトの名無しさん
2015/06/21(日) 11:06:58.93ID:ZiaZ2OM3(ΦωΦ)フフフ…
よし、教えてやる
オバアとかオジイは沖縄でも三線のことを今でも三味線という。戦前までは三味線と言っていたようだ。
(なお、内地では蛇革を使うので蛇味線という呼称が流布しているが沖縄人はそういう言いはしない)。
有名な三線店の仲尾次三味線店は古い呼称が残っている例だな。
戦後、日本の三味線と区別するためだろうか三線(さんしん)という呼称が普及したようだ。
なお、日本の三味は三線を原型として独自に発達し、世界的にも稀な「さわり」という共鳴機能が在るのが特徴だ。(俺は本職というとなんだが本来は太ざおの津軽三味線使いだ)
というわけで、聞きかじりの知識で断定するのはやめろ。
バグリーアルゴリズムを考えてしむうことにも繋がるぞ。
何事も確認が大切だ
きちっと確認
チンコおったちー
鉄兜装着!
敵開脚濡れ濡れ
よおーし
突撃!
アンアンアン
0323デフォルトの名無しさん
2015/06/21(日) 12:28:58.85ID:8BXlXG8ihttps://ideone.com/mwFzvf
編集中はインデント綺麗にそろってるのに
なぜか実行結果画面だとインデント狂いまくってしまう・・・
0324デフォルトの名無しさん
2015/06/22(月) 09:31:06.46ID:r4mYEAjg| md5 hexChars ans n |
md5 := MD5 new.
hexChars := ($0 to: $9), ($a to: $f).
ans := Set new.
n := 6.
hexChars asDigitsToPower: n do: [ :chars |
| str lower upper |
str := chars as: String.
lower := (md5 hashMessage: str) hex first: n.
lower = str ifTrue: [ ans add: str ].
upper := (md5 hashMessage: str asUppercase) hex first: n.
upper = str ifTrue: [ ans add: str asUppercase ]].
^ ans
"=> a Set('270CF0' 'B910B8' '29813D' 'C924C3') "
0325デフォルトの名無しさん
2015/06/22(月) 19:51:10.95ID:mhAsnNtIn=6でcase insensitiveだと7つありました
"270CF0" "Fdbef1" "C924C3" "aF3137" "B910B8" "0DcCeB" "29813D"
sensitiveだと >>314 の言うとおり n=6,7では見付からず
n=8だと"f2714b55"を発見 他にもあるかもしれないけどギブ
C++ 全探査 openssl依存 ※ 終了を待ってると その前に太陽の寿命が尽きる
http://ideone.com/XavxyF
0326%20
2015/06/23(火) 20:10:45.25ID:AmyrZbfN1から100の数字を改行区切りで表示しろ
ショートコーディングでやれ
エソテリックランゲージの使用は歓迎
出力例:
1
2
3
(略)
98
99
100
0327デフォルトの名無しさん
2015/06/23(火) 20:31:29.16ID:HEGeqkRQ1
12
123
1234
...
12345678910
1234567891011
....
12345678910...99
の中から素数になるものを列挙
(今のところ出題者は解答を得ていない)
0328デフォルトの名無しさん
2015/06/23(火) 20:41:48.25ID:T+dh7ruf0329デフォルトの名無しさん
2015/06/23(火) 21:11:50.17ID:X5qt4JaOhttp://ideone.com/6kzXxJ
全て合成数
0330デフォルトの名無しさん
2015/06/23(火) 21:14:31.23ID:T+dh7rufhttp://ideone.com/p6eWKB
ギブアップ。MD5が動かない。C++。
エンディアン直したんだけど、それでも動かない。
わけわかめ。
どうして行政の扱うデータ構造ってビッグエンディアンなんだろう・・・。
0331デフォルトの名無しさん
2015/06/23(火) 21:16:41.84ID:LEZiNEmr>>326
list(map(lambda x: print(x), range(1,101)))
>>327
http://ideone.com/BXiPq2
解なし……でいいのか
0332デフォルトの名無しさん
2015/06/23(火) 21:38:50.04ID:8yT8EnjL(1 to: 100) asStringWithCr
0333デフォルトの名無しさん
2015/06/23(火) 21:47:22.48ID:8yT8EnjL(1 to: 99) collect: [:x | (((1 to: x) gather: #asString) as: String) asInteger] thenSelect: #isPrime
"=> #() "
0334デフォルトの名無しさん
2015/06/23(火) 21:59:40.25ID:X5qt4JaO45行目
http://ideone.com/bDpAJK
0335デフォルトの名無しさん
2015/06/23(火) 23:22:18.14ID:T+dh7rufエクセレント。よくデバッグできたねぇ。
俺は門外漢だからさっぱりだよ。こんな些細なこと気づくカーっての。
デバッグありがとう。飯を1食おごりたいくらいだよ。
まぁ、貧乏なのでそれなりだけどね。へへ。
0336デフォルトの名無しさん
2015/06/24(水) 00:35:32.34ID:ttDsmfvwhttp://ideone.com/LrRUso
C++。一応コードは書いたものの遅い・・・。
イデオンタイムに間に合わなかった。
基数60程度の数列だからシングルスレッドだと骨が折れるな。
スペシャルサンクス
>>317
>>334
0337デフォルトの名無しさん
2015/06/24(水) 03:33:29.41ID:OPVPhgqwmain(int n) { printf("%d\n", n); (n >= 100 ? exit(0) : main(n+1)); }
0338デフォルトの名無しさん
2015/06/24(水) 03:50:55.13ID:OPVPhgqwexitいらなかった
main(int n) { printf("%d\n", n); (n >= 100 ? : main(n+1)); }
0339デフォルトの名無しさん
2015/06/24(水) 08:37:12.76ID:Oti1R8jg>>326 Python3
list(map(print,range(1,101)))
0340デフォルトの名無しさん
2015/06/24(水) 12:22:29.04ID:LdxuxQwgqが3以上の素数 ⇒ pow(2, q-1, q) == 1
pow(2, q-1, q) != 1 ⇒ qは3以上の素数ではない
解なしの問題だったからこそというかこの問題のとりあえず調査用の条件としては正しいのだが、
さすがに is_prime という関数名はいかがなものかと思う。
Java の isProbablePrime みたいな名前にしないとほとんどの人が盲信すると思う。
0341デフォルトの名無しさん
2015/06/24(水) 14:22:57.21ID:RTg8LFF8for(;$i++<100;)echo"$i\n";
0343デフォルトの名無しさん
2015/06/24(水) 21:52:01.60ID:ZkZ/FeaCRuby
100.times{|i|puts i+1}
C
main(n){for(;n-101;)printf("%d\n",n++);}
0344デフォルトの名無しさん
2015/06/24(水) 22:04:24.02ID:ZkZ/FeaCRubyはputsなんか使わなくてもpで良かったわ
0345デフォルトの名無しさん
2015/06/24(水) 22:32:15.15ID:NhfXS6nD無理矢理1行に詰め込んだ・・・
using System;using System.Linq;public class Test{public static void Main(){Enumerable.Range(1, 100).Select(i=>{Console.WriteLine(i);return i;}).ToList();}}
https://ideone.com/ObFMFM
0346デフォルトの名無しさん
2015/06/24(水) 22:44:24.83ID:ZkZ/FeaCC
main(n){for(;printf("%d\n",n++)-4;);}
0347デフォルトの名無しさん
2015/06/24(水) 23:05:39.50ID:NaJhfL5/Powershell
1..100
0348デフォルトの名無しさん
2015/06/27(土) 06:50:54.41ID:vdBMRB8Z0349デフォルトの名無しさん
2015/06/27(土) 07:25:38.87ID:VQZUdh4Hマルチバイト考慮するの?
0350デフォルトの名無しさん
2015/06/27(土) 11:43:42.26ID:vdBMRB8Z不明な点はお好きなように
0351デフォルトの名無しさん
2015/06/28(日) 02:00:33.36ID:hUz0qxV5https://ideone.com/f1KkjZ
アセンブラ勉強がてら
表示が001,002,003・・・ですが、ご愛嬌ということでw
0352デフォルトの名無しさん
2015/06/28(日) 03:32:11.69ID:hUz0qxV5「ゆかしく覚えん事は、学び訊くとも、その趣を知りなば、おぼつかなからずして止むべし」
と、言うけど、今日の俺は「IA-32についてゆかしく覚えて、その趣を知って、ちょっと熱くなってしまって
昔はZ80のアセンブラとかゴリゴリやってたんやでーってことで夢中になってしまった
ほんのちょっとIA-86について理解した気がした・・・これからも、もうちょっと勉強したいですwww
本日の成果
http://peace.2ch.net/test/read.cgi/tech/1429195275/351
https://ideone.com/f1KkjZ
ごく初歩的ながら、1〜100まで表示するサンプル
あ、ただ、個人的に熱くなれること以外は徒然草の151段はもっともだなぁと思います
0353デフォルトの名無しさん
2015/06/28(日) 03:34:47.86ID:hUz0qxV5いや、これは恥ずかしい・・・すいません・・・orz
0354デフォルトの名無しさん
2015/06/28(日) 11:04:20.73ID:4ZXQ7tgA(require 'cl-lib)
cl-lib
(defun f (s a b)
(cl-rotatef (aref s a) (aref s b))
s)
f
(f "abcde" 0 4)
"ebcda"
(f "あいうえお" 1 3)
"あえういお"
0355デフォルトの名無しさん
2015/06/28(日) 12:29:25.97ID:7bNI9dxWmap(println,1:100)
0356デフォルトの名無しさん
2015/06/28(日) 17:31:28.35ID:7bNI9dxWfunction f(s, a, b)
i = [1 : length(s)]
i[[a, b]] = [b, a]
s[i]
end
0357デフォルトの名無しさん
2015/06/28(日) 19:07:14.12ID:C6KmeInbなにそれすごい
0358デフォルトの名無しさん
2015/06/28(日) 23:55:49.92ID:m2Cqz/bsfunction swap([char[]]$s, [int]$a, [int]$b) {
$s[$a], $s[$b] = $s[$b], $s[$a]
$s -join ""
}
0359デフォルトの名無しさん
2015/06/29(月) 00:30:05.34ID:viamj+8Khttps://ideone.com/X1o5Qm
制限事項多々あり、ソースコメント参照
アセンブラの勉強が楽しくて、仮想PCにDebian(32bit)インストールして開発環境整えたw
0360デフォルトの名無しさん
2015/06/29(月) 09:55:24.58ID:QwxAmYqt'あいうえお' swap: 1 with: 4 "=> 'えいうあお' "
0361デフォルトの名無しさん
2015/06/30(火) 20:51:35.69ID:HIOlDgg/0362デフォルトの名無しさん
2015/07/05(日) 11:16:14.41ID:BiXYXi7rhttps://ideone.com/C9LpKp
アセンブラ楽しいなー
0363デフォルトの名無しさん
2015/07/06(月) 22:39:47.66ID:rsUbzHSgあそこ代謝が早くてすぐに落ちちゃったけど
0364デフォルトの名無しさん
2015/07/07(火) 18:08:07.17ID:xwpye55Wふたば→4chan
0365デフォルトの名無しさん
2015/07/12(日) 22:32:32.67ID:Ga0HIkJkhttps://ideone.com/jiZNPh
ideoneのアセンブラはlibcの関数とか呼び出せないみたいなのでちょっと辛い・・・
0366デフォルトの名無しさん
2015/07/12(日) 22:38:11.62ID:BKAToTl0普段アセンブラで何か書いているんですか?よくこんなん書けますね。兎に角物凄いですね。
0367デフォルトの名無しさん
2015/07/12(日) 22:58:54.23ID:Ga0HIkJkレスありがとう
厨房の頃MSXでZ80のアセンブラとかいじって遊んでたんですが、
最近ideoneでもアセンブラ使えるのを知って当時の思い出に浸りつつIA-32の勉強してます
ちなみに、今のところ、このスレ向けだけにアセンブラやってるかなw
0368デフォルトの名無しさん
2015/07/12(日) 23:07:36.37ID:1C3rPR+tアセンブラでオブジェクト指向が出来るって本当だろうか?
0369デフォルトの名無しさん
2015/07/12(日) 23:15:10.87ID:bEfSh98P0370デフォルトの名無しさん
2015/07/12(日) 23:20:26.49ID:Ga0HIkJkJVM向けのJasminってのが、一番それっぽいんじゃない
所詮仮想マシン向けだし、全然勉強する気は湧かないけど・・・でもネーミングセンスはなかなかだと思うw
0371デフォルトの名無しさん
2015/07/13(月) 00:02:05.69ID:bZKNDXZmC++は関数とデータ構造でできてるから、
積み重ねればできなくないんじゃない?
0372デフォルトの名無しさん
2015/07/14(火) 17:02:24.45ID:UtKLctm2文字列で
"文字列ダブルクオート"
'文字列シングルクオート'
両方使える言語有りますよね。JSなど。
var str1="あ'い'う";
var str2="あ\"い\"う";
の様に入れ子になると益々ややこしい。
与えられたプログラムの行を解析して文字列と文字列以外の部分でsplitしたいんですが、どう言うアルゴリズムとか手法が有りますか?複数行に別れている場合はややこしいので考えないとして。
先頭から一文字ずつ調べて行く地道な方式しか思い付きません。頭のいい人教えて。
0373デフォルトの名無しさん
2015/07/14(火) 17:08:45.31ID:iC5YD+mU0374デフォルトの名無しさん
2015/07/14(火) 17:10:04.41ID:UtKLctm2そうです
0375デフォルトの名無しさん
2015/07/14(火) 17:11:56.35ID:iC5YD+mUただし直前に\がある場合はエスケープだから無視したらいいだろ。
0376デフォルトの名無しさん
2015/07/14(火) 17:13:20.31ID:UtKLctm2先頭から調べて行く方式ですか?
0377片山博文MZ ◆T6xkBnTXz7B0
2015/07/14(火) 17:15:11.23ID:2KYZ+h7+0378デフォルトの名無しさん
2015/07/14(火) 17:17:36.20ID:UtKLctm2入れ子が何十にもなっている場合にも
マッチ出来る表現って原理的に書けるんでしょうか?
0379デフォルトの名無しさん
2015/07/14(火) 17:27:03.42ID:iC5YD+mU0380デフォルトの名無しさん
2015/07/14(火) 17:38:12.43ID:xXRQgfkh\"(\\\"|[^\"])*\"|\'(\\\'|[^\'])*\'
コメントアウトされた ' " を含む場合はややこしい
0381デフォルトの名無しさん
2015/07/14(火) 17:42:39.92ID:2UCISld7エスケープは、終りかと思ったけど違いました。的な感じで、
終りを判定して一個前に\がなかったらほんとに終わり。
そのうえで文字列がそれ以上続いてると判断できるなら記述エラー。
かねぇ・・・。
0382デフォルトの名無しさん
2015/07/14(火) 17:44:05.92ID:2UCISld70383デフォルトの名無しさん
2015/07/14(火) 19:40:57.40ID:K07m6CLM後は状態遷移図をそのままゴリゴリ機械的にプログラムに落とし込めば
ワンパスで処理できると思う
0384デフォルトの名無しさん
2015/07/14(火) 21:30:38.01ID:K07m6CLM状態遷移図書いてプログラムに落とし込んでみた
https://ideone.com/PsB6CT
どんな図を書いたかは想像してくれ
0385デフォルトの名無しさん
2015/07/14(火) 21:55:58.14ID:mKmRjHXt>>384さんのテストケース借りました
https://ideone.com/UdVopC
0386デフォルトの名無しさん
2015/07/14(火) 22:01:39.78ID:2UCISld70387デフォルトの名無しさん
2015/07/14(火) 23:09:04.52ID:UtKLctm2有難うございます。こんなのをささっと作れるって凄いわ。遷移図って言うのを俺も勉強しようかな。windowsにpythonインストールして実行してしたらいい感じで分解出来ました。ただ文字化けかもしれませんが
"?"コメント"?"
って出ます。
>>385
pythonは全くの素人なのでc++に翻訳が大変だなあと思っていた所にタイムリーなcコード有難うございました。上手く実行できましたが入力の終了はctrl+zで良いんでしょうか?入力の終了方法が今ひとつよく分かりませんでした。
0388デフォルトの名無しさん
2015/07/14(火) 23:24:46.64ID:K07m6CLMもしかしたら、スクリプトファイルの先頭にこれをつけてやれば文字化けが直るかもしれん
from __future__ import unicode_literals
あと、状態遷移図以外のキーワードとしては、
有限オートマトンとかステートマシンとかもググってみるといいよ
0389デフォルトの名無しさん
2015/07/15(水) 00:09:17.64ID:dGdv/3vm150桁の素数を一つ求めよ
[5] その他の制限
C/C++を使用
0390デフォルトの名無しさん
2015/07/15(水) 00:11:52.92ID:lN86dIN60391デフォルトの名無しさん
2015/07/15(水) 00:13:49.69ID:hO4B+kkW0392デフォルトの名無しさん
2015/07/15(水) 00:29:27.09ID:1KPOhNZTUnix系ならCtrl-Dか
WindowsならCtrl-Z送ってみてください
0393デフォルトの名無しさん
2015/07/15(水) 00:46:28.19ID:lN86dIN6一応議題には上がってるんだけどなかなか通らん。
さっさと入ってほしい。
0394デフォルトの名無しさん
2015/07/15(水) 07:34:03.71ID:gZn+GrQT状態遷移図って言うのは情報処理の学校の授業で習うんですか?私は自己流なので情報遷移図って言うのを見たことも聞いた事も有りませんでした。
0395デフォルトの名無しさん
2015/07/15(水) 11:01:34.61ID:oGaBOeZt学部の2年生ぐらいかね。
専門学校では習わないんじゃない?
0396デフォルトの名無しさん
2015/07/15(水) 13:12:02.46ID:9g3Um3C51000000<b-a
この条件の時、aからbの範囲内に素数がいくつあるか出力せよ
0397デフォルトの名無しさん
2015/07/15(水) 13:15:17.34ID:V0AxV3aQ0398デフォルトの名無しさん
2015/07/15(水) 19:18:25.08ID:GCGNqYEM自分は大学の情報系学科で2〜3年の頃に習った
特にコンパイラ演習で、想定する簡易言語のコンパイラの製造、アセンブラコード出力して動作検証までやる授業があって
字句解析、構文解析のところで状態遷移やらオートマトンやら身に沁みて覚えられたよ
0399デフォルトの名無しさん
2015/07/16(木) 07:13:55.19ID:vXoT0ZWqXMLパーサーの章で状態遷移扱ってたよ
0400デフォルトの名無しさん
2015/07/16(木) 07:16:55.13ID:LOPRnG3x出来たのだろうか?
0401デフォルトの名無しさん
2015/07/16(木) 07:19:36.79ID:LOPRnG3x0402デフォルトの名無しさん
2015/07/16(木) 07:50:32.94ID:/b6luSAZ0403デフォルトの名無しさん
2015/07/16(木) 19:49:12.86ID:N2Vdqeqk0404デフォルトの名無しさん
2015/07/16(木) 20:12:03.80ID:UsfisL7Eサンキュウ。読んでみるよ。
0405351
2015/07/17(金) 23:09:51.95ID:DYsu0MP8http://ideone.com/eLpvFF
今後はこのスタイルでやっていこうと思っている
nasmとはお別れ・・・
0406デフォルトの名無しさん
2015/07/17(金) 23:29:14.83ID:eXqjhmrqこれくらいの規模ならギリ読めるわ。全く書けないけど。
BASICから入ったんで、ASMは全然読めん。
0407デフォルトの名無しさん
2015/07/17(金) 23:40:39.65ID:5cJUU+YIあとコンパイラオプションでアセンブラ出力できるから
他環境で動くかはしらないが誰でもコピペだったらできる。
0408デフォルトの名無しさん
2015/07/17(金) 23:45:51.58ID:DYsu0MP8埋め込む意図はideoneの純粋なアセンブラではlibcの関数とかが呼び出せないからかな
何か問題があるかい?
0409デフォルトの名無しさん
2015/07/17(金) 23:47:19.48ID:eXqjhmrqもっとあそぼうよ〜。
0410デフォルトの名無しさん
2015/07/18(土) 08:09:43.95ID:Xl228nsEDelphiは単体で使えたけどBCBは別売りのTASMが必要だったなー
0411デフォルトの名無しさん
2015/07/18(土) 13:57:22.58ID:t4bRQBmQチンポもグイーンで超絶早漏!!
速い!早すぎるぅ!!
0412デフォルトの名無しさん
2015/07/18(土) 17:46:54.90ID:47zg+pIqhttps://ideone.com/Hn0LhX
制約として、bは最大32ビットです・・・
Cのインラインアセンブラにしたし、ローカル変数をスタックフレーム上に確保して利用しようと頑張ったけど
すごい混乱するだけだったので、やっぱりグローバル変数を使うことにした・・・
0413デフォルトの名無しさん
2015/07/19(日) 17:34:33.47ID:hwKAr6jyhttps://ideone.com/1ypTIi
最初、そのままn - H(H(H(n-1)))計算してたら、アセンブラでも答え返ってこなかった・・・
他の人の回答を参考にさせていただいて、キャッシュ化したら早くなったw
0414デフォルトの名無しさん
2015/07/19(日) 17:55:31.85ID:70ugHhcpこれ非再帰化するにはどうすればいいんかな
0415デフォルトの名無しさん
2015/07/19(日) 18:16:18.33ID:hwKAr6jyうーむ・・・数学的なことはちょっとよく分からんw
キャッシュ化がある意味、疑似的な非再帰化なんじゃないかな・・・
0416デフォルトの名無しさん
2015/07/19(日) 20:15:29.71ID:+kGtCzuoアセンブラってどういう開発環境で作るんですか?
0417デフォルトの名無しさん
2015/07/19(日) 20:34:33.51ID:70ugHhcpそうじゃなくて非再帰化
http://d.hatena.ne.jp/sune2/20130129/1359429399
こんなやつ
0418デフォルトの名無しさん
2015/07/19(日) 20:53:25.98ID:70mn9nO9単純な展開なら、自分でスタック相当の配列を確保してループに展開すればいいかな。
GOTO使っていいならもうちょっと簡単になるけど、計算量はあんまり変わらん気がする。
0419デフォルトの名無しさん
2015/07/19(日) 21:16:10.34ID:hwKAr6jyいろいろとやり方はあると思うけど、
自分はVirtualBoxの仮想PCにDebian/GNU Linux(32bit)入れて、eclipse(CDT, gcc)でコーディングしてます
デバッグは今のところどんなツールがあるのかよく分からないのでgdb使ってシコシコやってますw
0420デフォルトの名無しさん
2015/07/19(日) 21:20:52.21ID:+kGtCzuo詳しい説明有難うございました。
皆さんどうしてそんなにアセンブラが好きなの?Cで書くほうが楽ちんじゃない?
0421デフォルトの名無しさん
2015/07/19(日) 21:46:38.17ID:oRpbGtoQ0422デフォルトの名無しさん
2015/07/19(日) 21:50:55.65ID:8Ya8eemU楽さを求めたらCですら選ばれないでしょう
0423デフォルトの名無しさん
2015/07/19(日) 21:53:41.20ID:hwKAr6jyまず、今のところこのスレでアセンブラやってるの俺だけかな
で、なぜ好きかというと、>>367読んでくれ
0424デフォルトの名無しさん
2015/07/19(日) 22:09:47.04ID:hwKAr6jyあと、>>422の言うとおり楽さを求める場合は今はPython使ってます
このスレでもたまにPythonの駄コードを上げてるよ
Cは学生の頃、授業で使ったけど(>>398とかで)、今となってはあんまり興味が・・・
0425デフォルトの名無しさん
2015/07/19(日) 23:42:42.88ID:hwKAr6jy※過去スレが見えない場合はs/net/sc/で・・・
https://ideone.com/Rb1WIf
0426デフォルトの名無しさん
2015/07/20(月) 14:05:47.16ID:GItXWMu9再帰を使わずに>>217をコーディングするお題と解釈
オブジェクト指向的なアプローチなので>>414の求めているものとは違いかもしれないが・・・
https://ideone.com/Ok3RWA
0427デフォルトの名無しさん
2015/07/20(月) 23:53:26.16ID:GItXWMu9※過去スレが見えない場合はs/net/sc/で・・・
https://ideone.com/SiwyzT
バッファを初期化するとか泥臭い部分はCでゴリゴリ書いてみた
あと、ローカルで動いてもideoneで動かなくてちょっとハマった
今までほったらかしだったけど、アセンブリテンプレートの破壊レジスタをちゃんと指定してやらないといかんらしい・・・
0428デフォルトの名無しさん
2015/07/20(月) 23:58:45.05ID:Mk1lR5Z8気が向いたらでいいんだけど、過去の問題はコメントに問題文入れてくれるとうれしい。
見れないから、思い出すの大変。
0429デフォルトの名無しさん
2015/07/21(火) 00:15:12.95ID:4cujWVLy過去スレ見れない場合は、URLの「net」の箇所を「sc」に書き換えてあげれば見れますよ
scのURLを書き込もうとすると、エラーになるので直接は書けないですが・・・
http://toro.2ch.net/test/read.cgi/tech/1411227287/28
28 :デフォルトの名無しさん:2014/09/22(月) 13:23:18.58 ID:nxPUfGJM.netw=横
h=縦
左上の角から右下に進む
地面に着いたら右上に進む
これの繰り返す
w, h = 10, 3
!---!---!-
-!-!-!-!-!
--!---!---
w, h = 11, 5
!-------!--
-!-----!-!-
--!---!---!
---!-!-----
----!------
0430デフォルトの名無しさん
2015/07/21(火) 00:17:13.31ID:t51wwC7q0431デフォルトの名無しさん
2015/07/21(火) 01:19:32.68ID:sP0nnS9v( ・ω・) <暑中見舞いにお茶どうぞ
〇={=}〇
|::::::::::\
、、、し 、、、(((.@)旦旦,,旦ww旦 <アッタカ~イ
0432デフォルトの名無しさん
2015/07/21(火) 02:24:56.56ID:t51wwC7q0433デフォルトの名無しさん
2015/07/21(火) 08:04:33.33ID:T77AKJFtフリーセルの解法探索プログラム(不能性判定も含む)
0434デフォルトの名無しさん
2015/07/21(火) 20:27:08.37ID:kfJfuAml留意点
・同一硬貨20枚を超える支払いは拒否される
・二千円札の扱いについてはご自由に
0435デフォルトの名無しさん
2015/07/21(火) 21:33:21.66ID:t51wwC7q過去になんかそんなん解いた覚えがあるんだが。
制限もっと緩かったけど。
アルゴリズム書いてないから解けないっていうのもあるけど。
0436デフォルトの名無しさん
2015/07/21(火) 21:36:14.35ID:t51wwC7q0437デフォルトの名無しさん
2015/07/21(火) 21:39:48.43ID:ykIrCRFz2015で作ったソリューションって2013じゃあ開けないだろ?
二台のpcでそれぞれ2013、2015を使っていると不便じゃあないか?
0438デフォルトの名無しさん
2015/07/21(火) 22:41:27.39ID:t51wwC7qスゲーいっぱい機能増えてて頭爆発しそう。ATLもMFCも最初から使える模様。
俺、アマチュアレベルだからね、これからやらなきゃならんことがたくさんある。
0439デフォルトの名無しさん
2015/07/21(火) 22:42:42.88ID:t51wwC7q0440デフォルトの名無しさん
2015/07/23(木) 23:21:58.40ID:tM+kqpz/デュードニーの覆面算
SEND 9567
+ MORE 1085
-------
MONEY 10652
「Googleの入社試験」より。
ただし、EとMは交換可能です
WWWDOT 777589
ーGOOGLE 18810(3)
--------
DOTCOM 58948(6)
0441デフォルトの名無しさん
2015/07/23(木) 23:34:40.86ID:QGOpYc9G計算するときはどこまで情報くれるの?
0442440
2015/07/24(金) 02:30:22.82ID:orlgr+Lf0443デフォルトの名無しさん
2015/07/24(金) 02:33:15.17ID:i7tlJ0x50444440
2015/07/24(金) 02:44:51.78ID:orlgr+Lf0445デフォルトの名無しさん
2015/07/24(金) 03:00:39.65ID:i7tlJ0x50446440
2015/07/24(金) 03:45:43.16ID:orlgr+Lf0447デフォルトの名無しさん
2015/07/24(金) 04:39:42.70ID:i7tlJ0x50448デフォルトの名無しさん
2015/07/24(金) 07:30:49.96ID:i7tlJ0x5http://ideone.com/7fzMbO
C++。一応解いたが誤答も入ってる気がする。大いにする。
VCのリリースで10秒ほどかかる。@N3700
これでググる入社だ!
辞書云々は勘違いしてた。
0449デフォルトの名無しさん
2015/07/24(金) 07:36:48.33ID:i7tlJ0x50450デフォルトの名無しさん
2015/07/24(金) 12:19:15.91ID:DXnt2k2Vふぅ・・・汚いし遅いけど書けた
http://ideone.com/yGZPxD
0451デフォルトの名無しさん
2015/07/24(金) 14:42:27.19ID:EjPkrmXr酷いコードが出来たぜ
http://ideone.com/Plrzsu
0452デフォルトの名無しさん
2015/07/24(金) 16:21:16.16ID:E+gh8pZiすげー速いな
こういうのC++で書けないかな
0453デフォルトの名無しさん
2015/07/24(金) 17:15:57.19ID:M5TjTU2l| int solveAlphametics |
int := [:array | array reversed polynomialEval: 10].
solveAlphametics := [:spec |
| check ans |
check := spec value: (ans := OrderedCollection new).
(0 to: 9) combinations: check numArgs atATimeDo: [:digits |
digits permutationsDo: [:param | check valueWithArguments: param]].
ans asArray].
solveAlphametics value: [:ans | [:S :E :N :D :M :O :R :Y |
| a b c |
(({S. M} noneSatisfy: #isZero) and: [
(a := int value: {S.E.N.D})
+ (b := int value: {M.O.R.E})
= (c := int value: {M.O.N.E.Y})]) ifTrue: [ans add: {a. b. c}]]].
"=> #(#(9567 1085 10652)) "
solveAlphametics value: [:ans | [:W :D :O :T :G :L :E :C :M |
| a b c |
(({W. G. D} noneSatisfy: #isZero) and: [
(a := int value: {W.W.W.D.O.T})
- (b := int value: {G.O.O.G.L.E})
= (c := int value: {D.O.T.C.O.M})]) ifTrue: [ans add: {a. b. c}]]].
"=> #(#(777589 188106 589483) #(777589 188103 589486)) "
0454デフォルトの名無しさん
2015/07/24(金) 18:23:05.71ID:cSQMFcxlJavaに勝てる気がしないけどProlog で
https://ideone.com/tEdvvX
0455デフォルトの名無しさん
2015/07/24(金) 19:23:23.71ID:i7tlJ0x5ポートする意外だとアイディアないな。
俺のはnext_parmitation使ってるからめちゃくちゃ遅い。o(N!)だし。
ぜひ改善してくれ。
0456デフォルトの名無しさん
2015/07/24(金) 23:56:32.13ID:VNZ6dmGohttp://ideone.com/UHMbDk
遅い
0457デフォルトの名無しさん
2015/07/25(土) 00:26:34.26ID:+Ve7mYSlWWWDOT
------------------
DOTCOMだけ、SWI-prologでつぎのように書いて実行してみました。
% google problem
selects([], Ys).
selects([X | Xs], Ys) :- select(X, Ys, Ys1), selects(Xs, Ys1).
check(C, D, E, G, L, M, O, T,W, WWWDOT, GOOGLE, DOTCOM) :-WWWDOT is 100000*W + 10000*W+ 1000*W+100*D+10*O +T,
GOOGLE is 100000 *G+10000*O+1000*O+100*G+10*L+E,DOTCOM is 100000*D+ 10000*O+ 1000*T + 100*C+10*O+M,
DOTCOM =:= WWWDOT- GOOGLE.
% パズルの解法
%solve_puz(Send, More, Money) :-
ans :-selects([C, D, E, G, L, M,O,T,W], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]),check(C, D, E, G, L, M,O,T,W, WWWDOT, GOOGLE, DOTCOM),
write(WWWDOT),nl,write('-'),write(GOOGLE),nl,write('---------'),nl,write(DOTCOM).
結果は、
1. ?- ans.
777589
-188103
--------------
589486
true
となりました。
0458デフォルトの名無しさん
2015/07/25(土) 02:34:01.78ID:tp+9eo6ihttps://ideone.com/Evaia7
足し算と引き算のみ
いろいろと改良の余地が非常に多そうなので、また修正すると思う
0459デフォルトの名無しさん
2015/07/25(土) 04:16:19.74ID:BtkcRlE5遅ればせながらC++
http://ideone.com/CNmQqa
0460デフォルトの名無しさん
2015/07/25(土) 05:05:00.74ID:309x+t0o正20面体の各面を、3色のうちのいずれかの色で塗っていくとき、
何通りの塗り方がありますか?
対称性のある数え上げ
「ポリアの数え上げ定理」
1/60(n^20) + 1/4(n^10) + 1/3(n^8) + 2/5(n^4)
n = 3 の時、58,130,055
0461デフォルトの名無しさん
2015/07/25(土) 06:44:16.49ID:wTwAcdhU0462デフォルトの名無しさん
2015/07/25(土) 06:53:11.73ID:BtkcRlE5チューンでまあまあ速くなった
http://ideone.com/9J5rml
0463デフォルトの名無しさん
2015/07/25(土) 07:03:02.80ID:DQEJp29thttp://ideone.com/FCJ3EH
C++でこういうコード書いてみたけど、メモリも処理能力も全然たりん。
っていうか、std::uniqueが仕事してない気がする。
ググるは遠い。
0464デフォルトの名無しさん
2015/07/25(土) 07:08:37.68ID:DQEJp29t忘れてた。
0465デフォルトの名無しさん
2015/07/25(土) 07:12:00.49ID:DQEJp29tバグフィックス。
0466デフォルトの名無しさん
2015/07/25(土) 07:33:55.16ID:DQEJp29t2時間半かかる。@N3700
投げるカー。Orz
0467460
2015/07/25(土) 08:18:12.24ID:309x+t0oこれは、「Googleの入社試験」という本に載っていた問題で、
コンピューターで数え上げるのが、
無理なら無理で、仕方ないです
たぶん入社試験では、
「ポリアの数え上げ定理」をPCで検索して、
この定理から、値を求めるのかな?
0468デフォルトの名無しさん
2015/07/25(土) 08:39:55.46ID:tp+9eo6iググって定理を見つけて、ちょっと計算すれば合格
ググらずにゴリゴリとプログラムを書き始めたら失格ってことかい・・・
0469デフォルトの名無しさん
2015/07/25(土) 08:49:25.08ID:YqNKFNZH0470デフォルトの名無しさん
2015/07/25(土) 08:51:06.09ID:DQEJp29t>>467
数学ダメなので、どのみち無理ですねぇ。
ググるは遠い。
0471460
2015/07/25(土) 09:22:46.58ID:309x+t0o「ポリアの数え上げ定理」
自体が正しいのかどうかも、わからない
まず平面の問題から、解いていかないと
n個の石が、円状に並んでいる時、
各石をm色で塗る方法は、何通りあるか?
ただし、回転して同じものは、1つと数える
0472デフォルトの名無しさん
2015/07/25(土) 09:49:31.03ID:wTwAcdhU0473460
2015/07/25(土) 10:31:05.18ID:309x+t0o>>460
が正解なんじゃないの?
でも証明するのは、かなり難しそう
0474デフォルトの名無しさん
2015/07/25(土) 11:13:10.67ID:wTwAcdhUナポリタンの定義使わな怒られてまうん?
0475デフォルトの名無しさん
2015/07/25(土) 12:14:09.08ID:tp+9eo6i>>http://peace.2ch.net/test/read.cgi/tech/1402622093/104 Python
https://ideone.com/5eA1gA
流れぶった切りでスマン
リアルタイムに探索状況を表示するお楽しみモード(ローカルコンソール専用)も付けてみた
0476デフォルトの名無しさん
2015/07/25(土) 15:15:53.32ID:gmV25Sr9シリコンバレーのプログラマの(昔の)就職試験より
以下の条件でリンクリストの循環の検出をコードで示してください
1. リストは書き込み禁止領域に格納されている
2. 使えるメモリは限られていて、例えばリストの各要素のアドレスを配列に保存しておく等はできない
3. リストの長さは決まっておらず、どこで循環が起こっているかはわからない
0477デフォルトの名無しさん
2015/07/25(土) 16:55:05.10ID:043ZlM4Hリストって線形に限定しないよな?
でないと問題にすらならん。
空間計算量が定数になるようにしろってことかな
0478デフォルトの名無しさん
2015/07/25(土) 17:04:03.27ID:gmV25Sr9本に書いてある条件はこれだけで、そのまま書きました
難易度がアレだったら別のお題として条件追加してくらさい
0479460
2015/07/25(土) 17:15:24.57ID:309x+t0o塗り方が何通りあるか?
という質問は、回転したら同じになるものを、
1つと数えるから、難しい
「ポリアの数え上げ定理」は、
こういう対称性のある数え上げに使う
>476
有向グラフなら、グラフの向きと反対向きの、2回たどることで、
強連結成分(閉路、巡回路)の部分がわかるけど、
この方法は、すべてのノードに番号を付けていくからね
0480デフォルトの名無しさん
2015/07/25(土) 17:20:46.28ID:gmV25Sr9>>476は書き込み不可なのでノードに番号は付けられません
0481デフォルトの名無しさん
2015/07/25(土) 17:23:05.26ID:5K8h4x4yポインタは異なることが識別できれば良いだけの
内部情報で、不定長さビットストリームと仮定
0482デフォルトの名無しさん
2015/07/25(土) 17:25:54.14ID:5K8h4x4y循環があればリスト要素数は∞とカウントされるんで
少ないメモリ領域とやらのサイズをリスト要素サイズで割った値を
超えたら循環が発生してるんだろうね。
本当問題にもならない
0483デフォルトの名無しさん
2015/07/25(土) 17:28:14.42ID:gmV25Sr9ポインタからアドレス値を得ることはOKです
0484デフォルトの名無しさん
2015/07/25(土) 17:28:38.67ID:5K8h4x4y段を設定しそれを超えたらまだ伸びていても再帰
呼び出しから復帰。段を増やしながら辿利直す
0485デフォルトの名無しさん
2015/07/25(土) 17:33:17.12ID:AmQdhWXo答えはこれだからアルゴリズム、プログラムで求めて一致を確かめる問題なのか?
0486デフォルトの名無しさん
2015/07/25(土) 17:47:08.37ID:BtkcRlE52つポインタ用意して
1つは+1、もうひとつは+1+1と2つすすめつつ二回比較
これなら循環している所でいつかぶち当たるんでないの
木の場合も幅、深さどちらでも良いが、
各枝で同じアルゴリズムで上の探索をやれば出来る
0487デフォルトの名無しさん
2015/07/25(土) 17:51:06.60ID:SmPf1Yeq0488デフォルトの名無しさん
2015/07/25(土) 17:54:20.50ID:gmV25Sr9>>486
が本にある解答例です
他にもあるらしいですが
0489デフォルトの名無しさん
2015/07/25(土) 18:02:07.17ID:5K8h4x4y辿れる(=ノードの分岐数に上限を設定できる)
という前提からほぼ線形リストを前提とできる。
循環があれば、循環の(リスト先頭からみた)先頭と
循環周期の組(h,c)が決まる筈
(h,c)=(0,1)(0,2)(0,3)....(1,1),(1,2)...(2,1),(2,2),...のどれか
例
(h,c)=(2,3)
先頭から見て2番目の要素が周期3の循環を持つ
(m,n)であるかどうかのチェックは簡単なコードで
配列とか必要とせずに書ける。
h+c=1 となる有限の組み合わせに対してチェックし...
h+c=2 となる有限の組み合わせに対してチェックし...
h+c=3 となる有限の組み合わせに対してチェックし...
....
効率とか無視したらこんな感じかな?
0490デフォルトの名無しさん
2015/07/25(土) 18:15:53.43ID:BtkcRlE5基本アルゴリズムだったのね
そして二回も比較はいらないという
0491デフォルトの名無しさん
2015/07/25(土) 18:15:58.63ID:gmV25Sr9https://ideone.com/55E73p
0492デフォルトの名無しさん
2015/07/25(土) 18:16:11.40ID:5K8h4x4yNILリスト終端を表すリスト
LIST_HEAD:リスト先頭
戻り:1循環あり,0:循環なし
int chk(int m,int n){
list *p=LIST_HEAD,*q;
int i;
for(i=0;i<m;i++){
p=p->next;
if(p==NIL)return 0;
}
for(q=p->next,i=0;i<n;i++,q=q->next){
if(q==NIL)return 0;
if(q==p)return 1;
}
return 0;
}
周期の定義のしかたでちょっと変わる
かもしれないがこんな感じか
0493デフォルトの名無しさん
2015/07/25(土) 18:40:59.89ID:9xO99lrF>デュードニーの覆面算
@Mathematica
https://ideone.com/TobhyI
ナイーブに書き過ぎて、SEND+MORE=MONEY が6時間経っても解けない (´・ω・`)
0494460
2015/07/25(土) 19:27:01.65ID:309x+t0o>>460 は「Googleの入社試験」
という本に書いてあった問題で、
これをプログラムで確かめることは、
出来るのかと思ったのですが、
立体における対称性を考えるのも難しく、
計算量的にも無理そうですね
気にしないで下さい
0495デフォルトの名無しさん
2015/07/25(土) 22:29:08.75ID:AmQdhWXoこれはプログラムでとかなきゃ不合格だろ。
すくなくとも公式が正しいならO(1)、定数時間で解けてるわけで。
0496デフォルトの名無しさん
2015/07/25(土) 23:58:21.62ID:BtkcRlE5(訳:俺はできないので適当に知ったかして言い訳)
0497デフォルトの名無しさん
2015/07/26(日) 00:16:16.12ID:Iy/dMhV5(訳:俺はできないのでネタに走る)
0498デフォルトの名無しさん
2015/07/26(日) 03:00:57.42ID:BBzBg0a1ただばぐってて、終了判定に使ってるやつもカウントしちゃうので結果が1多いかもしれん。
0499デフォルトの名無しさん
2015/07/26(日) 03:02:26.26ID:BBzBg0a1o(3^20)だから。
0500デフォルトの名無しさん
2015/07/26(日) 03:55:52.40ID:wZArgyIpn=1 1通り
n=2 5通り
n=3 15通り
n=4 36通り
n=5 75通り
であってるよね?
0501デフォルトの名無しさん
2015/07/26(日) 07:41:49.94ID:wZArgyIp0502デフォルトの名無しさん
2015/07/26(日) 11:41:42.93ID:F9zjmZLC正四面体を2色
(白6,黒0) (白0,黒6) (白1,黒5) (白5,黒1)
(白2,黒4)*2 (白4,黒2)*2 (白3,黒3)
9通りだと思う
0503デフォルトの名無しさん
2015/07/26(日) 11:42:58.14ID:F9zjmZLC0504デフォルトの名無しさん
2015/07/26(日) 12:31:08.07ID:wZArgyIp正六面体2色、3+3も2通りあって計10通りじゃない?
0505デフォルトの名無しさん
2015/07/26(日) 20:48:07.09ID:BBzBg0a1http://ideone.com/7kMmeg
C++。さらにバグフィックス。
間違ってたら教えてくれ。
0506デフォルトの名無しさん
2015/07/26(日) 21:33:50.48ID:wZArgyIp4面体は良いけど6面体は出来てないんじゃね?
手前、奥、上、右、下、左として
0,0,0,0,0,0 // 全部0
1,0,0,0,0,0 // 1か所だけ1
1,1,0,0,0,0 // 対面の2か所が1
1,0,1,0,0,0 // 隣接する2か所が1
1,1,1,0,0,0 // 0と1のコの字が2個組み合わさる感じ
1,0,1,1,0,0 // 0と1が3個ずつ固まっている感じ
0,0,1,1,1,1 // 対面の2か所が0
0,1,0,1,1,1 // 隣接する2か所が0
0,1,1,1,1,1 // 1か所だけ0
1,1,1,1,1,1 // 全部1
0507デフォルトの名無しさん
2015/07/26(日) 22:05:11.41ID:BBzBg0a1と、すると相当めんどくさいなぁ。
なるほどねぇ。いい案がないなー。
0508デフォルトの名無しさん
2015/07/26(日) 23:28:10.34ID:Iy/dMhV5>>http://peace.2ch.net/test/read.cgi/tech/1402622093/114 nasm
https://ideone.com/77BcH3
gccのインラインアセンブラはCコンパイラとの関連でコードとは無関係なところで長時間悩まされるし
なにより、やっててイマイチ楽しくないのでnasmに戻った・・・
nasmはいろいろと思い通りに動くし楽しいなぁー、あとマクロ使用のスキルを身に付けた
0509デフォルトの名無しさん
2015/07/30(木) 23:28:46.97ID:BD9d/HX4ただし、1から3000までループして計算せず、なるべく計算量を減らす工夫をしなさい。
0510デフォルトの名無しさん
2015/07/30(木) 23:35:44.83ID:HTmLogaO>>http://peace.2ch.net/test/read.cgi/tech/1402622093/132 nasm
https://ideone.com/AyaslC
入力はあくまでstdinで、整数を読み込んで、整数を文字にして出力して・・・
とか作っていたら、ごく簡単なお題なのに異様に長いコードになってしまった orz
0511デフォルトの名無しさん
2015/07/31(金) 09:04:01.13ID:UEq2Ng1bhttp://ideone.com/TvN7sQ
0512デフォルトの名無しさん
2015/07/31(金) 11:36:00.72ID:aobk3QH+中一ぐらいで習う数学だったような...
まあ組み合わせはもっと後かもしれんが
0513デフォルトの名無しさん
2015/07/31(金) 12:35:32.91ID:XH2HdJzNhttp://ideone.com/e5mHbq
0514デフォルトの名無しさん
2015/07/31(金) 16:45:56.91ID:gTceL3gJHaskell
https://ideone.com/kP6duw
0515デフォルトの名無しさん
2015/08/03(月) 11:35:40.01ID:0HPt0HPf( ・ω・) <熱中症に気を付けるノン
〇={=}〇
|::::::::::\
、、、し 、、、(((.@)旦旦,,旦ww旦
0516デフォルトの名無しさん
2015/08/03(月) 11:41:36.37ID:phLRIrzh(ΦωΦ)フフフ…
0517デフォルトの名無しさん
2015/08/03(月) 13:02:47.93ID:0HPt0HPf( ・ω・) <ステンバーイ
〇={=}〇
|::::::::::\
、、、し 、、、(((.@)熱,,熱,熱w熱
0518デフォルトの名無しさん
2015/08/06(木) 02:21:48.95ID:D5EthCJI素数表を使えば、いいんじゃないの?
0519デフォルトの名無しさん
2015/08/06(木) 07:03:04.39ID:CkVip+sC素数表はどっから引っ張ってくるの?
手前で計算するんやったら結局ループするよ。
約数検索にもループするし。
0520デフォルトの名無しさん
2015/08/06(木) 13:05:59.73ID:PTQ+iIuS3000 = 3 x (2 x 5)^3って一瞬で分かるよ普通w
だから中一の問題じゃないかとw
0521デフォルトの名無しさん
2015/08/06(木) 14:46:50.88ID:CkVip+sC俺一目でわからなかったから。
0522デフォルトの名無しさん
2015/08/06(木) 23:13:10.16ID:ad9Dia9Fhttps://ideone.com/SvdbkC
0523デフォルトの名無しさん
2015/08/07(金) 00:28:27.18ID:ZvHE2uvK3,000を2で、どこまでも割っていく
3,000 / 8(2^3) = 375
次に素数表に、3を追加する
375を3で、どこまでも割っていく
375 / 3 = 125
次に素数表に、5を追加する
125を5で、どこまでも割っていく
125 / 125(5^3) = 1
0524デフォルトの名無しさん
2015/08/07(金) 01:47:10.46ID:Ad8tcaD5だからー、動的に素数表作るときにループするんだってばぁー。
じゃないと、wellknownまでしか問題解けないじゃん。
0525デフォルトの名無しさん
2015/08/07(金) 10:41:45.34ID:i7xtVdjk重さが20以下で価値の合計が最大になる組み合わせを求めなさい。
[重さ, 価値]
[
[3, 5],
[5, 6],
[6, 3],
[3, 5],
[5, 9],
[2, 1],
[7, 5],
[4, 6],
[8, 3],
]
0526デフォルトの名無しさん
2015/08/07(金) 12:48:37.43ID:2DYolGPsHaskell
https://ideone.com/u2gyj4
0527デフォルトの名無しさん
2015/08/07(金) 19:48:56.07ID:1ri11Qafこの問題を誰かPythonで解いて下さい
コード読んで勉強させてください
0528デフォルトの名無しさん
2015/08/07(金) 21:39:49.75ID:r2Bevevphttps://ideone.com/8HwQl0
0529デフォルトの名無しさん
2015/08/07(金) 23:13:44.97ID:T7vKM+5Ahttps://ideone.com/okxjD1
あんまり自信ないけど、Haskellの人と答え一致してるし、多分あってるかな?
0530デフォルトの名無しさん
2015/08/08(土) 00:00:05.21ID:ThAIXUQyうーむ、このテストケースだとたまたまあってるけど、
「単位重量あたりの価値が高い順に足してくと中途半端に重さが20を超えちゃうけど、
単位重量あたり価値は低いけど重さが20に収まるのが他にもある」・・・みたいなパターンだったらダメっぽい
ので、NGだな・・・orz
0531デフォルトの名無しさん
2015/08/08(土) 02:26:05.07ID:/wExcf3Vhttps://ideone.com/rIBT6g
C++。全検索。重いよ。
コンビネーションほすぃ。
パイソンにはコンビネーションあったよね、確か。
0532デフォルトの名無しさん
2015/08/08(土) 09:02:45.33ID:6P2f/LwOpython解 最近まったくpythonは書いてないレベル
http://ideone.com/Vz4Aye
一応、全探索(2^n*n)解と 手抜きDP解を書いてみた
0533529
2015/08/08(土) 11:59:37.78ID:ThAIXUQyhttps://ideone.com/okxjD1
昨晩は大ボケかまして赤っ恥かいたので、もう一回頑張ってみた
物は23個までならideoneで実行できたけど、増やすとtime out(15s)だった
0535デフォルトの名無しさん
2015/08/08(土) 20:32:02.85ID:M3SvhFRz| pairs max |
pairs := #((3 5) (5 6) (6 3) (3 5) (5 9) (2 1) (7 5) (4 6) (8 3)).
max := #() -> 0.
(1 to: pairs size) do: [:n | pairs combinations: n atATimeDo: [:comb |
| sum |
(sum := comb sum) first <= 20 ifTrue: [
sum last = max value ifTrue: [max key: max key, {comb copy}].
sum last > max value ifTrue: [max := comb copy -> sum last]]]].
^max "=> #(#(3 5) #(5 6) #(3 5) #(5 9) #(4 6))->31 "
0536デフォルトの名無しさん
2015/08/09(日) 01:58:53.84ID:tgnqQ5VA0537デフォルトの名無しさん
2015/08/09(日) 02:26:06.84ID:Tbd/Elz50538529
2015/08/09(日) 03:40:52.90ID:MmR8qrNehttps://ideone.com/RuRXDP
出力順が変なのはご愛嬌ってことで・・・
0539デフォルトの名無しさん
2015/08/09(日) 07:16:11.67ID:1HG7N0Ln>>525
C++
http://ideone.com/dVWBK8
0540デフォルトの名無しさん
2015/08/09(日) 21:49:21.35ID:FQ34dcmWhttps://ideone.com/LtOHqA
0541デフォルトの名無しさん
2015/08/09(日) 22:05:09.50ID:FQ34dcmWまあ最初に重さ0、価値も0の物があると仮定しているのでv[]とw[]の最初の両方に0を入れなければ
ならないけどそこは許してちょ
https://ideone.com/XUiqED
0542デフォルトの名無しさん
2015/08/10(月) 00:33:49.20ID:IMTu2L09問題はVCに適応されるのがあと何年後かわからん事だ。
template<class T>
struct Node{
T Value;
vector<Node> Nodes;
};
というのが書けるようになるのでDPのようなものも書きやすくなる。かも。
0543デフォルトの名無しさん
2015/08/10(月) 02:07:34.25ID:IMTu2L09https://ideone.com/C3MnV8
C++。暇だったのと>>539見たのとで書く気になって書いてみたが、うーむ。微妙。
少数では、>>531よりよっぽど早くなったけど、30要素のテストをすると返ってこない。
よく書いてる、ラディックス系の問題を抱えててオーダー爆発してる気がする。
選定眼が悪すぎるなぁ。Orz
0544デフォルトの名無しさん
2015/08/10(月) 03:59:58.76ID:GocUDqGYこれいいな
http://ideone.com/rcCIWO
500要素でも一瞬にして答えが返る
0545デフォルトの名無しさん
2015/08/10(月) 16:58:39.18ID:EREVH0u4こんな大きなDPが通るかと思ったら通った
要素数4000個です
http://ideone.com/3Bb8AT
0546デフォルトの名無しさん
2015/08/11(火) 02:15:09.29ID:Hh2091CF嫉妬心めらめらで我流に書き直してみた。遅くなった。Orz
イデオンでベンチマークしてるが、時間よりメモリのほうが先に無くなるな。
VCだと32ビットで11250要素位がメモリ的に限界。リリースで10秒くらいだった。@N3700
俺もこれくらいできるようになりたい!
0547デフォルトの名無しさん
2015/08/11(火) 06:57:06.82ID:Hc76YZ4Funique_ptrで多次元配列を指定するには、配列へのポインタと事情は同じで最初の次元しか
指定できない
なのでtemplateとconstexprを使った
気をつけないといけないのはx64システムでスワップファイルを必要以上に大きく取っていると
大きなメモリをnewしようとするとbad_allocも投げずにスラッシングに陥りやすい
gccで-Wl,--heap=10737418240を付けてヒープサイズを10GBに制限しても駄目だった
16GBの手持ちの処理系では30000要素は動き、35000要素でスラッシングが発生して
リセット
この辺はJavaのような言語の方が安心してつかえますね
0548デフォルトの名無しさん
2015/08/11(火) 07:07:57.44ID:Cl5JwdFfこれが流行ってるのか?
重さで区切ったテーブルを用意して、データを1つずつ取り出してそれを
テーブルの全要素に加算したとき、よりよい条件ならデータ更新するだけではないか?
高速化のよちはあるか?
0549デフォルトの名無しさん
2015/08/11(火) 08:18:34.17ID:d4rwMY1e論よりコードでお願いします。
0550デフォルトの名無しさん
2015/08/11(火) 09:04:29.52ID:b1gdhSBL余地ありまくりです
0551デフォルトの名無しさん
2015/08/11(火) 09:08:11.44ID:b1gdhSBL>>539(修正版) (>>547氏のコードの2倍遅い)
http://ideone.com/pOiWrM
>>547氏のfork、vectorにしただけで多少早くなった
http://ideone.com/SXOjCw
0552デフォルトの名無しさん
2015/08/11(火) 09:54:02.46ID:4SWJuJjSあ、なるほど、bpをいじらなくても結果を取り出せるようにしたので速度が倍になるわけですね
それとvectorにしただけで速くなるという事は生の配列をいじっているようなコードを吐いてくれる
事を期待して無理矢理unique_ptrを使ったのはもはや無意味でvectorの方がいいコードに
してくれるようになってるみたいですね
なんかいろいろ勉強になりますわー
0553デフォルトの名無しさん
2015/08/11(火) 13:57:21.97ID:b1gdhSBL>>551上 再修正、もうむりぽ
http://ideone.com/XTVoVn
>>552
いえいえ、私のが2倍遅いんですw
今は>>547さんのコードが一番速いはずです
それと私の変更は修正になってませんでした、すみません
unique_ptrの認識は、仰る通りと思います
初期化処理が宣言した場所にずれて、計測時間が変わっただけみたいです
0554デフォルトの名無しさん
2015/08/11(火) 21:39:13.92ID:twERAkdrフィボナッチ数列で最初に1000桁になる Fibonacci(n)のnと、Fibonacciの値を求めよ
ただし、BigIntegerを実装している言語はそれを使ってはいけない
0555デフォルトの名無しさん
2015/08/12(水) 00:59:20.40ID:aVMu6OBo9つのデータを重さ順に並べると、5個迄の重さの和は17、6個では22となるから、
最大5個の組合せでよいことになる。そこで、9個から5個を取り出す組合せのうち価格が
最大になるものを探す。FreeBasicで作成。プログラムが長くなるので、分割して掲載
'2chan prob.525
' use Free Basic
Dim w (0 To 9) As Integer =>{2,3,3,4,5,5,6,7,8}
Dim c (0 To 9) As Integer =>{1,5,5,6,6,9,3,5,3}
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim m As Integer
Dim n As Integer
Dim sum As Integer
Dim max As Integer
Dim parm(1 To 5) As Integer =>{0,0,0,0,0}
0556デフォルトの名無しさん
2015/08/12(水) 01:00:06.64ID:aVMu6OBo(続き)
max = 0
For i = 1 To 9
For j = 1 To 9
For k= 1 To 9
For m = 1 To 9
For n = 1 To 9
if i = j Or i = k Or i=m Or i = n Or j =k Or j= m Or j= n Or k= m Or k= n Or m= n Or w(i) + w(j) + w(k)+w(m)+w(n) > 20 Then
Exit For
EndIf
sum = C(I)+C(J)+C(K)+c(m)+c(n)
If SUM > max Then
max = sum
0557デフォルトの名無しさん
2015/08/12(水) 01:00:34.97ID:aVMu6OBoparm(1) = i
parm(2) = j
parm(3) = k
parm(4) = m
parm(5) = n
End If
Next
Next
Next
Next
Next
Print Using "[#";w(parm(1));
Print Using ",#]";c(parm(1));
Print " ";
Print Using "[#"; w(parm(2));
Print Using ",#]";c(parm(2));
Print " ";
Print Using "[#"; w(parm(3));
Print Using ",#]";c(parm(3));
Print " ";
Print Using "[#"; w(parm(4));
Print Using ",#]";c(parm(4));
Print " ";
Print Using "[#"; w(parm(5));
Print Using ",#]";c(parm(5))
Sleep
End
答え [3,5] [4,6] [5,6] [5,9] [3,5]
0558デフォルトの名無しさん
2015/08/12(水) 01:03:59.03ID:kmWvGKo7なかなかいい眼してますね。
コンビネーション関数があれば動的に算出して食わせられるんだけど、C++には生憎無い。
残念だ。チクショー。
0559デフォルトの名無しさん
2015/08/12(水) 01:33:22.67ID:3JfHZzAv0560デフォルトの名無しさん
2015/08/12(水) 01:48:07.06ID:bzee/ayF> ただし、BigIntegerを―使ってはいけない
このスレ的には、禁止するより BigInteger をうっかり使うと
思わぬ遠回りになる良問考えて、それを何食わぬ顔で出してほしいと思う
0561デフォルトの名無しさん
2015/08/12(水) 01:51:00.09ID:kmWvGKo7頭悪すぎて自作できません。Orz
0562デフォルトの名無しさん
2015/08/12(水) 02:03:56.28ID:EwmSeq/v0563デフォルトの名無しさん
2015/08/12(水) 03:04:36.43ID:3NKu34CI10進BASIC(JIS Full BASICのサブセット)で書いてみた
http://pastebin.com/1ZEzEQxR
これインタープリタのはずなのに強烈に速いね
計算量を減らした効果が出てる
このBASICは標準でグラフィック描画機能があるのでグラフが
必要な時にも使えるね
BASICなんかほとんど使った事がないんで最初配列をどうやって
初期化しようかと迷ったけどDATA文とREAD文ってのがあったんで
>>555さんのを簡単に移植できた
0564デフォルトの名無しさん
2015/08/12(水) 03:08:38.14ID:3NKu34CIhttp://6317.teacup.com/basic/bbs
数学者のような人が多いんでしょうか・・・
0565デフォルトの名無しさん
2015/08/12(水) 03:10:03.95ID:3JfHZzAv0566デフォルトの名無しさん
2015/08/12(水) 03:24:32.00ID:3NKu34CIhttp://www.urban.ne.jp/home/kz4ymnk/seminar/basic/index.html
からダウンロード出来るzipファイルには面白いアルゴリズム集の詰め合わせになっている
0567デフォルトの名無しさん
2015/08/12(水) 03:25:14.53ID:3NKu34CIあ、なるほどそうでしたか
これだけの分量を書くんだから相当の知識を持ってる人なんでしょう
0568デフォルトの名無しさん
2015/08/12(水) 03:29:13.69ID:YDzp28fnhttp://ideone.com/4nwLYD
手抜きw
0569529
2015/08/12(水) 17:31:56.70ID:ykmHsL68>>http://peace.2ch.net/test/read.cgi/tech/1402622093/197 nasm
https://ideone.com/rT5DH1
stdinの一行目がなんか表示されないけど空行です
お盆でお酒飲みながらコーディングしたらバグだらけで、バグ取るのに骨が折れた・・・
ホビープログラムと言えども、あんまり酔っ払ってやるのはいかんなw
0570デフォルトの名無しさん
2015/08/12(水) 19:39:26.45ID:i7Ce6lvWttp://lvimg.jp/job-link/img/job_pict/18235/main_l.jpg/235x157-f1
0571デフォルトの名無しさん
2015/08/12(水) 20:17:43.88ID:zhM0QOaOというのを付け加えないとポゴソートと同様のナンセンスお題
になるんじゃ?
0572デフォルトの名無しさん
2015/08/12(水) 21:09:20.36ID:yOa4X5cVhttp://www.geocities.jp/hirohiroevo6/kakuritu-04.html
これをプログラムで解け
ヒント
http://kurihara.sansu.org/sansu2-2/137.html
http://d.hatena.ne.jp/rsc96074/20120821/1345546339
0573片山博文MZ ◆T6xkBnTXz7B0
2015/08/12(水) 21:27:14.21ID:VQCZ0+hxC/C++限定。
主要なC/C++コンパイラーで完全にポータブルなstdint.hまたはcstdintを作れ。
0574デフォルトの名無しさん
2015/08/12(水) 23:41:20.77ID:kmWvGKo7回答者に優しくない。
テンプレートメタプログラミングすればできるんじゃね?
よく知らんけど。
0575デフォルトの名無しさん
2015/08/13(木) 00:48:57.22ID:5m9qfokkっていうか風営法的に大丈夫なの? 風営法的におkだとしてもキモイから死ねばいいと思うよ(ニッコリ
0576片山博文MZ ◆T6xkBnTXz7B0
2015/08/13(木) 11:18:40.34ID:TzobCxoUそのまんまのpstdint.hというのがあるようなので、お題は取り下げます。
0577デフォルトの名無しさん
2015/08/13(木) 15:15:30.10ID:OKgzTFKd整数N(10**15)の素因数を全て出力せよ
0578デフォルトの名無しさん
2015/08/13(木) 16:20:45.22ID:AjD0KUn3その1.
またFreeBasicで実装してみました。改行が多すぎると叱られますので、分割して掲載します。
Dim a(1 To 1000) As Integer
Dim b(1 To 1000) As Integer
Dim c (1 To 1001) As Integer
Dim i As Integer
Dim n As Integer
Dim carry As Integer
Dim ans As String
Dim count As Integer
a(1) = 1
b(1)=1
c(1) = 0
For I= 2 To 1000
a(i)= 0
b(i) = 0
c(i) = 0
Next
c(16) = 0
n= 2
While (c(1000)< 1)
carry = 0
0579デフォルトの名無しさん
2015/08/13(木) 16:22:29.65ID:AjD0KUn3続き
For i = 1 To 1000
c(i) = a(i)+b(i)+carry
If c(I)>= 10 Then
carry = 1
c(i) = c(i)-10
Else
carry = 0
EndIf
a(i) = b(i)
b(i)=c(i)
Next
ans = ""
For i =1000 To 1 Step -1
If c(i) > 0 Then
count = I
Exit For
EndIf
Next
For I = count To 1 Step -1
ans = ans + Str(c(i))
Next
0580デフォルトの名無しさん
2015/08/13(木) 19:42:00.04ID:8El1KMj4同じく10進BASICでパクらせていただきましたw
http://pastebin.com/V1Rte3im
しかしBASICなのに4秒ほどで答えが出るんですね
今のPCは速い・・・
0581デフォルトの名無しさん
2015/08/14(金) 09:05:16.42ID:BjAG8ZW9最後の部分を書きこもうとしたら、NGワードとかで書き込めませんでしたが、
10進BASICで試されたとのこと、有難うございます。
あのように、1桁を2byteの整数型であらわし、必要な桁数の配列を使って
桁上がりの場合、次の配列要素に1を加えるという方式でやれば、もっとたくさんの
桁数のフィボナッチ数を計算できそうです。
さらに、加算だけでなく、減算も同様な方法でできますから、加減算を
サブルーチンで組むとすれば、多倍長の整数計算ができそうです。
0582デフォルトの名無しさん
2015/08/15(土) 18:22:24.47ID:MmX96v/5題意がN=10**15ということならば、
10**15=2**15*5**15
0583デフォルトの名無しさん
2015/08/15(土) 23:19:12.68ID:J/PFL1Tj| fibGen n |
fibGen := Generator on: [:g |
| add str a b |
add := [:x :y |
| size sum carry |
size := (x size max: y size) + 1.
sum := (x forceTo: size paddingStartWith: 0) + (y forceTo: size paddingStartWith: 0).
[(carry := sum // 10) allSatisfy: #isZero] whileFalse: [sum := sum \\ 10 + (carry allButFirst, {0})].
sum allButFirst: ((sum findFirst: #strictlyPositive) - 1 max: 0)
].
str := [:x | (x collect: #asHexDigit) as: String].
g yield: (str value: (a := b := #(1))).
[g yield: (str value: (a := b flag: (b := add value: a value: b)))] repeat
].
n := 0.
[fibGen peek size < 1000] whileTrue: [fibGen next. n := n + 1].
{n. fibGen peek contractTo: 13} "=> #(4781 '10700...27816') "
0584デフォルトの名無しさん
2015/08/16(日) 00:03:29.72ID:nCIMfI1DSmalltalkとはなつかしい 名前ですね。
このsmalltakが実際に動くコンピュータが
あるのですね。
パソコンでは、Smalltalkのコンパイラか
インタプリタはないのでしょうか。
0585デフォルトの名無しさん
2015/08/16(日) 03:03:32.17ID:KpU9gAzT0586デフォルトの名無しさん
2015/08/16(日) 03:06:36.61ID:KpU9gAzTttp://qiita.com/newapplesho/items/d541bfdc1c54f273cea9
0587デフォルトの名無しさん
2015/08/16(日) 08:55:08.94ID:nCIMfI1Dご教示ありがとうございます。
Smalltalkがいまでも現役であることに驚いています。
PL/IとかModular-2とかAdaと同じように、もう消え去った
言語かと思っておりました。
0588デフォルトの名無しさん
2015/08/16(日) 10:50:51.16ID:ZfhVUxlQSmalltalk 自体は GNU Smalltalk というファンお手製の特殊な処理系がオンラインで使用可能ですが
(http://ideone.com/ で言語から Smalltalk を選択)
残念ながら Smalltalk は一般に処理系に依存したコードになることが多いので、くだんのコード >>538 も
(字下げのための全角スペースの置換はもとより)このままの状態では処理系の異なる GNU Smalltalk では実行できません。
処理系として示したとおり、Squeak Smalltalk もしくは Pharo Smalltalk という処理系があるので
これらをお手元の PC にインストールしてお試しください。いちおう、Mac、Win、Linux で動くことになっています。
http://squeak.org/
http://pharo.org/
たとえば、後者の Pharo の場合ですと、ダウンロード、インストール(Mac/Win では zipを展開するだけです)して
起動までできたら(Smalltalk 環境のデスクトップに相当する画面が表示されます)そこで
デスクトップクリックメニュー → Playground → くだんのコードの全角スペースをtabなどに置換後ペースト
→ Playground ウインドウ右上の実行ボタン(緑のボタン)
で実行が可能です。結果は実行後にウインドウ右側にペイン(枠)が現われてそこに表示されます。
実際に操作してみてわからないことがあれば、気軽に訊いてください。
0589デフォルトの名無しさん
2015/08/16(日) 11:07:31.80ID:opc+DquoFreeBasicはコンパイラなんですね、知りませんでした
手元にVS2015があるんでもっぱらC++とC#ばっかりですが、VBも使おうと思えば使えるので
それでもやってみようかな
いやVBなんか使ったら反則だな
速度的にはC#とほとんど同じだし
0590デフォルトの名無しさん
2015/08/16(日) 14:00:47.59ID:nCIMfI1Dたびたびの御教示ありがとうございます。
SmalltalkというものはXeroxパルアルト研究所で開発された
画期的なオブジェクト指向言語であるという1980年代止まり
(『bit』とか『数理科学』で得た)程度の智識しかありませんでしたので、
大変参考になります。
Fortran IV→Basic→Pascal→C/C++と進んできたものの
C++のオブジェクト指向的なものについていけないロートル
にとっては、Smalltalkは敷居が高そうですが、がんばってチャレンジ
してみようかとおもっています。
0591デフォルトの名無しさん
2015/08/16(日) 14:18:08.40ID:KpU9gAzTありゃ実行できるんですね。ごめんなさい。
ちなみにSmalltalkのこと全く知りません。
オブジェクト指向の祖先ぐらいとしか。
0592デフォルトの名無しさん
2015/08/16(日) 17:43:22.63ID:GQzK8CVx0593デフォルトの名無しさん
2015/08/17(月) 19:02:04.40ID:e8HWYFnP夜は凶暴なチンコだけどな
0594デフォルトの名無しさん
2015/08/19(水) 18:04:33.32ID:HH1goDS4( ・ω・) <チョットトオリマスヨ
〇={=}〇
|::::::::::\
、、、し 、、、(((.@)ωΦ;) <ギャァ
0595デフォルトの名無しさん
2015/08/19(水) 19:02:04.08ID:6UXNUD0x標準出力等に「進捗」「どう」「です」「か」をランダムで連続表示し、
「進捗どうですか」が完成したら「???」を付して終了するコードを書け。
停止するまでに要した文字数をカウントし「○文字で煽られました。」と最後に出力して終わること。
http://elephnote.com/blog/archives/936 より。(リンク先にC++のコードあり)
0596デフォルトの名無しさん
2015/08/19(水) 20:11:05.78ID:fmZCPpbbhttp://ideone.com/WMBgIG
C++。VCでしか動かないコード。マルチバイト文字はほんとどうしようもないな。
うにこーどコンテナがはよ来てほしい。
まぁ、もう一個作って通常のChar文字のを返せばいいんだけどめんどくさいのでパス。
0597デフォルトの名無しさん
2015/08/19(水) 20:19:22.27ID:fmZCPpbbローカルではこんな感じで動いてる。
0598デフォルトの名無しさん
2015/08/19(水) 20:50:43.73ID:pyvbsVBGC#はUnicodeだからこういうの楽だなぁ
0599デフォルトの名無しさん
2015/08/19(水) 21:34:01.23ID:K0fM8cGkhttp://ideone.com/9u26ZW
0600片山博文MZ ◆T6xkBnTXz7B0
2015/08/20(木) 00:56:40.99ID:PV11qe8C画像ファイルが与えられると、CMYKの各色成分について、C成分はdx_cピクセル分だけ右に、
dy_cピクセル分だけ下に動かし、M成分はdx_mピクセル分だけ右に、
‥‥(中略)‥‥
動かした結果の画像ファイルを作成するプログラムを作れ。はみ出しは切り捨てる。
0601デフォルトの名無しさん
2015/08/20(木) 01:02:14.60ID:MCjdlcPA0602デフォルトの名無しさん
2015/08/20(木) 09:13:49.19ID:d7+5K/06公式版(英語版)では文字化けするけれど、
Squeak 4.4-ja http://osdn.jp/projects/squeak-ja/releases/59208
もしくは、表示フォントを日本語に変更済みの Pharo で動作するはず。
| elems count tail |
elems := #(進捗 どう です か).
count := 0.
(Smalltalk version beginsWith: 'Pharo')
ifTrue: [Transcript open] ifFalse: [World perform: #findATranscript: with: nil].
tail := OrderedCollection new: elems size withAll: ''.
[ Transcript show: (tail removeFirst; add: elems atRandom).
count := count + tail last size.
tail asArray = elems
] whileFalse.
Transcript show: '???\\' withCRs, count printString, '文字で煽られました。'
ついでに GNU Smalltalk でも動くように改変してみた(けど、マルチバイト文字列は扱えないっぽい?)
http://ideone.com/UHFCPB
0603529
2015/08/20(木) 11:19:26.75ID:PhWv3bmGhttps://ideone.com/V9MjC6
0604デフォルトの名無しさん
2015/08/20(木) 11:20:36.27ID:PhWv3bmG0605デフォルトの名無しさん
2015/08/20(木) 15:55:22.32ID:n0GaH406> GNU Smalltalk でも動くように改変してみた(けど、マルチバイト文字列は扱えないっぽい?
ideoneではだめっぽいですが、ローカルならI18Nパッケージをロードすることで使えるらしいです。
GNU Smalltalkで日本語(Unicode)を扱う - レガシーコード生産ガイド
http://phaendal.hatenablog.com/entry/2015/08/18/231817
0606デフォルトの名無しさん
2015/08/20(木) 19:54:27.49ID:MPj4cmUODim i As Integer
Dim j As Integer
Dim No As Integer
Dim Moji(1 To 4) As String =>{"進捗","どう","です","か"}
Randomize , 0
j = 0
Do
Do
i = Int(Rnd*10)+1
Loop While i>4
i = i Mod 10
Select Case As Const i
Case 1,2,3
no = no + 2
Case 4
no = no + 1
End Select
Print Moji(i);
j =(10*j+i)
j = j Mod 10000
' Print i, j
Loop While (j <>1234)
Print "???"; no;
Print "文字で煽られました"
sleep
End
どう進捗どう進捗ですどうどうですかですか進捗かか進捗ですかか進捗どうですか??? 37文字で煽られました
0607デフォルトの名無しさん
2015/08/20(木) 20:10:43.53ID:MPj4cmUO>>606
別の結果:
ですどう進捗ですかどうですどうですですかどうどう進捗進捗かどうどう進捗かかです進
捗かかですか進捗どうどう進捗進捗ですかです進捗どうどうですどうどうです進捗どうか
かどうですどう進捗進捗か進捗ですどうです進捗進捗かですどう進捗かですか進捗進捗か
かどうですかどうですですか進捗進捗ですどう進捗かどうか進捗ですか進捗進捗かですで
すかどうですどうですですかかですです進捗進捗進捗か進捗進捗か進捗どうどうどうどう
かかかどうかどうですですどうかかかか進捗ですかですですどうですかかどうどうですど
うですか進捗かどう進捗どうです進捗かですかですです進捗どう進捗かです進捗ですかで
すかですどうです進捗どうどうどうですどう進捗ですかどうですかですどう進捗進捗どう
進捗進捗かですです進捗どうですです進捗どうです進捗どう進捗どうどうです進捗どうで
すか??? 362文字で煽られました
0608デフォルトの名無しさん
2015/08/20(木) 20:44:48.10ID:zKrdr4koprintfの使い方面白いですね
一瞬Pythonのprintかと思った
0609デフォルトの名無しさん
2015/08/20(木) 22:11:53.49ID:PM3A/Um9C#の改良版
この場合はwordsのindexが0,1,2,3の順に出て来ればそれで終了だから
わざわざ重いToString()でその都度表示させなくても最後に一回だけ
表示すればいいね
0610デフォルトの名無しさん
2015/08/20(木) 23:49:02.00ID:NYEJ8Y+WRuby
エンコードは環境に合わせて
# coding: shift_jis
a = ["進捗","どう","です","か"]
s = ""
until s.index("進捗どうですか")
t = a[rand(a.length)]
s += t
print t
end
puts "???"
puts "#{s.length}文字で煽られました。"
0611デフォルトの名無しさん
2015/08/21(金) 13:49:32.95ID:RwXqV507Haskell
http://ideone.com/2T8Ex
うーん…
0612デフォルトの名無しさん
2015/08/21(金) 13:52:10.82ID:RwXqV507http://ideone.com/2T8Exx
0613デフォルトの名無しさん
2015/08/21(金) 18:01:04.83ID:2BxAwlW60614デフォルトの名無しさん
2015/08/22(土) 16:35:44.33ID:SF3spgkL(require 'cl-lib)
cl-lib
(defun f (aaa)
(let* ((bbb (length aaa))
(ccc (cl-loop for i from (1- bbb) downto 0 collect i))
ddd)
(while
(progn (push (cl-random bbb) ddd)
(not (equal (cl-subseq ddd 0 bbb) ccc))))
(let ((eee (cl-reduce (lambda (a b) (concat a b)) (mapcar (lambda (n) (nth n aaa)) (reverse ddd)))))
(princ (concat eee "???")) (terpri)
(princ (format "%d文字で煽られました。\n" (length eee)))
(length eee))))
f
(f '("進捗" "どう" "です" "か"))
進捗進捗かか進捗進捗かどうか進捗どう進捗です進捗進捗進捗進捗進捗ですどうです進捗どうですか???
45文字で煽られました。
45
0615デフォルトの名無しさん
2015/08/22(土) 17:34:53.25ID:/uEqDuKiHaskell よくわからないんですが、最後に res を一気に出力している仕様と読みました。
興味本位で恐縮ですが、ランダムな語をたとえば 0.2sec ずつ間をあけて逐次表示するように
仕様変更することは、このコードにちょっとした追記 and/or 修正で可能なものなものですか?
(こちらの読み間違いで、すでにそういうコードだったらごめんなさい。)
0616デフォルトの名無しさん
2015/08/23(日) 02:28:02.76ID:bL4DWVex>ちょっとした追記 and/or 修正で可能なものなもですか?
http://ideone.com/2DpiPl
ちょっとではできませんでした…
ヘボHaskellerにはこれが限界のようです
0617デフォルトの名無しさん
2015/08/23(日) 07:36:18.27ID:+kEeUpuaありがとうございます。読んでみます。
0618デフォルトの名無しさん
2015/08/23(日) 14:37:18.72ID:r5zCd+h4FreeBasic改訂版
Dim No As Integer
Dim Moji(1 To 4) As String =>{"進捗","どう","です","か"}
Dim rndno As Integer
Dim s As string
Dim i As Integer
Randomize , 0
s= "":no = 0
for i = 1 to 4
Do
rndno = Int(Rnd*10)
Loop While rndno>3
Rndno = rndno+1
print Moji(rndno);
no = Len(Moji(rndno))
s = s+ Moji(rndno)
no = Len(S)
next
While (s <> "進捗どうですか")
Do
rndno = Int(Rnd*10)
Loop While rndno>3
Rndno = rndno+1
Print Moji(rndno);
no = no + Len(Moji(rndno))
s = Right(s+ Moji(rndno),14)
Wend
Print "???";no/2;"文字で煽られました "
進捗進捗かですです進捗進捗どうですか??? 18文字で煽られました
0619デフォルトの名無しさん
2015/08/23(日) 16:30:18.53ID:7CXqQTimhttps://ja.wikipedia.org/wiki/算額
素敵な文化だと思います (・∀・)
0620デフォルトの名無しさん
2015/08/23(日) 17:27:04.09ID:UsyQeA+D0621デフォルトの名無しさん
2015/08/23(日) 18:58:56.94ID:8rh7GHk2関孝和とかも知らない人?w
0622デフォルトの名無しさん
2015/08/23(日) 19:23:35.50ID:r5zCd+h4そうですね。まさに遺題継承です。
0623デフォルトの名無しさん
2015/08/23(日) 20:20:29.66ID:+uQzTNZq動くコードを残しているというあたりがそれっぽいかもね。
ただ自分の場合はデバッグ適当なので妄信して使うと痛い目見る可能性が高いけど。へへ。
0624デフォルトの名無しさん
2015/08/24(月) 01:33:18.30ID:yxLzAtG8http://pastebin.com/SW5G9d7U
この行列の連続した縦または横または対角線上の4つの数字を乗算した結果で
最も大きな数字は何か
問題の原文
https://projecteuler.net/problem=11
0625デフォルトの名無しさん
2015/08/24(月) 03:01:46.43ID:TPAjrb/Lhttp://ideone.com/imXeNE
C++。これであってる?
SIMD殺しだな。行列を縦と横用は用意できるが斜め用はなかなか難しい。
そこまで技量ないから何もやってないけど。
2次元配列使ってるが、実際あんまり効率よくないので、1本にしたほうがいいかもな。
0626デフォルトの名無しさん
2015/08/24(月) 03:11:34.70ID:8uiBkhLK3個が計算済みだったら分岐は2つだが。
0627デフォルトの名無しさん
2015/08/24(月) 04:04:10.56ID:TPAjrb/L姑息な手段をするよりも計算しなおしたほうが早いよ。最近の計算機は。
0628デフォルトの名無しさん
2015/08/24(月) 04:33:27.96ID:6+hdWGOK速くできるとわかってから数学的考察したらいいかと。
0629デフォルトの名無しさん
2015/08/24(月) 10:57:25.38ID:BHmjH0c8| n h w doc data mat |
n := 4.
doc := (HTTPSocket httpGet: 'http://pastebin.com/raw.php?i=SW5G9d7U') contents.
data := Scanner new scanTokens: doc.
h := doc lineCount.
self assert: (data size isDivisibleBy: h).
w := data size / h.
mat := Matrix rows: h columns: w contents: data.
(((0 to: n-1) inject: #(1 1 1 1) into: [:mats :i |
mats * (
{i@0. 0@i. i@i. i@(n-i)}
with: {w-n@h. w@(h-n). w@h-n. w@h-n}
collect: [:d :limit | mat atRows: (1 to: limit y) + d y columns: (1 to: limit x) + d x]
)
]) collect: #max) max "=> 70600674 "
0630デフォルトの名無しさん
2015/08/24(月) 11:11:16.74ID:BHmjH0c8データをネット経由で取得とか余計なことをせず、次のようにペタ書きすれば、Pharo Smalltalk でも動きます。
(ネットがらみは Squeak Smalltalk と Pharo とでは API が変更されているみたいです。)
doc := '08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08
49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00
81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65
52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91
22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80
24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50
32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70
67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21
24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72
21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95
78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92
16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57
86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58
19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40
04 52 08 83 97 35 99 16 07 97 57 32 16 26 26 79 33 27 98 66
88 36 68 87 57 62 20 72 03 46 33 67 46 55 12 32 63 93 53 69
04 42 16 73 38 25 39 11 24 94 72 18 08 46 29 32 40 62 76 36
20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 04 36 16
20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54
01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48'
なお、GNU Smalltalk(ideone.com の Smalltalk)ではさらに手を加えないと動きません。念のため。
0631デフォルトの名無しさん
2015/08/25(火) 00:38:36.00ID:1lAFrJxC遅ればせながらC++
http://ideone.com/sDo6vF
0632デフォルトの名無しさん
2015/08/25(火) 13:56:14.08ID:RLrOO49kDim i As Integer:Dim j As Integer:Dim k As Integer:Dim m As Integer:Dim mul As Integer:Dim max As Integer
Dim mat (1 To 20, 1 To 20) As Integer:Dim b(1 To 4) As Integer
Open "c:\work\odai0824.dat" For Input As #1
For i = 1 To 20:For j = 1 To 20:Input #1, mat(i,j):Next:Next:Close
max = 0
For i = 1 To 20:For j = 1 To 17
mul = mat(i,j)*mat(i,J+1)*mat(i,j+2)* mat(i,J+3)
If max <mul Then: max = mul:b(1)=mat(i,j):b(2)=mat(i,j+1):b(3)=mat(i,j+2):b(4)=mat(i,j+3):EndIf
Next:Next
For j = 1 To 20:For i = 1 To 17
mul = mat(i,j)*mat(i+1,J)*mat(i+2,j)* mat(i+3,J)
If max <mul Then: max = mul:b(1)=mat(i,j):b(2)=mat(i+1,j):b(3)=mat(i+2,j):b(4)=mat(i+3,j):EndIf
Next:Next
For i = 1 To 17:For j = 1 To 17
mul = mat(i,j)*mat(i+1,J+1)*mat(i+2,j+2)* mat(i+3,J+3)
If max <mul Then: max = mul:b(1)=mat(i,j):b(2)=mat(i+1,j+1):b(3)=mat(i+2,j+2):b(4)=mat(i+3,j+3):EndIf
Next:Next
For i = 1 To 17:For j = 4 To 20
mul = mat(i,j)*mat(i+1,J-1)*mat(i+2,j-2)* mat(i+3,J-3)
If max <mul Then: max = mul:b(1)=mat(i,j):b(2)=mat(i+1,j-1):b(3)=mat(i+2,j-2):b(4)=mat(i+3,j-3):EndIf
Next:Next
Print Using "## ## ## ## "; b(1);b(2);b(3);b(4);:Print max
Sleep
0633デフォルトの名無しさん
2015/08/25(火) 14:06:22.47ID:vVSJ44wn0634デフォルトの名無しさん
2015/08/25(火) 20:19:58.20ID:odxiALMU@Mathematica
http://ideone.com/0wcBQj
0635デフォルトの名無しさん
2015/08/26(水) 01:05:29.49ID:pJv7VE/g0636デフォルトの名無しさん
2015/08/26(水) 21:24:41.10ID:yHgKqfXq最も回答数が多い問題(簡単だからだろうね)
https://projecteuler.net/problem=1
日本語にするとかなり意訳だけど
10未満の自然数で3と5による素数及び合成数を列挙すると3,5,6,9であり、その和は23である。
1000未満の3と5による素数及び合成数の全ての和を求めよ。
C#でLINQを使って書くと
var res = Enumerable.Range(1, 999).Where(x => (x % 3 == 0) || (x % 5 == 0)).Select(x => x).Sum(x => x);
Console.WriteLine("result = " + res);
これだけでした
0637デフォルトの名無しさん
2015/08/26(水) 21:25:32.41ID:yHgKqfXqresult = 233168
です
0638デフォルトの名無しさん
2015/08/26(水) 21:33:56.24ID:yHgKqfXq実は「3または5の倍数」だったんですね
合成数の時は3と5だけで作るために配列を3^6=729だから6個ほど用意して
その中に1と3と5を入れていく組み合わせが必要かなーとか余計な事を考えてました
0639デフォルトの名無しさん
2015/08/26(水) 23:14:27.57ID:nSfPbyXQ0640デフォルトの名無しさん
2015/08/26(水) 23:36:55.11ID:pB3YAw41((1 to: 999) select: [:x | (x isDivisibleBy: 3) or: [x isDivisibleBy: 5]]) sum "=> 233168 "
0641デフォルトの名無しさん
2015/08/26(水) 23:41:13.56ID:nSfPbyXQ0642デフォルトの名無しさん
2015/08/26(水) 23:43:17.82ID:nSfPbyXQ0643デフォルトの名無しさん
2015/08/27(木) 06:04:32.27ID:dP3c3bmU@Mathematica
http://ideone.com/FP4Iqk
0644デフォルトの名無しさん
2015/08/27(木) 08:41:53.66ID:oNXmE8hMDim i As Integer:Dim j As Integer:Dim m As Integer:Dim n As Integer:Dim sum As Integer:Dim limit As Integer
limit =1000:sum =0:n=1 :i = 1
Do
n= 3*i
If (n>= limit) Then Exit Do End If
sum = sum +n
i = i+1
Loop
i = 1
Do
m= 5*i
If (m>= limit) Then Exit Do End If
sum = sum + m
i =i+1
Loop
i=1
Do
j= 15*i
If (j>=limit) Then Exit Do End If
sum = sum -15*i
i= i+1
Loop
Print "sum = "; sum
sleep
ans=233168
0645デフォルトの名無しさん
2015/08/27(木) 09:51:58.46ID:9KnKzHgu0646デフォルトの名無しさん
2015/08/27(木) 10:01:32.13ID:oNXmE8hM簡単に使えるという以外の他意はありません。
一応、この言語以外に、Pascal、Fortran、C++なども使えますが、
Editorでプログラムを書き、そのままコンパイルして実行できる手軽さ
でFree Basicを使っているまでです。
0647デフォルトの名無しさん
2015/08/27(木) 12:20:55.88ID:oNXmE8hMC++
http://ideone.com/PTYqiP
0648デフォルトの名無しさん
2015/08/28(金) 05:48:44.95ID:bUorkSPWまたしてもC++
http://ideone.com/DRMTX1
0649デフォルトの名無しさん
2015/08/28(金) 08:59:37.83ID:vI1BOxp3ただ単に>>636のLINQをリスト内包表記に置き換えてみただけですが・・・
print(sum([i for i in range(1000) if i % 3 == 0 or i % 5 == 0]))
◎出力
233168
0650デフォルトの名無しさん
2015/08/28(金) 12:16:44.61ID:bu906jAF+/ >: I. +./ 0 = 3 5 |/ }. i. 1000
233168
0651デフォルトの名無しさん
2015/08/28(金) 14:55:42.99ID:B9AXnjt8printfn "%d"<| List.sum [for x in 1..999 do if x % 3 = 0 || x % 5 = 0 then yield x]
// 233168
0652649
2015/08/28(金) 18:49:04.77ID:vI1BOxp3>>649修正します、結果は同じですが・・・
print(sum([i for i in range(1, 1000) if i % 3 == 0 or i % 5 == 0]))
0653デフォルトの名無しさん
2015/08/28(金) 21:03:06.86ID:65eyPlZohttps://www.hackerrank.com/challenges/two-strings
二つの文字列A、Bが与えられている時、AとBに出現する部分文字列を探せ
最初に入力される整数Tは一致する部分文字列数を表している
入力
2
hello
world
hi
world
出力
YES
NO
'hello'と'world'は'l'と'o'の2ヶ所が一致しているためにYESと出力され、'hi'と'world'は
一つも一致箇所がないため(2と入力しているので1個だけ一致箇所があったとしても)
NOと出力される
0654デフォルトの名無しさん
2015/08/29(土) 05:43:02.09ID:yMiYELYHhttp://ideone.com/doNujI
C++。いっちばーん。今日は調子がいいから短いコードが書けた。
0655デフォルトの名無しさん
2015/08/29(土) 06:08:55.23ID:wfPnBoUA@Mathematica
http://ideone.com/3Q7858
0656デフォルトの名無しさん
2015/08/29(土) 10:52:38.92ID:WkkW5Zl4cl-lib
(defun f (n fn)
(cl-loop for i from 1 below n if (funcall fn i) sum i))
f
(f 10 (lambda (n) (or (= (% n 3) 0) (= (% n 5) 0))))
23
(f 1000 (lambda (n) (or (= (% n 3) 0) (= (% n 5) 0))))
233168
0657デフォルトの名無しさん
2015/08/29(土) 11:46:09.20ID:NDR2mEwvDim a As String
Dim b As String
Dim i As Integer
Dim j As Integer
Dim n As Integer
Dim m As Integer
Input m:Input a:Input b
n= 0
For i = 1 To Len(a)
For j= 1 To Len(b)
If Mid(a,i,1)=Mid(b,j,1) And Mid(a,i,1)<>" " Then
Mid(a,i,1)=" "
Mid(b,j,1)=" "
n = n + 1
EndIf
Next
Next
If n=m Then Print "YES" Else Print "NO" End If
一般化してみました。nと文字列a,bを入力します。
? 2
? hello
? world
YES
2
hi
world
NO
0658デフォルトの名無しさん
2015/08/29(土) 12:04:46.74ID:WkkW5Zl4(require 'cl-lib)
cl-lib
(defun make-substring-set (str)
(let (l)
(cl-loop for s from 0 to (length str) do
(cl-loop for e from (1+ s) to (length str) do (push (substring str s e) l)))
(cl-remove-duplicates l :test #'string=)))
make-substring-set
(defun f (T A B)
(let ((As (make-substring-set A))
(Bs (make-substring-set B)))
(if (= (length (cl-mapcan #'(lambda (s) (when (cl-find s As :test #'string=) (list s))) Bs)) T)
'YES 'NO)))
f
(let ((T 2) (A "hello") (B "world"))
(f T A B))
YES
(let ((T 2) (A "hi") (B "world"))
(f T A B))
NO
(let ((T 1) (A "o") (B "oxo"))
(f T A B))
YES
0659デフォルトの名無しさん
2015/08/29(土) 13:30:27.00ID:xBONT5Ep| fn |
fn := [:m :pairs |
| subsOf |
subsOf := [:str | (1 to: str size) inject: Set new into: [:set :len |
str combinations: len atATimeDo: [:subStr | set add: subStr copy]. set]].
pairs pairsCollect: [:s1 :s2 | ((subsOf value: s1) intersection: (subsOf value: s2)) size = m]
].
fn value: 2 value: #('hello' 'world' 'hi' 'world') "=> #(true false) "
0660デフォルトの名無しさん
2015/08/29(土) 18:11:32.02ID:LqdW8bvif =: 4 : 0
;('NO';'YES'){~ x <: (([:+/+./) <. [:+/+./"1) =/&>/y
)
2 f 'hello';'world'
YES
2 f 'hi';'world'
NO
2 f 'aaa';'aaaa'
YES
2 f 'world';'hello'
YES
0661デフォルトの名無しさん
2015/08/30(日) 01:17:36.39ID:/y7LwmGS2 f 'aaa', 'aaaa'
の場合、substringは
aaa の場合
a
aa
aaa
となり、aaaaの場合
a
aa
aaa
aaaa
となります。
そうすると、この二つのstringで一致するものは、
a
aa
aaa
と3個になり、2個ではありませんから、YESではなくて、NOと出力すべきではないですか。
0662デフォルトの名無しさん
2015/08/30(日) 07:15:13.64ID:/y7LwmGSSubstringの説明は
https://www.hackerrank.com/challenges/two-strings/topics/string-basics
にあります
0663デフォルトの名無しさん
2015/08/30(日) 07:56:04.83ID:qggTaQbaなんか見当はずれのコドみたいなので
>>660はとりさげます
0664デフォルトの名無しさん
2015/08/30(日) 23:33:46.86ID:aj+QsKaJf(123422343234) -> 1234億2234万3234
f(012342234) -> 1234万2234
桁は京まで対応すること。
以下のオプションは取捨選択自由です。
1. カンマの挿入
f(123422343234) -> 1,234億2,234万3,234
f(12342234) -> 1,234万2,234
2. 切り捨ての指定
f(123422343234, 0) -> 1,234億2,234万3,234
f(123422343234, 1) -> 1,234億2,234万
f(123422343234, 2) -> 1,234億
0665デフォルトの名無しさん
2015/08/31(月) 06:12:39.24ID:BuFncqM8http://ideone.com/ze30qD
C++。イデオンだとSig11で落ちる。なぜじゃー。Orz
オプションはやってない。
0666デフォルトの名無しさん
2015/08/31(月) 06:25:41.82ID:/q7V3tHFhttp://ideone.com/hbL5uc
数値バージョン、4桁の京を扱えない
http://ideone.com/gYlwTH
文字列バージョン、4桁の京も大丈夫
0667デフォルトの名無しさん
2015/08/31(月) 06:26:01.89ID:yqA7xXJ+@Mathematica
http://ideone.com/57cmds
※分かりやすいように関数名を変えています。
0668デフォルトの名無しさん
2015/08/31(月) 06:39:17.56ID:iqkJ/hRFhttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11149721076
0669デフォルトの名無しさん
2015/08/31(月) 07:03:04.72ID:OqMtrQmZ0670デフォルトの名無しさん
2015/08/31(月) 11:34:48.22ID:8CZHcZuvMinGWのg++でコンパイルしたら、
'unit_64_t' is not a member of 'std'
というエラーメッセージが出てコンパイルできませんでした。
このエラーを回避する方法はありますか
0671デフォルトの名無しさん
2015/08/31(月) 12:05:11.18ID:44vWBFtj#include <cstdint>
0672デフォルトの名無しさん
2015/08/31(月) 14:11:30.14ID:5pWQowlORuby
関数じゃなくて標準入力標準出力でやってしまった
オプション非対応
極まで対応
それ以上は単位が2文字以上で桁が8桁ずつになるから面倒(特に後者)なのでやめた
# coding:utf-8
scale = "万億兆京垓杼穣溝澗正載極"
num = gets.to_i.to_s
scale.length.times{|i|
unless (i+1)*5 > num.length
num = num.insert(-(i+1)*5,scale[i])
end
}
puts num
0673デフォルトの名無しさん
2015/08/31(月) 14:55:13.89ID:BuFncqM8<cstdint>はコードに入ってるんだが、なんでコンパイルできないかなぁ。よくわからん。
っていうか、なんでランタイムエラーで落ちるのかサッパ解らん。
VS2015コミュニティで開発してるんだが、それでは問題なく動いてる。
な ぜ だ − Orz
一応検索したらこっちの不具合ではないっぽい記述を発見したので保留。
0674デフォルトの名無しさん
2015/08/31(月) 15:10:03.71ID:XMVdTen+面白そうだからやってみたけど、真面目にやらないと収束しないなこりゃ
http://ideone.com/3crdiP
0675デフォルトの名無しさん
2015/08/31(月) 16:20:52.21ID:8CZHcZuvMinGW g++でコンパイルした時に出るエラーメッセージです。
プログラム名は"odai664.cpp"です
#error This file requires compile and library support for the \
odai664.cpp:10:22; error: 'unit64_t' is not a member fo 'std'
std::string MakeHoge(std::unit64_t N) {
odai664.cpp:10:39: error: expexted ',' or '; before '{' token
std::string MakeHoge(std::unit64_t N)
0676デフォルトの名無しさん
2015/08/31(月) 17:03:22.54ID:BuFncqM8さっぱりやね。標準のライブラリの範囲でやってるから怒られるはずがないんだけど、パス通ってる?
0677片山博文MZ ◆T6xkBnTXz7B0
2015/08/31(月) 17:05:31.30ID:l/+TTZEKunsigned int 64-bit type
だから
uint64_tだよ
0678デフォルトの名無しさん
2015/08/31(月) 18:00:19.16ID:dZB28jlSf =: 3 : 0
if. y = 0 do.
0
else.
a =. (5 # 10000) #: y
; (* a) # a (<@,&":)"0 ucp '京兆億万 '
end.
)
f 1234億2234万3234
1234億2234万3234
f 100000000000000039x
10京39
0679デフォルトの名無しさん
2015/08/31(月) 18:12:39.09ID:dZB28jlS実行結果コピー失敗した
f 123422343234x
1234億2234万3234
でした
0680デフォルトの名無しさん
2015/08/31(月) 19:22:57.92ID:yqA7xXJ+あんたすげぇなw
0681デフォルトの名無しさん
2015/08/31(月) 21:01:55.00ID:dZB28jlSsubString := method(s,
r:=list
for(i, 0, s size - 1,
for(j, i + 1, s size,
r push(s slice(i, j))
)
)
r unique
)
f := method(T, A, B,
if(subString(A) intersect(subString(B)) size == T, "YES", "NO")
)
Io> f(2,"hello","world")
==> YES
Io> f(3,"hello","look")
==> YES
0682デフォルトの名無しさん
2015/08/31(月) 23:09:29.18ID:MGeyNwdClet sub s =
let m = String.length s - 1
Set [for i in 0..m do for j in i..m -> s.[i..j]]
let f n a b = printfn "%s" <| if Set.intersect (sub a) (sub b) |> Set.count = n then "YES" else "NO"
f 2 "hello" "world" // YES
f 2 "hi" "world" // NO
f 1 "o" "oxo" // YES
f 3 "aaa" "aaaa" // YES
f 3 "hello" "look" // YES
0683デフォルトの名無しさん
2015/09/01(火) 02:01:57.35ID:qRUH881v(cl-defun f (s &key comma (truncate 0))
(let* ((aaa (let ((x (string-match "[^0]" s))) (if x (substring s x) "0")))
(bbb (length aaa))
(ccc (* (ceiling (/ (float bbb) 4)) 4))
(ddd (format (format "%%%ds" ccc) aaa))
(eee (cl-loop for i from 0 below ccc by 4 collect (substring ddd i (+ i 4))))
(fff (mapcar #'(lambda (x) (if (cl-find #x20 x) (remove #x20 x)
(if (string= x "0000") "" (let* ((i (string-match "[^0]" x)) (y (if i (substring x i) x)))
(if (= (length y) 4) (concat (substring y 0 1) (if comma "," "") (substring y 1)) y))))) eee))
(ggg (reverse fff))
(hhh (cl-subseq ggg truncate))
(iii '("" "万" "億" "兆" "京"))
(jjj (cl-subseq iii truncate))
(kkk (cl-mapcan #'(lambda (a b) (if (string= b "") nil (list a b))) jjj hhh)))
(apply #'concat (reverse kkk))))
f
(f "123422343234") "1234億2234万3234"
(f "012342234") "1234万2234"
(f "123422343234" :comma t) "1,234億2,234万3,234"
(f "12342234" :comma t) "1,234万2,234"
(f "123422343234" :comma t :truncate 0) "1,234億2,234万3,234"
(f "123422343234" :comma t :truncate 1) "1,234億2,234万"
(f "123422343234" :comma t :truncate 2) "1,234億"
0684デフォルトの名無しさん
2015/09/01(火) 10:34:27.90ID:2zAmQ8cX| fn |
fn := [:n :m |
| out units |
self assert: (n isInteger and: [n > 0] and: [n < 1e20]).
units := #('' 万 億 兆 京) readStream.
out := OrderedCollection new.
[n = 0 or: [units atEnd]] whileFalse: [
| val unit |
val := n \\ 1e4. n := n // 1e4.
unit := units next.
((m := m - 1) < 0 and: [val ~= 0]) ifTrue: [out addFirst: val asStringWithCommas, unit]].
out concatenation as: String
].
fn value: 123422343234 value: 0. "=> '1,234億2,234万3,234' "
fn value: 123422343234 value: 1. "=> '1,234億2,234万' "
fn value: 123422343234 value: 2. "=> '1,234億' "
fn value: 100000000000000039 value: 0. "=> '10京39' "
0685デフォルトの名無しさん
2015/09/01(火) 18:06:59.50ID:2ClwOalofrom functools import reduce
f = (lambda num, comma=False, round=0: reduce((lambda cm: (lambda fmt: (lambda
tup, uni: (lambda q, rnd, acc: (lambda n, m: (n, rnd-1, acc) if rnd > 0 else
((n, 0, fmt.format(m, uni, acc)) if m else (n, 0, acc)))(*divmod(q, 10000)))
(*tup)))('{:,d}{}{}' if cm else '{}{}{}'))(comma), ['', '万', '億', '兆', '京'
], (num, round, ''))[2])
print(f(123422343234))
print(f(123422343234, comma=True))
print(f(123422343234, round=1))
0686デフォルトの名無しさん
2015/09/01(火) 18:12:53.81ID:uqK6kTn6お題でローカルPCでこれらを行うやつ作ってくれ。
windowsのファイル重複検索でいまだにUnDupというソフトを使ってる。ユニコード非対応で数が多いと動作不安定になる。
0687デフォルトの名無しさん
2015/09/01(火) 19:20:48.31ID:uqK6kTn6すでにそれは作ってあって大会も開催済みだった。
人狼知能サーバ | Artificial Intelligence based Werewolf
http://www.aiwolf.org/server/#comment-167
[CEDEC2015]人工知能、「人狼」知能エージェントが「人狼」で戦う人狼知能大会が開催!
http://www.gpara.com/infos/view/26890
0688デフォルトの名無しさん
2015/09/01(火) 19:29:08.01ID:MVA2NaoWFileMany使えばどう?
C#x64版だけど一度も落ちた事がない
0689デフォルトの名無しさん
2015/09/02(水) 04:57:53.68ID:m4hBDGn9http://peace.2ch.net/test/read.cgi/tech/1434079972/9
0690デフォルトの名無しさん
2015/09/02(水) 11:54:23.73ID:RN6F+W1dカンマの位置おかしくね?
0691655
2015/09/03(木) 05:55:01.65ID:4NI0YG0L@Mathematica
http://ideone.com/923Sls
※Substring の解釈を間違っていたので書き直しました。
0692デフォルトの名無しさん
2015/09/03(木) 08:13:01.79ID:Hq1TyWtWhttp://ideone.com/h9BlKP
fの引数には文字列、内部でbig.Intを使うことで京まで実装
0694デフォルトの名無しさん
2015/09/03(木) 09:33:37.13ID:2z67PNJX0695デフォルトの名無しさん
2015/09/03(木) 09:40:36.27ID:BYmbupPqプログラミングコンテストにすらハブられるよ
そんなんだから無職なんだろうけどな
0696デフォルトの名無しさん
2015/09/03(木) 19:46:12.06ID:HDK0Xx130697デフォルトの名無しさん
2015/09/04(金) 01:34:34.38ID:ErYOyNSO年だのぉ
チンコもなかなか立たないし
わははは
0698デフォルトの名無しさん
2015/09/04(金) 11:48:19.76ID:60C8P18NNQueens問題を解け
N=16まで求めよ
また、N毎の時間も計測せよ
ユニーク解については考慮しなくてもよい
0699デフォルトの名無しさん
2015/09/05(土) 05:11:15.58ID:pNQf4xq/C#
http://ideone.com/12sLAy
N=16はideone.comでは残念ながらタイムアウトしてしまう
手持ちの処理系では8秒ほどで求まる
それにしてもこれをC++に書き直してもそんなに速くならない事に驚き
新しいJITコンパイラは優秀
0700デフォルトの名無しさん
2015/09/05(土) 06:02:46.91ID:bMqKfWg+http://peace.2ch.net/test/read.cgi/tech/1434079972/11
>>699
爆速だ‥
0702デフォルトの名無しさん
2015/09/05(土) 08:37:14.95ID:dxdGb8xg0703デフォルトの名無しさん
2015/09/05(土) 08:58:10.81ID:bk65bvoQ皆答えてる奴がいるのに一人だけ暴れるとかキチガイかよ
それに日本語圏では4桁と3桁の間にカンマを入れるのになぜ英語で読むんだ?
頭おかしいのか?
0704デフォルトの名無しさん
2015/09/05(土) 09:54:03.65ID:FYG0oxrbそれはQZの思考過程がこうなってるからなんだよ
普通の人が解答を間違えた場合:「済みません間違えました」
QZが解答を間違えた場合:「俺は間違ってない。間違ってるのは出題の方だ」←実際は間違ってばかりいる
自己愛性パーソナリティ障害特有の思考回路
捏造した歴史を信じこんで真実の歴史から目をそむけているどこかの特亜人そっくりですなあ
ニンニクくさー
0705デフォルトの名無しさん
2015/09/05(土) 11:36:42.88ID:u8tdzSFZプログラムだけでなく、15Queenの場合の配置の一例を表示して
もらえないでしょうか。
0706デフォルトの名無しさん
2015/09/05(土) 11:36:50.97ID:H3Bu+jcQGoogle Code Jamより
https://code.google.com/codejam/contest/32016/dashboard#s=p0
最小スカラー積
次の2つのベクトルが与えられているとします:v1=(x1,x2,...,xn)とv2=(y1,y2,...,yn)
これらのベクトルのスカラー積は1個の数字で、x1y1+x2y2+...+xnynとして計算されます
各々のベクトルの要素は任意に並べ替えても構わないとします
入力ファイルの最初の行は、テストケース数(整数)Tが含まれています
各テストケースは、最初の行は整数nを含んでいます。次の二行は、v1とv2それぞれの座標が与えられます
出力は、各々のテストケースに対して
Case #X: Y
のようになります
ここでXはテストケース番号、Yは与えられたベクトルの全ての順列の最小スカラー積です
0707デフォルトの名無しさん
2015/09/05(土) 11:39:13.55ID:H3Bu+jcQ小さなデータセット
T = 1000
1 ≤ n ≤ 8
-1000 ≤ xi, yi ≤ 1000
大きなデータセット
T = 10
100 ≤ n ≤ 800
-100000 ≤ xi, yi ≤ 100000
2種類のデータセットがあるのは、それぞれの得点が異なるからで、どちらを選択されても構いません
例
入力
2
3
1 3 -5
-2 4 1
5
1 2 3 4 5
1 0 1 0 1
出力
Case #1: -25
Case #2: 6
0708デフォルトの名無しさん
2015/09/05(土) 11:43:11.93ID:iR2NaoHp横槍だけど、お題はNQueens問題であり、ユニーク解(回転したり反転すると重なる重複解)
を考慮しない置き方の数を求めるものだ
実際の配置を出力すると膨大なデータになり、時間を測定するという題意に背く事になる
この場合時間の測定は必要なくなるだろ
そんなプログラムはどこにでも転がっている
0709デフォルトの名無しさん
2015/09/05(土) 11:54:21.61ID:i6kEld9Sそれだったらどちらでも一緒だし、そうでなければユニーク解を求めないとダメでは?
一個求めただけでもいいことにならないか?
0710デフォルトの名無しさん
2015/09/05(土) 11:58:23.07ID:i6kEld9Shttp://www.ic-net.or.jp/home/takaken/nt/queen/index.html
0711デフォルトの名無しさん
2015/09/05(土) 11:59:34.78ID:iR2NaoHphttp://deepgreen.game.coocan.jp/NQueens/sig-GI26-11.pdf
これでも読めや
題意では"ユニーク解は考慮しなくてもよい"となっている
それにケチを付けるんならてめえがユニーク解を考慮したプログラムをまず書いてから言え
0712デフォルトの名無しさん
2015/09/05(土) 12:02:22.49ID:iR2NaoHpちゃんと最初に"解の個数を求める"となってるね(・∀・)
ユニーク解を考慮した解の個数を求めるべきならお題にちゃんと「ユニーク解を考慮せよ」
と書いてあるはずだろ
「ユニーク解は考慮しなくてもよい」と書いてあるんだぞ
日本語読めないんでちゅか?
0713デフォルトの名無しさん
2015/09/05(土) 12:09:06.35ID:i6kEld9Sどちらもユニーク解だが。どれも同一と見なすかで解個数が違ってくるからユニークのほうがいいだろ。
鏡像は別で、回転は同一とみなす人をいるかもしれない。
PAA の概要
N=2n の場合、 N x N の N クイーン問題を 4 分割した部品(n x n の部分解)から以下の手順で合成する。
1) A と B から、2 分割した部品(n x 2n の部分解)AB を生成(上半分の合成)
2) C と D から、2 分割した部品(n x 2n の部分解)CD を生成(下半分の合成)
3) AB と CD から全体解を生成
なお、解の生成は unique 解のみに限定し、全数解は式 1 により求める。
高速化実現のポイントは、
・結合処理の高速化(特に、キャッシュミスの削減)
・代表解の判定条件による集合積演算の軽減 にある。
http://deepgreen.game.coocan.jp/NQueens/sig-GI26-11.pdf
Nクイーン問題(N Queens Problem)
ユニーク解から全解への展開
これまでの考察はユニーク解の個数を求めるためのものでした。
全解数を求めるにはユニーク解を求めるための枝刈りを取り除いて全探索する必要があります。
したがって探索時間を犠牲にしてしまうことになります。そこで「ユニーク解の個数から全解数を導いてしまおう」という試みが考えられます。
http://www.ic-net.or.jp/home/takaken/nt/queen/index.html
0714デフォルトの名無しさん
2015/09/05(土) 12:11:11.74ID:iR2NaoHpだからそこまでお題に背きたいんだったら改めて"ユニーク解を考慮せよ"という新しいお題を立てろ
もうこれ以上お前と議論しても無駄だ
0715デフォルトの名無しさん
2015/09/05(土) 12:11:53.03ID:i6kEld9S0716デフォルトの名無しさん
2015/09/05(土) 12:39:53.44ID:l/Jp8teCオセロの任意の局面・手盤からの最短全滅手を
求める(無い場合は無いと出力)
入力データはキーボードでもテキストファイルでも
可能
最短全滅手はすべての石が黒・白どちらかの色に
なってしまうこと。
局面は、石が連続して置かれているという条件で
あれば不能局面でも可
(ちなみに解答は知らない)
0717デフォルトの名無しさん
2015/09/05(土) 12:41:02.73ID:l/Jp8teC石が連結してという表現のほうが
わかりやすいか....
0718デフォルトの名無しさん
2015/09/05(土) 12:47:13.51ID:a9CPEVg5お前が全滅すればいいのにな
完全に論破されたからと言ってまず誰も解答が付かない問題を出すとかガキかよ
0719デフォルトの名無しさん
2015/09/05(土) 12:54:53.58ID:nIE3Kuq7キーワード引数commaの値が689の場合は>>689と同様に動作するようになりました。
(cl-defun f (s &key comma (truncate 0))
(let* ((aaa (let ((x (string-match "[^0]" s))) (if x (substring s x) "0")))
(bbb (length aaa))
(ccc (* (ceiling (/ (float bbb) 4)) 4))
(lll (if (eq comma 689)
(let ((c 0))
(cl-map 'string (lambda (x) x)
(reverse (cl-mapcan #'(lambda (x) (prog1 (if (and (/= x 32) (/= c 0) (= (% c 3) 0)) (list ?, x) (list x)) (unless (= x 32) (incf c))))
(reverse (string-to-list aaa))))))
(format (format "%%%ds" ccc) aaa)))
(mmm (if (eq comma 689)
(split-string (let ((c 0))
(cl-map 'string (lambda (x) x)
(reverse (cl-mapcan #'(lambda (x) (prog1 (if (and (/= c 0) (= (% c 4) 0)) (list 10 x) (list x)) (unless (= x ?,) (incf c))))
(reverse (string-to-list lll)))))) "\n")
(cl-loop for i from 0 below ccc by 4 collect (substring lll i (+ i 4)))))
(fff (mapcar #'(lambda (x) (if (cl-find #x20 x) (remove #x20 x)
(if (string= (remove ?, x) "0000") "" (if (eq comma 689) x (let* ((i (string-match "[^0]" x)) (y (if i (substring x i) x)))
(if (= (length y) 4) (concat (substring y 0 1) (if (eq comma t) "," "") (substring y 1)) y)))))) mmm))
(ggg (reverse fff))
(hhh (cl-subseq ggg truncate))
(iii '("" "万" "億" "兆" "京"))
(jjj (cl-subseq iii truncate))
(kkk (cl-mapcan #'(lambda (a b) (if (string= b "") nil (list a b))) jjj hhh)))
(apply #'concat (reverse kkk))))
f
(f "1234567890" :comma t) "12億3,456万7,890"
(f "1234567890" :comma 689) "1,2億34,56万7,890"
0720デフォルトの名無しさん
2015/09/05(土) 15:47:27.36ID:u8tdzSFZ私は15Queenの一つの例を求めているだけです、
コンピュータ内で例えば行列の形で配置を求めているならば、
その一例を表示することはできないでしょうか。
たとえば、すべての配置の数を求めた後で、その最後に求めた
配置を表示するということならば、時間はあまり掛からないと思いますが。
プログラムだけを提示されてもその言語を使える環境にないものに
とっては、このプログラムの正しさを検証するてだてがありませんので。
0721デフォルトの名無しさん
2015/09/05(土) 15:52:40.59ID:1TQgpEDyお前どんだけしつこいんだよ
じゃお前の書いたプログラムには全くバグがないのか
仕事で書いたプログラムに不具合が見つかっても「仕様です」と言って直さないつもりか
この問題は配置を求める問題ではない
「解の個数」さえ求めればそれでいいんだ
ビットマップを使った解法は外人が世界で一番最初に考案したそうなんでこの人に
「あなたのプログラムは本当に正しいのでしょうか。配置を表示できますか。」と質問を
英語で送ってみなよ
http://jsomers.com/nqueen_demo/nqueens.html
この人がそうだ
この人の書いたプログラムと本質的には何ら変わらない
もっと速いアルゴリズムもあるが長くなるので端折っただけ
お前を見てるとお前は人に嫌われる達人だなあと心から感心する
0722デフォルトの名無しさん
2015/09/05(土) 16:13:25.93ID:1TQgpEDyあ、それとお前頭が悪くて人のプログラムを読み解く力がなさそうだから教えといてやるよ
利き筋のみをチェックするのと配置も同時に求めるのは別の問題だ
どう読んだらこのプログラムの中に配置情報まで入っていると思えるのかそちらの方が不思議なんだが
いくらでも配置も覚えておくプログラムは書けるぞ
むしろこのプログラムは利き筋のみチェックして配置を求めるのを省いた分だけ速くなってるのだと
気付けないのかなあ
真剣に一度精神科で診てもらう事を検討しろよ
もう遅いと思うけど
0723デフォルトの名無しさん
2015/09/05(土) 17:13:54.12ID:H2DL4EyO醜いね
0725デフォルトの名無しさん
2015/09/05(土) 18:11:46.68ID:r36BFiK6ざっと主張を読むと、>>722は頭いいとおもうけどな
異論あるやついるの?
>>720
このこは、馬鹿というか精神病はいってるいうか、
「云々なだけです」
なんてヤバスギなんだぞ
本人わからんだろうけど
0726デフォルトの名無しさん
2015/09/05(土) 18:20:17.60ID:byXpZJ1D僕は>>699さんのコードを改竄して配置を表示するようにしてみたよ。
http://ideone.com/vkdR56
期待に応えられたかな???
0727デフォルトの名無しさん
2015/09/05(土) 21:22:45.11ID:pNQf4xq/どちらのテストケースも時間が掛かり過ぎるのでもっと小さなデータにしました
データは
http://pastebin.com/Xh6Xqza1
プログラムは(データを作るプログラムを含んでいます)
http://ideone.com/ERW0U4
これでこちらの環境ではReleaseモードで700ms前後です
こういうのはやはりC#は苦手なんですかね
すっきり書ける事は書けるんですが
<int>ではなくて<long>になっているのは、intでこれを実行すると大きなデータセットで
オーバーフローが出ちゃうからです
時間が掛かるのは多分順列で天文学的な場合の数になっちゃうからからなあ
0728デフォルトの名無しさん
2015/09/05(土) 21:33:50.27ID:OFlnC1Bs数列の範囲 (min, max) と表示数 (disp)、省略の基点 (spot) が以下の範囲内で与えられます。
(0 < min < max), (2 < disp), (min ≦ spot ≦ max)
min 1, max 3, disp 3, spot 1: (1) 2 3
min 1, max 3, disp 3, spot 2: 1 (2) 3
min 1, max 3, disp 3, spot 3: 1 2 (3)
min 1, max 4, disp 3, spot 2: 1 (2) ... 4
min 1, max 4, disp 3, spot 3: 1 ... (3) 4
min 1, max 10, disp 5, spot 1: (1) 2 3 4 ... 10
min 1, max 10, disp 5, spot 2: 1 (2) 3 4 ... 10
min 1, max 10, disp 5, spot 3: 1 2 (3) 4 ... 10
min 1, max 10, disp 5, spot 4: 1 ... 3 (4) 5 ... 10
min 1, max 10, disp 5, spot 5: 1 ... 4 (5) 6 ... 10
min 1, max 10, disp 5, spot 6: 1 ... 5 (6) 7 ... 10
min 1, max 10, disp 5, spot 7: 1 ... 6 (7) 8 ... 10
min 1, max 10, disp 5, spot 8: 1 ... 7 (8) 9 10
min 1, max 10, disp 5, spot 9: 1 ... 7 8 (9) 10
min 1, max 10, disp 5, spot 10: 1 ... 7 8 9 (10)
min 128, max 256, disp 7, spot 192: 128 ... 190 191 (192) 193 194 ... 256
disp が偶数の場合の spot の偏り、
min 1, max 10, disp 4, spot 8: 1 ... 7 (8) ... 10
min 1, max 10, disp 4, spot 9: 1 ... 8 (9) 10
disp が大きい場合の振る舞い、
min 1, max 3, disp 5, spot 3: 1 2 (3)
min 1, max 3, disp 5, spot 3: error. disp out of range
() や ... などの装飾は自由です。
0729デフォルトの名無しさん
2015/09/05(土) 21:57:37.63ID:OFlnC1Bs(2 < disp) は(0 < disp)でもおkです
0730デフォルトの名無しさん
2015/09/05(土) 22:22:12.08ID:OFlnC1Bsやっぱり省略がアレになるので(2 < disp)に訂正します
0731デフォルトの名無しさん
2015/09/06(日) 00:53:28.75ID:3aEa3HTVhttp://ideone.com/cztw9F
spotから表示する数を求めていく方法
0732デフォルトの名無しさん
2015/09/06(日) 02:03:11.12ID:labNDWrY0733デフォルトの名無しさん
2015/09/06(日) 04:26:44.16ID:3aEa3HTVhttp://ideone.com/7NJGAS
>>731と同じアプローチ、ゴリ押しで書き下した
0734デフォルトの名無しさん
2015/09/06(日) 06:07:10.46ID:laHESI+6QZの自己承認欲求が強すぎるよな
完全に精神的に病気だな
炎上学習法をやるのはQZ一人しかいない
0735デフォルトの名無しさん
2015/09/06(日) 08:08:20.90ID:/Fu+tBiSちょっと時間がかかりすぎですね
無理にIEnumerable<T>を返してforeachするより
http://d.hatena.ne.jp/JAPLJ/20090123/1232716837
こういう奴の方が速いかもしれないんで試してみてください
ちなみにVS2015 C++で>>727のプログラムを書き直したのが
http://ideone.com/5bUOrW
>>727のデータでこちらで6msしか掛かりませんのでどこかに不自然に
時間がかかりすぎていると思います
またこのプログラムはおっしゃる通りどこかでベクトルの大きさが大きいものが
1個でも入るとそこで引っかかります
0736デフォルトの名無しさん
2015/09/06(日) 08:17:25.46ID:3aEa3HTVhttp://ideone.com/XVUHYj
>>731と同じアプローチ、再代入ましまし
0737デフォルトの名無しさん
2015/09/06(日) 08:23:56.62ID:pZj7Wd8c汚Haskell
http://ideone.com/0D45kT
0738デフォルトの名無しさん
2015/09/06(日) 12:29:03.84ID:RC4omDg7http://ideone.com/qW7Q0U
0739デフォルトの名無しさん
2015/09/06(日) 15:06:47.52ID:mows7ZZ0(cl-defun f (min max disp spot &key error)
(when (< (1+ (- max min)) disp)
(if error (error "error. disp out of range") (setq disp (1+ (- max min)))))
(let* ((aaa (let (l) (setq l (cl-adjoin min l)) (setq l (cl-adjoin max l))
(let ((i 0))
(while (< (length l) disp)
(let ((y (let ((x (ceiling (/ (float i) 2)))) (+ spot (if (oddp i) (- x) x)))))
(when (and (<= min y) (<= y max))
(setq l (cl-adjoin (let ((x (ceiling (/ (float i) 2)))) (+ spot (if (oddp i) (- x) x))) l))))
(incf i)))
(sort l (lambda (a b) (< a b)))))
(bbb (let ((p (1- min)))
(cl-loop for n in aaa collect (prog1 (list (if (= n (1+ p)) "" "... ") (format (if (= n spot) "(%d)" "%d") n)) (setq p n)))))
(ccc (cl-reduce (lambda (a b) (concat a " " b)) (mapcar (lambda (x) (concat (nth 0 x) (nth 1 x))) bbb))))
ccc))
f
(f 1 3 3 1) "(1) 2 3"
(f 1 3 3 3) "1 2 (3)"
(f 1 4 3 2) "1 (2) ... 4"
(f 1 4 3 3) "1 ... (3) 4"
(f 1 10 5 1) "(1) 2 3 4 ... 10"
(f 1 10 5 3) "1 2 (3) 4 ... 10"
(f 1 10 5 4) "1 ... 3 (4) 5 ... 10"
(f 1 10 5 10) "1 ... 7 8 9 (10)"
(f 128 256 7 192) "128 ... 190 191 (192) 193 194 ... 256"
(f 1 10 4 8) "1 ... 7 (8) ... 10"
(f 1 10 4 9) "1 ... 8 (9) 10"
(f 1 3 5 3) "1 2 (3)"
(f 1 3 5 3 :error t) "error. out of range"
0740デフォルトの名無しさん
2015/09/06(日) 15:25:31.21ID:XK9v3oN2http://ideone.com/hozAgO
0741デフォルトの名無しさん
2015/09/06(日) 15:53:00.71ID:XK9v3oN2http://www.ic-net.or.jp/home/takaken/nt/queen/ を移植。
ideone.com で N=12 まで。
http://ideone.com/Jr62ZC
0742デフォルトの名無しさん
2015/09/06(日) 21:15:29.55ID:QKeqN0i2http://ideone.com/x7wphz
C++。ギブアップ。細かい仕様が対応できなかった。
表示回りっていつも適当だから、ここまで手の込んだのは無理やったわ。
GOTO使ってるあたりに苦悩を感じてくれ。
算数できなくなってることに絶望した。
0743デフォルトの名無しさん
2015/09/06(日) 23:58:23.31ID:3aEa3HTVhttp://ideone.com/u5zN0Z
原始的に配列へ詰め込んでソート、文字列の生成は断念した
0744デフォルトの名無しさん
2015/09/07(月) 03:04:02.94ID:QAzFwx2+http://ideone.com/TYc7SA
0745デフォルトの名無しさん
2015/09/07(月) 03:04:53.70ID:QAzFwx2+http://ideone.com/SPp4v5
0746デフォルトの名無しさん
2015/09/07(月) 03:43:16.07ID:hx62h88Lhttp://ideone.com/IygETy
0747デフォルトの名無しさん
2015/09/08(火) 00:20:53.77ID:qsWudAV2省略の基点というのがよくわかりません
0748デフォルトの名無しさん
2015/09/08(火) 00:24:13.57ID:HV2JZhb0SpotLightを中心点に表示を要求されるのでここを目印にDISP-2個位表示させるのが今回のお題。
0749デフォルトの名無しさん
2015/09/08(火) 05:55:05.13ID:byflMgx0ソート済み配列などに対し、falseを返すまで繰り返し適用することで
重複なく全順列を列挙できる破壊的操作を行う関数 next_permutation を
定義せよ。
文字列 "aaabc" に対する使用例(C++erはネタバレ注意):http://ideone.com/y1LsqX
- 標準またはそれに準ずるライブラリに同等機能がある言語の場合は、その使用例を提示するだけでよい。
もちろん、自力での再実装にこだわってみるのもよい。
- 配列などに対し、その部分のみに適用できるようにはしなくてよい。
- 言語仕様で非破壊操作がしにくい言語の場合は、有限リストやストリーム、
ジェネレータなどを生成する実装に代えてもよい。
0750デフォルトの名無しさん
2015/09/08(火) 07:05:29.36ID:iUE7XWFn×非破壊操作がしにくい → ○破壊操作がしにくい
0751デフォルトの名無しさん
2015/09/08(火) 10:54:06.55ID:n5Qbp6yS引数を破壊的変更しないジェネレータ、要素がタプルになるのでfuncで加工する
import itertools
def next_permutations(seq, func=(lambda x: x)):
return map(func, sorted(set(itertools.permutations(seq))))
for a in next_permutations("aaabc", func=''.join):
print(a)
0752デフォルトの名無しさん
2015/09/08(火) 12:04:00.18ID:N3BcRQN+Miracle Five World Cup 〜 スカイゲスト
ミラクルファイブ今年に続いて、Othello World Cup 2014 でもミラクルファイブが正式競技として行われることが決まったようですね。
知ってる人は知っている、でもほとんどの人は知らないと思いますが、私、このスカイゲストの世界チャンピオンなんです。
ちなみに日本大会は現在三連覇しています。
で、残念なことに、現状ではネット上でこのスカイゲストをやれる環境が存在してないので、ささやかな興味を持ったとしても、
なかなか実際にプレイするところまでは行かないんですよね。だからそりゃぁ、なかなか普及してません。
そんなわけで(?)、ちょっとこのゲームのルールを軽く説明してみようかと。
http://www.othello.org/blog/miracle5-01.gif
http://blog.goo.ne.jp/othellojapan/e/ed589bdbd67ffdf48465fe5324094c5d?fm=rss
スカイゲストAIのアルゴリズム(評価関数編)
オセロの考案者である長谷川五郎氏が考案したボードゲームに、スカイゲスト(SkyGuest、テンゲストも同じルールっぽい)というものがあるのをご存知でしょうか?
大変面白いゲームなのですが、ネット上にこれをプレイできる環境がなかったので、AIを作成しました。
今のところ公開する予定はございませんが、ある程度の強さのものが出来上がったので、アルゴリズムの方を紹介したいと思います。
http://blog.livedoor.jp/dadada2003/
0753デフォルトの名無しさん
2015/09/08(火) 12:19:34.11ID:JhgINqf8http://ideone.com/P2GxKa
0754デフォルトの名無しさん
2015/09/08(火) 12:48:53.12ID:JhgINqf8Pythonって、すごくシンプルに書けて格好いいですね。
ただ、この実装だと、多要素だけど要素のほとんどが同じで簡単に返せる場合
(たとえば "aaaaaaaaaaaaaaaaaaaaaaaaaaaaab" とか)
にもかかわらず戻ってこなくなったりしませんか?
0755デフォルトの名無しさん
2015/09/08(火) 13:03:12.99ID:JcPY1iwaC#
http://ideone.com/S30yuu
0756デフォルトの名無しさん
2015/09/08(火) 16:46:37.82ID:HV2JZhb0すさまじいな。
俺C++の組み込みよく使うけど自作はさっぱりわからんぞ。
0757デフォルトの名無しさん
2015/09/08(火) 19:32:53.81ID:N3BcRQN+順列生成くらいは入門レベルかと。速度は別にして。
どんな経験者だよ。
0758デフォルトの名無しさん
2015/09/08(火) 19:52:51.45ID:HV2JZhb00759デフォルトの名無しさん
2015/09/08(火) 19:59:30.98ID:MMxN10T7ただし演算数、非演算数、ともに二桁以内な
0760デフォルトの名無しさん
2015/09/08(火) 20:35:18.17ID:WO1DF9qJ0761デフォルトの名無しさん
2015/09/08(火) 20:59:28.34ID:MMxN10T7javaやることにした
とりあえず スッキリわかるジャバジャバのKindle版注文した
ん?スレチだな
(*´σー`)ヘヘヘ
0762デフォルトの名無しさん
2015/09/09(水) 01:01:53.28ID:WxXYPcUnN=2 一意解=0 全解=0
N=3 一意解=0 全解=0
N=4 一意解=1 全解=2
N=5 一意解=2 全解=10
N=6 一意解=1 全解=4
N=7 一意解=6 全解=40
N=8 一意解=12 全解=92
N=9 一意解=46 全解=352
N=10 一意解=92 全解=724
N=11 一意解=341 全解=2680
N=12 一意解=1787 全解=14200
N=13 一意解=9233 全解=73712
N=14 一意解=45752 全解=365596
N=15 一意解=285053 全解=2279184
0763デフォルトの名無しさん
2015/09/10(木) 00:08:40.35ID:kopU2pqHhttps://projecteuler.net/problem=99
でも"project euler solutions 99"なんかでぐぐったら駄目ですよ
まあ似たようなコードになると思うけど
2^11と3^7のような指数形式で書かれた2つの数を比較するのは難しくありません
しかし、632382^518062>519432^525806であるのを確認するのは300万桁を超える
数字を含んでいるのではるかに困難でしょう
base_exp.txt(問題文をクリックしてください)は1000行を含む22KBのテキストで、
それぞれの行に基数と指数が対になっています
どの行の数が最大になるか決定してください
注:ファイル注の最初の二行は上記の例に示されたものです
0764デフォルトの名無しさん
2015/09/10(木) 00:10:08.60ID:kopU2pqHお題です
0765デフォルトの名無しさん
2015/09/10(木) 00:33:27.38ID:AxUmdUI61 1 1 (0[msec])
2 0 0 (0[msec])
3 0 0 (0[msec])
4 2 1 (0[msec])
5 10 2 (0[msec])
6 4 1 (0[msec])
7 40 6 (0[msec])
8 92 12 (0[msec])
9 352 46 (0[msec])
10 724 92 (16[msec])
11 2680 341 (0[msec])
12 14200 1787 (94[msec])
13 73712 9233 (499[msec])
14 365596 45752 (3011[msec])
15 2279184 285053 (19843[msec])
16 14772512 1846955 (140806[msec])
ネット回線からの割り込みが多かったので
コストは参考値
0766デフォルトの名無しさん
2015/09/10(木) 04:21:19.51ID:hMjmDO5x>>765
>>1
0767デフォルトの名無しさん
2015/09/10(木) 05:17:03.70ID:2byHSaL/関数の仕様を勘違いしていたのでやりなおし
>>754の指摘を参考に要素に重複があるとき計算を省略する
def next_permutations(iterable):
orig = tuple(iterable)
def recursive(seq, acc):
if not seq:
yield acc
elif orig[:len(acc)] <= acc:
for v in sorted(set(seq)):
newseq = seq[:]
newseq.remove(v)
yield from recursive(newseq, acc+(v,))
return recursive(list(iterable), ())
for a in next_permutations("aaabcaaabcaaabc"):
print(''.join(a))
0768デフォルトの名無しさん
2015/09/10(木) 11:55:20.61ID:0vTqxZ6Aすばらしい。GNU Smalltalk に移植してみました。(文字列のみ対応の手抜きで恐縮ですが…)
http://ideone.com/C35eG9
0769デフォルトの名無しさん
2015/09/10(木) 21:31:45.79ID:AToafzamhttps://ideone.com/6f6Fcc
0770デフォルトの名無しさん
2015/09/10(木) 22:15:18.95ID:Q2vaRfqDモロにカンニングですみませんが
http://ideone.com/G9TU4A
0771デフォルトの名無しさん
2015/09/11(金) 01:59:58.81ID:0Pjc40Dtuse 5.016;
use List::Util 'sum';
say sum grep {$_ % 5 == 0 or $_ % 3 == 0} 1..1000;
0772デフォルトの名無しさん
2015/09/11(金) 21:51:13.27ID:v7E2xSv/use 5.016;
sub next_permutations {
my %h;
sub fn {
my ($l, $p, @r) = @_;
defined $p ? map {[$p, @$_]} fn([], @$l, @r) : ([])
,
@r ? fn([@$l, $p], @r) : ()
}
map {$h{$_} = 1} keys {map {join('', @$_) => 1} fn [], @_};
keys %h
}
say for next_permutations split '', 'aaabc';
0773デフォルトの名無しさん
2015/09/11(金) 22:39:05.52ID:v7E2xSv/sub next_permutations {
sub fn {
my ($l, $p, @r) = @_;
defined $p ? map {[$p, @$_]} fn([], @$l, @r) : ([])
,
@r ? fn([@$l, $p], @r) : ()
}
keys {map {join('', @$_) => 1} fn [], @_};
}
say for next_permutations split '', 'aaabc';
これでええやん、つか破壊してないし、過剰仕様
しっか〜くw
0774デフォルトの名無しさん
2015/09/12(土) 14:21:20.66ID:9MDXYKkO元の並びがソートされている場合、
保持されている現在の並びを破壊しながらでも
ジェネレータみたいに呼び出される度に次の順列を
重複なく返すアルゴリズムが>749のお題の肝では?
0775デフォルトの名無しさん
2015/09/13(日) 19:11:57.62ID:dr5xNYTRお題に「生成される順列はソートせずとも辞書順に並ぶこと」って一言いれておけばよかったですね^^;
0776デフォルトの名無しさん
2015/09/13(日) 20:57:12.14ID:bLikZ+wLhttp://ideone.com/rSTdwr
引数はリスト限定で破壊的操作はしない、返り値で次の順列を返す
0777デフォルトの名無しさん
2015/09/13(日) 22:52:40.22ID:b32GJr7lhttps://ideone.com/WQrzaa
注:肝心な部分(comb, permute)はぐぐったサイトから無断で拝借しました
0778デフォルトの名無しさん
2015/09/14(月) 07:17:09.48ID:aQticbJR中身が見えない
0779デフォルトの名無しさん
2015/09/14(月) 20:25:46.47ID:Gwz4vSRghttps://ideone.com/bL9NOn
>>777からの変更点:
・いったん全パターンもつのをやっぱやめる
・細部のちょこちょこっとした改善
0780デフォルトの名無しさん
2015/09/15(火) 21:30:13.30ID:jovL9vh0「生成される順列はソートせずとも辞書順に並ぶこと」の意味が
「出力する行がsort済みの順番に並んでいる」順列という意味ならこうか:
use feature qw{:5.16};
use Data::Dump qw(dump);
sub next_permutation {
defined $_[1] and next_permutation(@_[1..$#_]) or
($_[0] lt $_[1]) and
do {
do {$i = $_
if $_[0] lt $_[$_]}
for 1..$#_;
@_[0, $i] = @_[$i, 0];
@_[1..$#_] = sort @_[1..$#_];
1 }
}
#@a = split '', 'aaabcaaabcaaabc'; # ←この入力はカラムがsort済みじゃねーしw
@a = split '', 'aaabc';
say join '', @a;
say join '', @a while next_permutation @a;
出力行ごとのカラムもソートされているという制限つきの順列生成なら
中のdoがif産業が一行になるかな。
つか、中のdo forも無名再帰で書くのがホンとは漢つーもんょ。
0781デフォルトの名無しさん
2015/09/15(火) 21:35:00.71ID:jovL9vh0入力行一行のカラムがソートされてたら、
出力行のカラムもソートされているという制限をつけたら
出力順列は入力と同じたった一行しか存在しない、
ふー危うくひっかかるところだったぜ。
つーことで上の方のほかの人の回答に間違っているのない?
0782デフォルトの名無しさん
2015/09/15(火) 21:46:18.62ID:jovL9vh0よく見てないけどw
'aaabcaaabcaaabc';の入力の並びに目が惑わされたワイ
じゃーな、ハゲっが。
0783デフォルトの名無しさん
2015/09/15(火) 22:10:44.77ID:jovL9vh0修正版:
use feature qw{:5.16};
sub next_permutation {
defined $_[1] and (next_permutation(@_[1..$#_]) or
($_[0] lt $_[1]) and
do {
do {$i = $_
if $_[0] lt $_[$_]}
for 1..$#_;
@_[0, $i] = @_[$i, 0];
@_[1..$#_] = sort @_[1..$#_];
1 })
}
#@a = split '', 'aaaaaaaaaaaaaaaabc';
@a = split '', 'aaabc';
say join '', @a;
say join '', @a while next_permutation @a;
0784デフォルトの名無しさん
2015/09/16(水) 00:38:04.82ID:zgtxEZCv左側の新しい項の入れ替えに移行し右側の並びを一式リセットするためのsortは
reversieでよいはず。これにより並べ替えのオーダーをNlogNからNに低減できる。
また項を入れかえる対象の要素を検索する繰り返しは、その項より大きくかつ最も小さい
値の要素を探すので、平均行程1/2で打ちって検索の計算量も半減することができる。
それから、もう少しコンパクトかつ可読性ある書き方ができるはず。
0785デフォルトの名無しさん
2015/09/16(水) 00:59:37.85ID:NuZWJDtshttps://ideone.com/GS9JrQ
カウント版と算出版と両方
カウント版で出した値じっくりながめると
9, 99, 999…っていう値の気配がしたので
それ中心に押したり引いたりしながら算出
なお、理屈はよくわかっていないもよう
0786デフォルトの名無しさん
2015/09/16(水) 01:04:42.91ID:zgtxEZCvsub next_permutation {
defined $_[1] and (next_permutation(@_[1..$#_]) or
($_[0] lt $_[1]) and
do {
for (1..$#_)
{$_[0] lt $_[$_] ? $i = $_ : last}
@_[0, $i] = @_[$i, 0];
@_[1..$#_] = reverse @_[1..$#_];
1 })
}
#@a = split '', 'aaabc'; # 'aaaaaaaaaaaaaaaabc';
@a = split '', '112334556';
say join '', @a;
say join '', @a while next_permutation @a;
こんな感じな。sortをreverseにしたとき、ぐっと速くなった。
0787デフォルトの名無しさん
2015/09/16(水) 05:12:59.25ID:TSIOTapphttp://ideone.com/KLJ3T1
0788デフォルトの名無しさん
2015/09/16(水) 07:10:31.01ID:2Yj1o+46http://ideone.com/dJjETu
Permutationインターフェースを実装すれば他の型でもできる
0789デフォルトの名無しさん
2015/09/16(水) 13:06:36.59ID:fQczy5Ycできればrubyかpythonで答えて頂けるとありがたいです。
お題
以下の様な数値群から、重複しない要素を使って任意の数値(例えば2360)に最も近い和を求めるにはどうしたら良いでしょう?
115,135,215,352,358,655,885,925,936,1250,1285,1620,1850
0790デフォルトの名無しさん
2015/09/16(水) 14:20:54.79ID:VfqLXb9I0791デフォルトの名無しさん
2015/09/16(水) 14:23:48.16ID:aL/dguIa任意の数値のアルゴリズム
0792デフォルトの名無しさん
2015/09/16(水) 15:06:27.46ID:VfqLXb9I0793デフォルトの名無しさん
2015/09/16(水) 16:09:16.80ID:9fL6Ueyi9個の秤に、幾らかのポテトチップスが載っていて、
その秤の中から、60g以上で、
最も少ない重さを計算して、袋詰めする
9個の秤の重さの合計を、sum9として、
1個の秤の重さを求めると、残り8個の秤の重さもわかる。
2個の秤の重さを求めると、残り7個の秤の重さもわかる。
3個の秤の重さを求めると、残り6個の秤の重さもわかる。
4個の秤の重さを求めると、残り5個の秤の重さもわかる
0794デフォルトの名無しさん
2015/09/16(水) 16:44:57.70ID:9fL6UeyiArray.combination
13個の数字の合計を、sum13として、
1個の数字を求めると、残り12個の数字の合計もわかる。
2個の数字の合計を求めると、残り11個の数字の合計もわかる。
.
.
6個の数字の合計を求めると、残り7個の数字の合計もわかる
つまり、6個までのすべての組合せを計算すればよい
0795デフォルトの名無しさん
2015/09/16(水) 17:54:44.06ID:slZMIjby> 以下のような
っていう部分はどう解釈すればいいの?
例に挙がってる程度の数であれば、
総当りでいいんじゃね?
これ↓と同質の問題ならリンク先を参照。
https://ja.wikipedia.org/wiki/%E3%83%8A%E3%83%83%E3%83%97%E3%82%B5%E3%83%83%E3%82%AF%E5%95%8F%E9%A1%8C
0796デフォルトの名無しさん
2015/09/16(水) 18:58:52.94ID:saSs2l+c単に全パターンをチェックした場合
def f789(a, target)
combos = (1..a.size).inject([]) {|r, i| r += a.combination(i).to_a}
min = combos.min_by {|combo| (target - combo.inject(:+)).abs}
[min, min.inject(:+)]
end
p f789([115,135,215,352,358,655,885,925,936,1250,1285,1620,1850], 2360)
↓
[[115, 135, 215, 352, 655, 885], 2357]
0797デフォルトの名無しさん
2015/09/16(水) 20:10:54.59ID:aL/dguIa> 以下の様な数値群
0798デフォルトの名無しさん
2015/09/16(水) 20:53:50.13ID:ExTMGHGkhttp://ideone.com/vwJNKv
一応解いたがオセー。最新CPUで1:40かかる。
順列使うくらいなら再起使ったほうが早いな。
コンビネーションほしー。
0799デフォルトの名無しさん
2015/09/16(水) 22:16:07.44ID:JeX5l5vVデータの数が20個程度なら総当りで問題なく解けそうだけど最大数いくつ?
0800デフォルトの名無しさん
2015/09/16(水) 22:42:12.73ID:aL/dguIay = xnとなるnがあれば終了。
そうでないとき、y > xnとなる最大のnについて、次の値でいいやつを選べはいいのでは?
x(n+1) // yより大きくもっとも近い値
cal (y, {x0, ・・・x(n-1)}) //和にxnを含まないときの最良値
cal (y-xn, {x0, ・・・x(n-1)}) //和にxnを含むときの最良値
0801デフォルトの名無しさん
2015/09/16(水) 22:53:06.43ID:aL/dguIacal(y, vec)とすると、y,かvecが小さくなるので再帰関数で作れるはず。
0802デフォルトの名無しさん
2015/09/16(水) 23:59:55.71ID:JeX5l5vVhttp://ideone.com/IQiI0w
とりあえず何も考えずに総当り
20個だと1秒くらいで出るけど数が増えると死ぬ
0803デフォルトの名無しさん
2015/09/17(木) 00:21:00.74ID:56vB2llc0804デフォルトの名無しさん
2015/09/17(木) 00:36:51.76ID:oSu48zprhttp://ideone.com/lsHLPD
前に書えたやつを軽く修正
全探索解(2^n*n)と、ウソDP解(n*最大重量)
基本python2.xだけど、pypyで実行
0805789
2015/09/17(木) 08:46:22.84ID:aStCI4Gl元々は50程度の数値群で、別にやらなきゃいけない物でもなかったんですが、
プログラミングでやるとしたらどうやるのかなと思ったのですが、
自分では解法が考えつかなかったので書き込んでみました。これから少しずつ見て理解してみます。
0806デフォルトの名無しさん
2015/09/17(木) 09:19:36.19ID:7rI3c1r5http://ideone.com/xzzmf0
力任せ探索をハッシュテーブルを使ってメモ化
0807名無しさん@お腹いっぱい。
2015/09/17(木) 11:24:35.90ID:Ref/prt+PS4でプログラミングはできるのかな?誰か教えて。
CとかRubyとかその他。
0808デフォルトの名無しさん
2015/09/17(木) 13:03:14.26ID:56vB2llcPS4で動くソフトの開発は素人でもできるのでは?
PS4で動くコンパイラとかエディタとかキーボードとか揃えばできるとおもうが。
0809デフォルトの名無しさん
2015/09/17(木) 13:08:21.98ID:56vB2llcPlayStationRソフトウェアの提案・開発・発売をしたい | PlayStation.com
https://support.jp.playstation.com/app/answers/detail/a_id/161
0810名無しさん@お腹いっぱい。
2015/09/17(木) 13:18:09.20ID:Ref/prt+思ったが、やっぱりダメみたいだね。
普通にWINDOWS PCを使う事にするよ。
回答ありがとう。
0811デフォルトの名無しさん
2015/09/17(木) 13:59:14.02ID:56vB2llcやってないけど50個は手強いかと。
総当りだと、2^50 = 1125899906842620とおりで普通のPCでは計算終わらないはず。
工夫したとしても手強いはず。
0812デフォルトの名無しさん
2015/09/17(木) 14:06:34.37ID:56vB2llcたとえば101を生成したいとき、101がデータにあるならばそれを使えばよく、それ以下の和で101を生成すべきではないな。
これは事前に検出しておいたほうがよさげ。
0813デフォルトの名無しさん
2015/09/17(木) 17:42:20.70ID:IC3slnA50814デフォルトの名無しさん
2015/09/20(日) 05:58:43.13ID:vBjKt0IW正の整数 n が与えられたとき、
0からnの間の、すべての整数に使われている、
1の数を返す関数 f があります
例えば、f(1) = 1; f(13) = 6 など。
今、nが2以上で、f(n) = n となる最小のnを求めよ
参考までに、
f(99) = 20; f(999) = 300; f(199,999) = 200,000
答え、n = 199,981
0815デフォルトの名無しさん
2015/09/20(日) 08:06:14.95ID:f/DwOlJx「10進法表記で」かい?
0816デフォルトの名無しさん
2015/09/20(日) 08:25:53.78ID:g7ao8Sb7http://ideone.com/CzsJCK
C++。とりあえず2通り書いてみたけど、どっちも遅い。
片方は並列化すれば多少早くなるはず。片方はデバッグ投げた。コンビネーションほしい。
最近まともに解けてないな・・・。
0817814
2015/09/20(日) 08:37:04.35ID:vBjKt0IWもちろん、10進数だよ
f(13) = 6
1, 10, 11, 12, 13で、1を6個使っている
11は、2個で数える
0818デフォルトの名無しさん
2015/09/20(日) 09:36:23.85ID:1JwuQWhK0819デフォルトの名無しさん
2015/09/20(日) 10:45:18.64ID:7mBXEM/Xhttp://ideone.com/5Iro1v
最小のnのみ表示、経過はアウトプットしてない
0820デフォルトの名無しさん
2015/09/20(日) 12:10:16.54ID:4gyZNSF5http://ideone.com/yXDGV0
0821780
2015/09/20(日) 13:29:55.06ID:Ac94krKFuse feature qw{:5.16};
sub f1 { # 0..10**$d - 1 (0..999など)の間にある総和
my $d = shift;
my $i = 10**$d;
my $n = ($i / 10) * $d;
($i, $n) }
sub f2 { # 0..10**$d *2) (0..2000など)最上位が2になるまでの間にある総和
my $d = shift;
my $i = 10**$d * 2;
my $n = $i / 2 + ($i / 10) * $d;
($i, $n) }
my $o = 2;
do {
($i1, $n1) = f1 $o;
($i2, $n2) = f2 $o;
say "$o: $i1..$i2, $n1 ~ $n2";
$o++;
} while $n2 < $i2;
$ perl 7_814_0.pl
2: 100..200, 20 ~ 140
3: 1000..2000, 300 ~ 1600
4: 10000..20000, 4000 ~ 18000
5: 100000..200000, 50000 ~ 200000 ← 解はこの間にある
理屈で考えると、最上位桁が1以外の0,2..9の場合はその値までの文字1の総和は
値に漸近しないので、解は最上位が1となる1xxxx ... 1999...の間にある筈。
上記はそれを確認したコード、この考えに基づき再帰的探査で速やかに見つからないかな…
時間があったらやってみたいが引越しの準備で…、ハゲっが。
0822デフォルトの名無しさん
2015/09/20(日) 14:17:21.30ID:W3KPe91Fhttp://ideone.com/bqd6FF
0823デフォルトの名無しさん
2015/09/20(日) 22:12:07.71ID:w687FJud| g f m |
g := [
| memo |
memo := OrderedCollection with: 1.
[:n |
n - memo size timesRepeat: [
memo add: (memo last + ((memo size + 1) asString occurrencesOf: $1))].
memo at: n
]
].
f := g value.
m := 1.
[(m := m + 1) = (f value: m)] whileFalse.
^m "=> 199981 "
0824デフォルトの名無しさん
2015/09/20(日) 22:53:09.92ID:g7ao8Sb7真面目に最後までやって終わってるのかすらわからん・・・。
0825デフォルトの名無しさん
2015/09/20(日) 23:01:38.16ID:D6HrfyQEマンカラ ( ボードゲーム ):無料Flashゲーム
http://www.sousakuba.com/flash-games/mancala.html
ゲーム「カラー」の説明
それでは、例題として取り上げるゲーム「カラー (Kalah) 」を説明します。
このゲームはルールこそ単純ですが、展開がスリリングで面白いゲームです。
http://www.geocities.jp/m_hiroi/light/pyalgo24.html
0826デフォルトの名無しさん
2015/09/20(日) 23:15:14.16ID:7mBXEM/X9が並んだパターンのnは、1の数え上げが不要なことが分かった
下のPython3のコードはnの桁の数から>>814のf(9...9)の場合の値を出してる
import math
def f_9x(n):
a = math.floor(math.log10(n))
return (a+1) * pow(10, a)
f_9x(9) # 1
f_9x(99) # 20
f_9x(999) # 300
f_9x(9999) # 4000
f_9x(99999) # 50000
f_9x(999999) # 600000
0827780
2015/09/20(日) 23:55:39.69ID:Ac94krKFゴメンチャイ
>>821は間違いがあって
× 最上位桁が1以外の0,2..9の場合はその値までの文字1の総和は値に漸近しない
○ ある値における最上位桁から現在着目している桁までの間に1がない場合は
その値を右にインクリメントしていっても、文字1の総和は値に漸近しない
たとえば
xxxxxxxxxxooooooooooxxxxxxxxxxx o o x o
1…1…2…2
0000000000111111111122222222223…0…1…0…1
0123456789012345678901234567890…0…0…0…0 ←着目している桁
図で書くとxのことろに解はなく、oのところに解がある可能性がある
これ2,3桁なのでちょっと分かりにくいかもしれないけど、桁数が多場合を考えると分かりやすいかも
で、その考えに基づいて速やかに解に近づくようなcodeを書こうと
思ったけど、結構骨が折れてまだ完成しないw
0828780
2015/09/21(月) 01:39:22.93ID:jBw1B4c/こった解探索アルゴリズムの物はすぐできない感じなので、
愚直に1から探していくバージョンをまずは…
use feature qw{:5.16};
($s, $_) = (1, 1);
do {
$_++;
$s += (() = /1/g);
} while $s < $_;
say $_;
$ perl 7_814_x.pl
199981
0829デフォルトの名無しさん
2015/09/21(月) 01:53:22.45ID:j5q7sFQh10区切りで1のケタをみれば、1個しかなくこれがループしてるだけ。
10の位も100の位も似たようなもので精密に数えたら手計算でもできないか?
0830デフォルトの名無しさん
2015/09/21(月) 02:12:51.56ID:GyvZP+140831780
2015/09/21(月) 02:17:07.55ID:jBw1B4c/ある切のいい値、たとえば100とか2000-1とかまでだと机上計算でもすごく簡単なの。
下記はその筆算イメージをcode化したもの、
use feature qw{:5.16};
for ($o = 2; ; $o++) {
$i1 = 10**$o;
$n1 = ($i1 / 10) * $o;
#$i1--; # fix
$n1++;
$i2 = 10**$o * 2;
$n2 = $i2 / 2 + ($i2 / 10) * $o;
$i2--; # fix
say "$o: $i1..$i2, $n1 ~ $n2";
last if $i2 <= $n2;
}
$ perl 7_814_1.pl
2: 100..199, 21 ~ 140
3: 1000..1999, 301 ~ 1600
4: 10000..19999, 4001 ~ 18000
5: 100000..199999, 50001 ~ 200000
これを発展させる形で、切の悪い値も、解の候補の可能性があるものを渡り歩いて
速やかな>814の求解プログラムとするには
モレ的にはもう少し方式検討が要る感じがして、>828で一旦 日和らせてもらた
0832780
2015/09/21(月) 02:30:00.52ID:jBw1B4c/この弱点は、ある値が与えられたら、1からその値までの文字1の総和を
解析的にというか式で算出することに気がとられ、
そのような計算式にもとづき、切の悪い値の中にある>814の求解に挑む
方向に考えが流されちゃったところかな。
発想を転換した方が良いかもしれないと思った。
和を足し込みながら漸近させて行く方法などと組み合わせるとかね。
さ、寝るわ。
0833デフォルトの名無しさん
2015/09/21(月) 03:09:20.39ID:TV+aglfl愚直に日本語
0. s=0とする
1.n=0
2. nを10進数であらわしたときに含まれる1の数
を数えそれをdとおく
3. k=0,...9として
4. k=1のときはd+1,それ以外をsに足しn+kに一致したら
出力して終了
5. 3のループを継続
6. n=n+10として1.へ
2.の処理の詳細
d=0;m=n;while(m){ d=(m % 10==1)?1:0; m/=10;}
愚直で効率が悪いのでCで書いても100m秒もかかって
しまった。
0834訂正
2015/09/21(月) 03:10:53.01ID:TV+aglfl出力して終了(n+k<2の場合は継続)
0835またもや訂正(スマンコ)
2015/09/21(月) 03:12:02.29ID:TV+aglfl0836デフォルトの名無しさん
2015/09/21(月) 08:29:38.04ID:K1QACkp5>論よりコード。
超名言w
0837デフォルトの名無しさん
2015/09/21(月) 08:35:28.97ID:OcjZ8RWa論よりコード
0838デフォルトの名無しさん
2015/09/21(月) 09:05:31.09ID:QVf3KibQ0839デフォルトの名無しさん
2015/09/21(月) 11:10:04.89ID:K1QACkp5@Mathematica
http://ideone.com/G1pNO8
※ナイーブに書き下したので、2時間経っても計算が終わらない orz
0840デフォルトの名無しさん
2015/09/21(月) 11:47:33.16ID:TV+aglfl[?]には整数型変数名を入れてください
#include <stdio.h>
static int odai814(void){
int [?]=0,[?]=0,[?],[?],[?];for(;;[?]+=10){[?]=[?],[?]=0;
while([?])[?]+=(([?]%10)==1)?1:0,[?]/=10;
for([?]=0;[?]<10;[?]++)if(([?]+=([?]==1)?[?]+1:
[?])==[?]+[?])if([?]+[?]>1)
return [?]+[?];}}
int main(void) {printf("%d\n",odai814());return 0;}
0841デフォルトの名無しさん
2015/09/21(月) 12:17:20.21ID:zZoSoqbhf(n)=nとなるnを全て計算してみました
>>826を見るとnの桁数が大きくなると1の総数f(n)がnを追い越すことから
有限個と予想はできるのですが、実際計算してみるとf(n)=nとなる数は
0,1を入れると84個っぽい
C言語:http://ideone.com/6jwkpQ
0842780
2015/09/21(月) 12:39:31.93ID:jBw1B4c/面白い結果だね。
13:[200000]
25:[2600000]
28:[35000000]
40:[35200000]
などは一旦 f(n)>n と逆転したあとに、f(n)==nに戻ったところだね
0843デフォルトの名無しさん
2015/09/21(月) 13:22:00.66ID:o5zq47rX(require 'cl-lib)
cl-lib
(defun f (n &optional m)
(if m (+ m (cl-count ?1 (format "%d" n)))
(cl-loop for i from 0 to n sum (cl-count ?1 (format "%d" i)))))
f
(f 1) 1
(f 13) 6
(f 99) 20
(f 999) 300
(f 199999) 200000
(let* ((n 2) (sum (f (1- n))))
(cl-loop (when (= (setq sum (f n sum)) n) (return n)) (incf n)))
199981
0844デフォルトの名無しさん
2015/09/21(月) 14:13:32.12ID:vwg3dHwdGoogle問題は
ヒントを知ると容易
ヒントが無ければ、f(1)=1, f(13)=6で一生悩む
>>841
深いな
0845780
2015/09/21(月) 16:14:22.83ID:jBw1B4c/ある値が与えられたら、0からその値までの間に出現する1の個数を式で一気に求めることができた。
言語:perl
use feature qw{:5.16};
sub fn {
my ($o, $w, $s) = (0 x 3);
my $d = shift;
if (defined $d) {
$s = fn(@_);
$o = scalar @_; # aboid $#_ problem
$w = 10**$o;
$s += $d * $o * $w / 10
if $o > 0;
if ($d > 1) {
$s += $w;
} elsif ($d == 1) {
$s += 1 + join '', @_; # `1 +' means including 0
}
#say "$d, $o, $w: $s";
}
$s
}
@vals = qw{1 10 11 13 99 100 110 111 199 200 999 1000 19999 199980 199981 199982};
say "$_ : ", fn(split '', $_)
for @vals;
0846780
2015/09/21(月) 16:16:19.84ID:jBw1B4c/$ perl 7_814.pl
1 : 1
10 : 2
11 : 4
13 : 6
99 : 20
100 : 21
110 : 33
111 : 36
199 : 140
200 : 140
999 : 300
1000 : 301
19999 : 18000
199980 : 199979
199981 : 199981
199982 : 199982
あとは解の候補があり得る値の所を飛び飛びで上手にわたって行くようなmainを作ることができれば、
0から足し込んで探すナイーブな解法に対し、演算量を劇的に低減できるかもしれない。
時間があったらやって見ますワ
0847デフォルトの名無しさん
2015/09/21(月) 23:29:01.05ID:TV+aglfl0848814
2015/09/22(火) 06:19:38.15ID:0pZRAY1l竹内さんは、NHKの「サイエンスZERO」に出ている人だね
Googleが試験問題を公表していないから、
外国のサイトを見まくって、問題を探し出して、
仲間と頭をひねりながら、解答を作って、
本にまとめてくれたことに感謝します
日本人のサイトでは、
あまりGoogleの試験問題は載っていないようだから、
本にまとめるのに苦労したみたい
0849デフォルトの名無しさん
2015/09/22(火) 06:46:32.71ID:8xBEIW2Iみたいな感じで佐野ったのか。
0850814
2015/09/22(火) 07:08:18.21ID:0pZRAY1l外人は試験問題を、正確には書いていないから、
どういう問題が出たのか、色々なサイトを見て、
推測して書いているのだろう
それにブログに書いてある解答も、
たいてい間違っているらしい
0851デフォルトの名無しさん
2015/09/22(火) 07:27:00.80ID:8xBEIW2Iだからコピーじゃなくて佐野ったんだろ?
0852デフォルトの名無しさん
2015/09/22(火) 07:58:51.34ID:8xBEIW2I0853839
2015/09/22(火) 09:34:36.06ID:hBy/MoF0ということで、コードを微調整。
@Mathematica
http://ideone.com/N7aNFY
※最後の結果に +1 してます。
0854839
2015/09/22(火) 11:55:24.83ID:hBy/MoF0@Mathematica
http://ideone.com/b49p5c
変更点:
1. n と nまでに含まれる”1”の個数 の差を
次に計算する n の推定(guess)に利用。
2. FixedPoint で解が収束するまで計算。
結果:
・約80ステップで解に収束。
・計算時間が約20時間 → 1分弱に改善。
0855780
2015/09/22(火) 13:57:33.62ID:ungOuZXX先に作られてしもたw その収束アルゴリズムはよく理解できていないけど、やるな…
解が埋もれているかもしれない範囲を飛ばすことなく速やかにかつ確実に解に漸近していくアルゴリズムを
考え込んでしまい、モレはまだmainができていないよ。下記のようなn, fn(n), 差分f(n)-n, 差分f(n)-n
の増加/減少トレドを見るmain書いて眺めてた。それはそれで結構面白かったけど。
use feature 'say';
sub fn {
my ($d, $o, $w, $s) = (undef, 0 x 3);
if (defined ($d = shift)) {
$s = fn(@_);
$o = scalar @_; # avoid shifted $#_ problem
$w = 10**$o;
$s += $d * $o * $w / 10;
if ($d > 1) {
$s += $w;
} elsif ($d == 1) {
$s += 1 + join '', @_; # `1 +' includes 0
} #say "$d, $o, $w: $s";
} $s }
my ($i0, $fn0, $diff0, $sign0, $indi) = (1,1,1,1,0);
for my $i (1..200000) {
my $fn = fn(split '', $i);
my $diff = $fn - $i; my $sign = $diff0 cmp $diff;
if ($sign != $sign0) {
say "$i0 p $fn0; $diff0: $sign0" unless $indi;
say "$i : $fn; $diff: $sign";
$indi = 1;
} else {
$indi = 0;
}
($i0, $fn0, $diff0, $sign0) = ($i, $fn, $diff, $sign);
}
0856デフォルトの名無しさん
2015/09/22(火) 18:55:55.46ID:gQIVdZQM連分数:https://ja.wikipedia.org/wiki/%E9%80%A3%E5%88%86%E6%95%B0
0857デフォルトの名無しさん
2015/09/22(火) 19:18:25.94ID:0pZRAY1lネイピア数 e の連続した桁で見つかる、
最初の10桁の素数は?
参考までに、
その数nを、11桁(100億)の平方根、
6桁(10万)までの素数で割って、
割り切れなければ素数である
10万までの素数の数は、素数定理により約、
100,000 / log 100,000 = 8,686
答え 7,427,466,391
ただし、計算に1時間かかるらしいので、
もう少し桁数を少なくして、
また円周率PIについても、同様に求めてください。
e,PI、素数表は、どこかのサイトで探して
0858デフォルトの名無しさん
2015/09/22(火) 19:41:21.21ID:fdpESrCr100ミリ秒とかからず終わったけど
$ time ruby e.rb
7427466391 is prime at 98
ruby e.rb 0.07s user 0.02s system 100% cpu 0.089 total
0859デフォルトの名無しさん
2015/09/22(火) 19:58:30.28ID:81sVtoLnhttp://ideone.com/4trtDA
0860デフォルトの名無しさん
2015/09/22(火) 20:03:13.08ID:uU2JaX2510ケタ最小fは一瞬だったら、11ケタ、12ケタの最小素数にしたらどうか?
0861デフォルトの名無しさん
2015/09/22(火) 21:11:01.82ID:2QChAl7u1000桁までにも
結構たくさんあるみたい。
この確率の高さを正常と見るべきか
異常とみるべきか....
0862デフォルトの名無しさん
2015/09/22(火) 21:17:43.58ID:uU2JaX25これでなるべく数字を追加せずに、11ケタの素数部分を見つける問題。本質的な探索部分は同じでは。
1
12
123
・・・
123456789
12345678910
1234567891011
0863デフォルトの名無しさん
2015/09/22(火) 21:38:02.27ID:fdpESrCr10桁の数のうち素数は5%くらいなんだから
50個ぐらい見つかるのは期待値通り
0864デフォルトの名無しさん
2015/09/22(火) 22:01:37.16ID:81sVtoLn45678910111
0865デフォルトの名無しさん
2015/09/22(火) 22:23:27.01ID:uU2JaX250866デフォルトの名無しさん
2015/09/22(火) 22:52:27.25ID:vtuBryJI(require 'cl-lib)
cl-lib
(defun primep (n)
(if (= n 2) t
(let ((d 2))
(cl-loop (when (= (% n d) 0) (cl-return nil)) (when (<= n (* d d)) (cl-return t))
(incf d)))))
(defun e (column) ; http://peace.2ch.net/test/read.cgi/tech/1411227287/695
(let* ((D 10000) (a (make-string D ?0)))
(cl-block aaa
(cl-loop for j from 3333 downto 1 do
(let ((k 1))
(cl-loop for i from 0 below D do (progn
(setq k (+ (* (% k j) 10) (- (aref a i) ?0))) (setf (aref a i) (+ (/ k j) ?0))
(when (and (= j 1) (<= (1- column) i))
(let ((x (string-to-number (substring a (- i (1- column)) (1+ i)))))
(when (primep x) (cl-return-from aaa (format "%d is prime at %d" x (- i (1- column))))))))))))))
e
(e 2)
"71 is prime at 0"
(e 10)
"7427466391 is prime at 98"
(e 11)
"75724709369 is prime at 36"
0867857
2015/09/22(火) 22:56:05.44ID:0pZRAY1lRubyで、0.1秒ですか?
2008年の本に、マセマティカのFactorIntegerで、
1時間かかったと書いてあったので
暇なら、e,PI,√2,√3などの数列を使って、
素数を求めてくだされ
0868デフォルトの名無しさん
2015/09/22(火) 23:01:55.10ID:2QChAl7u多くが小さな素数で割れる合成数だし。
0869デフォルトの名無しさん
2015/09/22(火) 23:19:06.09ID:uU2JaX25フルイで素数表をつくろうとすると、10ケタがギリギリで11ケタは厳しくないか。
奇素数限定で、1つの数を1bitで表現したとしても10ケタの表は、
10^10 * 1/2 *1/8 * 1/2^20 メガバイト = 596メガバイト。
11ケタ全体にするとこの10倍容量。メモリもループ回数も厳しい。
表は持たずに判定してくしかないか。
0870デフォルトの名無しさん
2015/09/22(火) 23:26:00.73ID:2QChAl7uなので、100000までの素数を篩で求めてお
いて、小さい素数から片っ端から割っていく
方法でも、十分だった
0871デフォルトの名無しさん
2015/09/22(火) 23:28:35.29ID:2QChAl7u0872デフォルトの名無しさん
2015/09/23(水) 07:48:02.68ID:HiyuM5m6@Mathematica
http://ideone.com/JEHRlj
※ 計算時間は3msでした。
0873デフォルトの名無しさん
2015/09/23(水) 09:06:06.22ID:o5eDyHvEhttp://ideone.com/E4vRcq
0874デフォルトの名無しさん
2015/09/23(水) 11:14:10.28ID:o5eDyHvEhttp://ideone.com/hhVd64
0875デフォルトの名無しさん
2015/09/23(水) 14:11:29.28ID:ByrCNK4a0876780
2015/09/23(水) 14:26:50.38ID:22OCfLbN一番簡単なatanの式でも
例、言語: MIT C Scheme
(* 4 (atan 1.0))
;Value: 3.141592653589793
doubleまでをサポートする言語でも16桁くらいまでは一瞬だよ。
0878デフォルトの名無しさん
2015/09/23(水) 14:50:46.49ID:ByrCNK4a0879デフォルトの名無しさん
2015/09/23(水) 16:08:06.43ID:0scTCNwpAKSの実装みたことねーな。
0880デフォルトの名無しさん
2015/09/23(水) 16:09:56.27ID:m6puvBDgRuby
答えの桁が少ないから終わるけど桁が増えるともっと工夫しないとダメだろうな
てかこんなんでいいのか
http://ideone.com/1riGzV
0881880
2015/09/23(水) 16:13:24.63ID:m6puvBDgこうだな
http://ideone.com/NFrGUW
0882デフォルトの名無しさん
2015/09/24(木) 11:37:12.32ID:NZgcXNyR亀レスですみません。
シルバーウィークで暇だったので面白そうな奴を組んでみました。
ほぼ計算結果は同じですが、違っていた奴
11個:半径=5.00
(0,0)(1,3)(0,6)・・・以下略
17個:半径=72.50
(0,0)(1,12)(0,24)・・・以下略
18個:半径=25.00
(0,0)(13,9)(20,10)・・・以下略
19個:半径=25.00
(0,0)(13,9)(18,24)・・・以下略
34個:半径=145.00
(0,0)(5,5)(18,16)・・・以下略
35個:半径=145.00
(0,0)(13,11)(18,16)・・・以下略
0883デフォルトの名無しさん
2015/09/24(木) 19:16:18.59ID:MUn8GANW見逃してる点があるだけじゃね?
半径5 中心(-4,3) 12個
(0,0)(1,3)(0,6)(-1,7)(-4,8)(-7,7)(-8,6)(-9,3)(-8,0)(-7,-1)(-4,-2)(-1,-1)
0884デフォルトの名無しさん
2015/09/25(金) 19:32:25.19ID:RV77AIllhttp://ideone.com/BZeivY
短っ!
0885デフォルトの名無しさん
2015/09/26(土) 02:51:47.44ID:i0zKrV8k1
12
123
1234
12345
123456
1234567
12345678
123456789
0886デフォルトの名無しさん
2015/09/26(土) 03:32:13.06ID:P25DxxnJfor i in range(1,10):print('123456789'[:i])
43文字
0887デフォルトの名無しさん
2015/09/26(土) 03:43:25.43ID:nw7tAYJXRuby
a=0;9.times{|i|p a=a*10-~i}
27文字
0888デフォルトの名無しさん
2015/09/26(土) 03:46:20.54ID:VXPsa0vt+++>>+++++++[<+++++++<+>>-]+++++++++[>+[>+<<<.+>>-]>[<+<<->>>-]<<<<.>>><-]
0889デフォルトの名無しさん
2015/09/26(土) 03:50:47.76ID:P25DxxnJpackage main;func main(){for i:=1;i<10;i++{println("123456789"[:i])}}
69文字
0890デフォルトの名無しさん
2015/09/26(土) 03:53:30.71ID:VXPsa0vt><とか全く無意味なところが残ってた恥ずかしい
0891デフォルトの名無しさん
2015/09/26(土) 04:18:45.09ID:P25DxxnJlet p,s=print_endline,"123456789"
let rec f=function|9->p s|n->p(String.sub s 0 n);f(n+1)
f 1
改行2回含んで93文字
0892デフォルトの名無しさん
2015/09/26(土) 04:19:39.31ID:MTElpeKZhttp://ideone.com/OXxvpe
C++。ワンライナーにはかなわんな。
0893デフォルトの名無しさん
2015/09/26(土) 04:34:02.86ID:P25DxxnJlet rec f=function|9->p s|n->p(String.sub s 0 n);f(n+1);;f 1
>>891はミス、94文字に修正
0894デフォルトの名無しさん
2015/09/26(土) 04:43:12.51ID:P25DxxnJfor i in {1..9};do s=$s$i;echo $s;done
38文字、sが空の状態であることが条件
0895デフォルトの名無しさん
2015/09/26(土) 04:56:05.75ID:LKYoiOWFhttp://ideone.com/myeXtj
0896デフォルトの名無しさん
2015/09/26(土) 05:08:10.78ID:i8DjA5eB@Mathematica
Range[9]//Map[{StringTake["123456789",#]}&,#]&//Grid
52文字
0897デフォルトの名無しさん
2015/09/26(土) 05:21:25.74ID:OT+Fkj/0Haskell
import Data.List
main = mapM putStrLn . tail . inits $ "123456789"
0898デフォルトの名無しさん
2015/09/26(土) 05:41:15.64ID:VPLzo2d+| len e x delta digits lastPos |
len := 10.
e := 2 asScaledDecimal.
x := 1.
lastPos := 2.
[ | ans |
[e := e + (delta := 1 / (x := x + 1) factorial). delta log negated > len] whileFalse.
digits := (e asScaledDecimal: delta log asInteger negated) asString upTo: $s.
lastPos + 1 to: digits size - len + 1 do: [:pos |
((digits at: (lastPos := pos)) ~= $0) ifTrue: [
ans := (digits copyFrom: pos to: pos + len - 1) asInteger.
((Integer primesUpTo: ans sqrt + 1) noneSatisfy: [:p | ans isDivisibleBy: p])
ifTrue: [^ans]
]
]
] repeat "=> 7427466391 "
0899デフォルトの名無しさん
2015/09/26(土) 06:05:35.48ID:i0zKrV8kfor(i,2,10,writeln(((10**i-1)/9-i)/9))
0900デフォルトの名無しさん
2015/09/26(土) 06:08:21.02ID:VPLzo2d+(1 to: 9) inject: 0 into: [:prev :i | (prev * 10 + i) printNl]
https://ideone.com/agFsbZ
0901デフォルトの名無しさん
2015/09/26(土) 06:36:11.10ID:8isGWqIvナイスとしかいいようがない,ideoneに実行系があるよ
http://ideone.com/3viQmr
0902デフォルトの名無しさん
2015/09/26(土) 06:47:48.50ID:wxxd8WLg0904デフォルトの名無しさん
2015/09/26(土) 11:54:36.10ID:gfTU519R#include <stdio.h>
int main() {
int i;
for (i = 1; i <= 9; i++) printf("%.*s\n", i, "123456789");
return 0;
}
>>885 ruby
puts (1..9).map {|i| "123456789"[0, i]}
0905デフォルトの名無しさん
2015/09/26(土) 12:10:27.50ID:s3bG5fjEC#
namespace Odai885
{
class Program
{
static void Main(string[] args)
{
Enumerable.Range(1, 9).Select(l => { Console.WriteLine("123456789".Substring(0, l)); return 0; }).ToArray();
}
}
}
0906デフォルトの名無しさん
2015/09/26(土) 12:29:53.29ID:i0zKrV8kfor(i in 1:9)cat(1:i,sep="",fill=T)
0907デフォルトの名無しさん
2015/09/26(土) 13:24:18.37ID:Bwgz8l1ofn main() {
for i in 1..10 {
for j in 1..i+1 {
print!("{}", j);
}
println!("");
}
}
0908デフォルトの名無しさん
2015/09/26(土) 15:15:42.63ID:O4axx1wD((lambda (l) (when l (f (cdr l)) (mapcar (lambda (x) (princ x)) (reverse l)) (terpri))) (reverse '(1 2 3 4 5 6 7 8 9)))
1
12
123
1234
12345
123456
1234567
12345678
123456789
t
0909デフォルトの名無しさん
2015/09/26(土) 15:26:42.53ID:O4axx1wD>>908 は間違えました。
(require 'cl-lib)
cl-lib
(cl-labels ((f (l) (when l (f (cdr l)) (mapcar (lambda (x) (princ x)) (reverse l)) (terpri))))
(f (reverse '(1 2 3 4 5 6 7 8 9))))
1
12
123
1234
12345
123456
1234567
12345678
123456789
t
0910デフォルトの名無しさん
2015/09/26(土) 19:11:36.57ID:nw7tAYJXClojure
(doseq [x (range 1 10)] (println (subs "123456789" 0 x)))
0911デフォルトの名無しさん
2015/09/26(土) 19:17:34.86ID:O4axx1wD>>908 で誤って依存していた大域関数f
(defun f (l) (when l (f (cdr l)) (mapcar (lambda (x) (princ x)) (reverse l)) (terpri)))
をYコンビネータ導出の手順を使用して変形し、fへの依存をなくしました。
(require 'cl-lib)
cl-lib
(funcall (funcall #'(lambda (procedure)
(lexical-let ((procedure procedure))
(lambda (l) (when l (funcall (funcall procedure procedure) (cdr l)) (mapcar (lambda (x) (princ x)) (reverse l)) (terpri)))))
#'(lambda (procedure)
(lexical-let ((procedure procedure))
(lambda (l) (when l (funcall (funcall procedure procedure) (cdr l)) (mapcar (lambda (x) (princ x)) (reverse l)) (terpri))))))
(reverse '(1 2 3 4 5 6 7 8 9)))
1
12
123
1234
12345
123456
1234567
12345678
123456789
t
0912デフォルトの名無しさん
2015/09/26(土) 19:25:19.04ID:y7bGrwOk無名再帰にすると長くなるのは仕方ないな
無理せず名前使えば?
0913デフォルトの名無しさん
2015/09/27(日) 17:50:15.20ID:NRLqsz4V出題者想定:http://peace.2ch.net/test/read.cgi/tech/1434079972/13
>>874
ありがとうございます.
1.double で処理,とは思いつきませんでした.考えてみればこれもありですか,参りました.
http://codepad.org/RMTL5MAm
2.桁を一つ見つけるごとに部分和を出して誤差チェックとは丁寧ですね
0914デフォルトの名無しさん
2015/09/27(日) 21:49:56.02ID:5rMt3yA4少し長いけどこちらのほうがわかりやすいかな?
0915デフォルトの名無しさん
2015/09/27(日) 21:54:01.34ID:bMt5Z1cQ例
n=1 -> 111
n=2 -> 222
n=3 -> 3
0916デフォルトの名無しさん
2015/09/27(日) 22:19:00.57ID:pud21hSwhttp://ideone.com/d66hHf
0917デフォルトの名無しさん
2015/09/27(日) 22:21:41.45ID:pud21hSwn=11とか111じゃないといかん
0918デフォルトの名無しさん
2015/09/27(日) 22:38:32.88ID:pud21hSwhttp://ideone.com/uppkvD
今度こそ?
0919デフォルトの名無しさん
2015/09/27(日) 22:49:58.77ID:OMWJkqrzruby2.0
def func(n)
return n%3==0?n:(n.to_s+(n%3).to_s+n.to_s).to_i
end
(1..100).map{|e|p [e,func(e)]}
0920デフォルトの名無しさん
2015/09/27(日) 22:51:10.31ID:pud21hSw>>915 Java
http://ideone.com/aoYVeV
0921デフォルトの名無しさん
2015/09/27(日) 23:11:22.94ID:OMWJkqrzhttp://ideone.com/W4YhG4
0922デフォルトの名無しさん
2015/09/28(月) 00:40:18.05ID:7hkQ4YH6http://ideone.com/ol0EA0
C++。なんか妙な並びだな。これバグってないよね。
0923デフォルトの名無しさん
2015/09/28(月) 00:48:29.00ID:Qdjt+JHs0924915
2015/09/28(月) 01:01:15.83ID:gcp0/eNc0925780
2015/09/28(月) 01:13:38.21ID:1qg2YL0F%h = map{substr($_,-1) => $_} qw(0 3 6 9 12 15 18 21 24 27);
for my $n (1..9) {
my $m = $h{$n};
while (substr($m,0,1) ne $n) {
$m += 30;
}
print "$n->$m\n";
}
$perl 8_915.pl
1->111
2->222
3->3
4->414
5->525
6->6
7->717
8->828
9->9
0928780
2015/09/28(月) 01:26:45.99ID:1qg2YL0Fたびたびゴメン,1-9まではこれで合ってるわ。検算の電卓叩き間違えてた。
二桁以上対応は、また時間のあるときにねハート
0929デフォルトの名無しさん
2015/09/28(月) 01:59:41.01ID:nBnRDQZn深いこと考えずに
main = putStrLn . solve =<< readLn
solve :: Int -> String
solve n = head . filter (test $ show n) . map show $ [3, 6..]
test n m = take l m == n && drop (length m - l) m == n
where
l = length n
0930929
2015/09/28(月) 02:11:22.67ID:nBnRDQZn1から100まで列挙
http://ideone.com/b4VVyA
0931デフォルトの名無しさん
2015/09/28(月) 02:13:48.56ID:etdYPLZ612なら12でいいんじゃないかな
0932デフォルトの名無しさん
2015/09/28(月) 02:14:47.60ID:7hkQ4YH6http://ideone.com/4rYEOX
C++。書き直した。けど例と食い違ってるんだが、なんかバグってる?
0933デフォルトの名無しさん
2015/09/28(月) 02:19:12.61ID:7hkQ4YH60934デフォルトの名無しさん
2015/09/28(月) 02:27:54.45ID:7hkQ4YH6http://ideone.com/RjJz09
C++。デバッグ完了!?あってるかな。
腹減った。
0935デフォルトの名無しさん
2015/09/28(月) 02:51:52.43ID:etdYPLZ6Ruby
http://ideone.com/KouUhu
適当に総当り
6桁くらいあると1秒じゃ終わらないかも
0936デフォルトの名無しさん
2015/09/28(月) 03:05:01.50ID:etdYPLZ6なんで関数でreturnしないでputsしてたんだろ
というわけでちょっと修正
http://ideone.com/kRP231
0937デフォルトの名無しさん
2015/09/28(月) 03:15:11.76ID:g87qhbj3(defun f (a b)
(let* ((as (format "%d" a)) (al (length as))
(bs (format "%d" b)) (bl (length bs)))
(when (<= bl al)
(let ((a1 (string-to-number (substring as 0 bl)))
(a2 (string-to-number (substring as (- al bl) al))))
(and (= a1 b) (= a2 b))))))
f
(defun g (m n)
(let ((m0 m))
(while (not (and (f m n) (princ (format "n=%d -> %d\n" n m))))
(setq m (+ m m0)))))
g
(g 3 1) n=1 -> 111
(g 3 2) n=2 -> 222
(g 3 3) n=3 -> 3
(g 3 11) n=11 -> 111
0938デフォルトの名無しさん
2015/09/28(月) 06:17:28.02ID:kAFkU9e5def f(n):
s = str(n)
m = sum(map(int, s)) * 2 % 3
if not m:
return n
for i, (f, b) in enumerate(zip(s, s[::-1]), 1):
if f != b:
break
t = s + s[i:]
if int(t) % 3 == 0:
return int(t)
return int(s + str(3-m) + s)
f(n=10) -> 10110
f(n=11) -> 111
f(n=12) -> 12
f(n=100) -> 1001100
f(n=101) -> 10101
f(n=102) -> 102
0939デフォルトの名無しさん
2015/09/28(月) 14:16:16.25ID:ZDExReCMO(n*m)ぐらいまで抑えてみた
C++
http://ideone.com/LzQwEM
0940デフォルトの名無しさん
2015/09/28(月) 15:28:26.19ID:etdYPLZ6Ruby
http://ideone.com/bO8m4R
たぶん1万桁程度は通るようになったと思う
アルゴリズムは>>938と大体同じかな
Pythonわからないけど
0941デフォルトの名無しさん
2015/09/28(月) 15:52:38.55ID:/qYU1fFl0942デフォルトの名無しさん
2015/09/28(月) 16:16:50.63ID:gXusLmLr| fn |
fn := [:n |
| digs m ret |
digs := n asString asArray collect: #digitValue.
[:exit |
digs size to: 0 by: -1 do: [:nDup |
(digs last: nDup) = (digs first: nDup) ifTrue: [
ret := digs, (digs last: digs size - nDup).
(m := ret sum \\ 3) = 0 ifTrue: [exit value]
]
].
ret := digs, {3 - m}, digs
] valueWithExit.
ret reversed polynomialEval: 10
].
fn value: 9. "=> 9 "
fn value: 10. "=> 10110 "
fn value: 11. "=> 111 "
fn value: 12. "=> 12 "
fn value: 100. "=> 1001100 "
fn value: 101. "=> 10101 "
fn value: 102. "=> 102 "
fn value: 104. "=> 1042104 "
fn value: 23452345. "=> 234523452345 "
0943デフォルトの名無しさん
2015/09/28(月) 17:35:15.25ID:gxHFtnk4競技プログラミングにハマるプログラマのスレ [転載禁止]?2ch.net
http://kanae.2ch.net/test/read.cgi/prog/1443271207/
0944デフォルトの名無しさん
2015/09/28(月) 21:31:45.59ID:EgikiZYGdef func(n)
w=n%3
n=n.to_s
return n if w==0
len=n.length
return n[0]*(len/3+1)*3 if n.count(n[0])==len
return n.to_s+w.to_s+n.to_s
end
(1..1111).map{|e|p [e,func(e)]}
0945デフォルトの名無しさん
2015/09/28(月) 23:32:04.93ID:A92rPhFQhttps://ideone.com/JPCnqK
0946デフォルトの名無しさん
2015/09/29(火) 03:18:10.11ID:7mTyt6Kl例
12@45'78!
0947デフォルトの名無しさん
2015/09/29(火) 07:21:16.85ID:tl3iioqy4,5,7,8の結果、おかしくない?
0948デフォルトの名無しさん
2015/09/29(火) 11:00:25.50ID:C4Ll/6Vjhttp://ideone.com/kwaKpn
0949デフォルトの名無しさん
2015/09/29(火) 15:12:35.50ID:ux+ZVrLFバイナリにでもせいっちゅうことか
0950デフォルトの名無しさん
2015/09/29(火) 21:06:02.44ID:WN6iGBpOhttps://ideone.com/8O6FAh
0951780
2015/09/29(火) 21:14:29.38ID:0gMRYR9e@a=split '', q{!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~};
print map{/(3|6|9)/ ? do{push @a, shift @a; $a[0]} : $_} split '' for <DATA>;
__DATA__
3.14159265358979323846264338327950288
2.718281828459045235360287471352
実行例
$ perl 7_946.pl
".1415#2$5%58&7'(2)84*2+4,-8.27/50288
2.71828182845:0452;5<=0287471>52
0952780
2015/10/01(木) 00:33:57.03ID:O5jmaqNC@a=split '', q{!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~};
print map{/[369]/ ? $a[rand($#a)] : $_} split '' for <DATA>;
__DATA__
3.14159265358979323846264338327950288
2.718281828459045235360287471352
0953デフォルトの名無しさん
2015/10/02(金) 14:19:41.50ID:smVvYCyu1
12
123
1234
12345
123456
1234567
12345678
123456789
123456789a
123456789ab
123456789abc
123456789abcd
123456789abcde
123456789abcdef
23456789abcdef
3456789abcdef
456789abcdef
56789abcdef
6789abcdef
789abcdef
89abcdef
9abcdef
abcdef
bcdef
cdef
def
ef
f
0954デフォルトの名無しさん
2015/10/02(金) 16:43:29.98ID:wmMPPcd6http://ideone.com/eVcrlw
0955デフォルトの名無しさん
2015/10/02(金) 17:22:43.77ID:6E18S5dPCで
puts("1\n12\n123\n1234\n12345\n...\n123456789abcdef\n23456789abcdef\n...\nf");
としてるのと大差が無い件
0956デフォルトの名無しさん
2015/10/02(金) 18:03:15.17ID:T4kk9zpR0957デフォルトの名無しさん
2015/10/02(金) 19:03:14.73ID:PPYCDrIp@Mathematica
http://ideone.com/dE3mCI
0958デフォルトの名無しさん
2015/10/02(金) 19:12:34.24ID:gloLINxL#include <stdio.h>
int main() {
int i;
for (i = 1; i <= 29; i++) printf("%.*s\n", i, "123456789abcdef" + i / 15 * (i % 15));
return 0;
}
0959953
2015/10/02(金) 19:42:21.54ID:smVvYCyu0960デフォルトの名無しさん
2015/10/02(金) 21:17:28.97ID:T1FCG5fNなぜそうしたのか意図を聞かせてください。
0962デフォルトの名無しさん
2015/10/02(金) 23:16:51.40ID:uIXobxf8int main(void) {
int i,j;
for (i=1 ; i<31 ; i++,putchar('\n'))
for (j=i/16*i%16+1 ; j<(i/16?16:i%16) ; j++)
printf("%x",j);
return 0;
}
0964デフォルトの名無しさん
2015/10/03(土) 07:30:34.93ID:hNGF9zPIhttp://ideone.com/TfVc5O
++++++++++>>+++++++++[>[>>]>++++++++[<++++++++>-]<[-<<]>-]++++++[>[>>]+++>++++++
++++[<++++++++++>-]<[-<<]>-]>>+<<++++++++++++++[>>[<.>>>]+<[<<]<.>>-]>[.>>]>>+++
+++++++.<<++++++++++++++[<[<<]>>->>[<.>>]>.<<-]
>>955
やれと言われた気がした
0965780
2015/10/03(土) 12:42:39.38ID:PLl1Mwjmuse feature qw{:5.16};
say for sub {
@_ ? do{
my @r = __SUB__->(@_[0..$#_-1]);
say @_;
(join('', @_), @r)
} : () }->(1..9,a..f);
>>963
数学的アルゴリズムではないけkど、/とか%のマジック演算に依らずに、
再帰的構造をトラバースする形で作ってみた、まぁ遊びだね。
もうちょっとコンパクト&エレガントに書けたら良いだけれどもねェ…
0966915
2015/10/03(土) 12:52:59.16ID:2lM26vpR0967780
2015/10/03(土) 13:01:08.17ID:PLl1Mwjm$ perl 7_953.pl
1
12
123
1234
12345
123456
1234567
12345678
123456789
123456789a
123456789ab
123456789abc
123456789abcd
123456789abcde
123456789abcdef
123456789abcdef
123456789abcde
123456789abcd
123456789abc
123456789ab
123456789a
123456789
12345678
1234567
123456
12345
1234
123
12
1
0968デフォルトの名無しさん
2015/10/03(土) 18:51:14.51ID:3fp7KwDHhttp://ideone.com/zsR3L1
>>946 C
http://ideone.com/1K3cAO
>>953 C
http://ideone.com/OXcriy
0969デフォルトの名無しさん
2015/10/03(土) 19:11:54.87ID:3fp7KwDH目が回りそうなので、試しにCに自動翻訳してみた
http://ideone.com/nxAO5S
でも難解であることには変わりなかった><
このソースを実行した結果 http://ideone.com/OfeS04
0970デフォルトの名無しさん
2015/10/03(土) 20:56:29.61ID:g/NsU62v規模は小さいけどまごうことなきトランスコーダじゃないですか。
GJ
0971デフォルトの名無しさん
2015/10/04(日) 13:22:23.08ID:c3LOhcpj縦横20字ずつ、計400字の「さ」「く」「ら」の文字がランダムに配置されています。
縦、横、斜め 全ての方向を検索して「さくらさく」がいくつ存在するか
求めてください
なお、20x20のデータは以下のように作成してください
n番目のデータ:
dn = (1234567899012345678 / n) % 3 (%は剰余、/は整数割り算)
dn = 0 : 「さ」
dn = 1 : 「く」
dn = 2 : 「ら」
20x20の左上から右へ n=1,2,3...18,19,20
右下 ...n=399,400
C言語でのデータ作成の例:http://ideone.com/mgwsSW
「さくらさくらさく」← 文字の始まり位置の違いで2つあるので2つと数えます
「くさらくさ」← 逆から読めるのもカウントします
解答例(C++):http://ideone.com/DN8WwN
0972デフォルトの名無しさん
2015/10/04(日) 13:23:06.78ID:c3LOhcpjS=さ K=く R=ら
S S S K S S R S S K K K S R K K K S S S
K R K R S S R R S S R R K S R K K K K K
K S S K R R S R K K K S R K R K K S S S
R K R K K S S S S K R S S S R R K R R S
R S K K R S R S K K K R R K R R K S S S
S R S S R R R S R R S S R S R K K K K K
S K S R R K S S K R K S S S R S R K K S
R R R K K K K K K R R R S S R K R K S S
R K R S S S S R R R K K K K S K S S S R
K S S R S K K S R R K K S R R S K S R S
K S K K R S S K S K S R K K S S R K R K
R S K S K K R K S R K S R S S S R R K R
K S R S S S K K K R S S R K R S S R S K
K S S S S K K S R K K S S K S S S R S S
R R R K S K R S R S R R S R K S S R R K
K K S K R K S K S R K R R R R R S K S S
S K K R R K K S K K K K K S S K K R K K
K R R R K R K S K S R R S K R S K K R R
K R S S R S S K S K R S R R R S R K K R
S R S R R S K R R R S S K S R S S R K S
0973デフォルトの名無しさん
2015/10/04(日) 14:32:33.26ID:BoLyeOLzその数字間違ってるじゃないか
× 1234567899012345678
○ 123456789012345678
0974デフォルトの名無しさん
2015/10/04(日) 14:34:50.93ID:+0+r9MqJBrainF*ck好きな人は
ぜひBrainF*ckでよろw
0975デフォルトの名無しさん
2015/10/04(日) 14:37:26.23ID:BoLyeOLzあんまりかっこ良くない...
http://ideone.com/qac402
0976デフォルトの名無しさん
2015/10/04(日) 15:15:48.06ID:c3LOhcpjご指摘ありがとです
その通りです><
123456789012345678 でお願いします
0977デフォルトの名無しさん
2015/10/04(日) 15:17:55.57ID:BoLyeOLzこっちのほうがいいかな?
http://ideone.com/VsUVyc
0978デフォルトの名無しさん
2015/10/04(日) 19:30:38.58ID:qykP8ViTRuby
a=0
1.upto(29){|i|puts (a=a*36+i).to_s(36)[i/15*i%15,15-(15-i).abs]}
0979915
2015/10/04(日) 21:00:25.91ID:aEDkzaSrfor(i,1,15,for(j,1,i,j asHex print);writeln)
for(i,2,15,for(j,i,15,j asHex print);writeln)
0980デフォルトの名無しさん
2015/10/05(月) 07:37:53.85ID:Efh3UhbFhttp://ideone.com/Rq8ESt
正規表現の後読みアサーションでSKRSKをマッチさせる
0981デフォルトの名無しさん
2015/10/05(月) 17:16:55.10ID:V+1Y1wpif =: 3 : 0
a =. 'SKR'{~123456789012345678x (3|<.@%)>:i.20 20
E =. E."1
R =. +/ , y E a
RU =. +/ , y E , /. a
U =. +/ , y E |. |: a
LU =. +/ , y E , /. |."1 a
L =. +/ , y E |."1 a
LD =. +/ , y E |."1 , /. a
D =. +/ , y E |."1 |: a
RD =. +/ , y E |."1 , /. |."1 a
R , RU , U , LU , L , LD , D , RD
)
f 'SKRSK'
1 0 1 1 1 6 4 1
f 'SKSKR'
1 1 4 0 2 1 1 1
0982デフォルトの名無しさん
2015/10/06(火) 06:19:41.75ID:xeJsGt+1f =: 3 : 0
((-:y*<:y),2)$;;<@,/.(>:i.y)(<@,"0)/>:i.-y
)
f 5
1 5
1 4
2 5
1 3
2 4
3 5
1 2
2 3
3 4
4 5
0983デフォルトの名無しさん
2015/10/06(火) 18:47:41.80ID:hl62C8iMhttp://ideone.com/rgH8r5
総当たりの対戦表ということでマス目の表を想像して
手を付けてなかったけどリストで良いなら
0984デフォルトの名無しさん
2015/10/06(火) 21:57:54.61ID:U0RhR/1jhttp://ideone.com/FX6KmQ
>>974
これで勘弁してくださあああああああああああああ
0985デフォルトの名無しさん
2015/10/06(火) 22:09:39.74ID:fHPawY3tgj.
涙なしでは見れんなぁ。発狂するぞ。
0986デフォルトの名無しさん
2015/10/06(火) 22:10:44.24ID:YetVXLTiあんたのこと尊敬する
0987デフォルトの名無しさん
2015/10/06(火) 22:22:47.44ID:sJPwA8RMもう少し実用性が有って役に立つお題を考えなさいよ。
0988デフォルトの名無しさん
2015/10/06(火) 22:26:58.55ID:U0RhR/1j0989デフォルトの名無しさん
2015/10/06(火) 22:35:33.99ID:sJPwA8RMただの数字を羅列するだけのお題なんてつまらないわよ。あんたもう少し気の利いたお題考えなさいよ。いいわね。
0990デフォルトの名無しさん
2015/10/06(火) 22:59:37.19ID:YetVXLTihttp://ideone.com/yAXRHN
0991デフォルトの名無しさん
2015/10/07(水) 04:10:18.62ID:/LBHrMRL感じになったなw
0992デフォルトの名無しさん
2015/10/07(水) 04:19:36.01ID:fAxGwSAE0993デフォルトの名無しさん
2015/10/07(水) 06:43:14.97ID:J7P6wmmUhttp://ideone.com/tpJimX
パターンマッチングが頑張る
0994デフォルトの名無しさん
2015/10/07(水) 11:50:52.46ID:04crvgdqツンデレ
0995朗報
2015/10/07(水) 12:50:46.74ID:/LBHrMRLとかは
6[ 4>4<>.2>]
と書いてもいいことにすれば
BrainF*ckでももっと大きなプログラム
が上げられるYo
0996デフォルトの名無しさん
2015/10/07(水) 18:57:10.34ID:fAxGwSAE0997デフォルトの名無しさん
2015/10/07(水) 20:21:14.13ID:c4LYwtKohttp://peace.2ch.net/test/read.cgi/tech/1444216746/l50
0998デフォルトの名無しさん
2015/10/08(木) 03:46:12.12ID:UBdHSGOZ0999デフォルトの名無しさん
2015/10/08(木) 07:59:04.22ID:1qyfWFZNそして>>984に泣いた すごすぎ
1000デフォルトの名無しさん
2015/10/08(木) 14:23:04.64ID:kaOucKBf10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
10021002
Over 1000Thread運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
http://premium.2ch.net/
レス数が1000を超えています。これ以上書き込みはできません。