トップページ⇒tech
1002コメント387KB

プログラミングのお題スレ 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:XyyhtFlt
過去スレ
5 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:XyyhtFlt
>>1次スレ立てるときのメモ
mail欄はsageteoff
0004デフォルトの名無しさん2015/04/19(日) 08:41:01.48ID:499dPEsl
前スレ >>984
@Mathematica

http://ideone.com/PNfH13
000542015/04/19(日) 08:53:13.36ID:499dPEsl
一ヶ所バグ見つけた、スマソ。

修正版:
http://ideone.com/xCuVGQ
0006デフォルトの名無しさん2015/04/19(日) 15:24:17.99ID:QL2TDW9A
お題:
CDを積み上げた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
>>6
森にお帰り
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/Rp3k5
>>6は17手?
0010デフォルトの名無しさん2015/04/19(日) 20:59:04.90ID:1mXx6e32
>>8
ハノイの塔解くだけなら再帰は不要だもんな。
0011デフォルトの名無しさん2015/04/19(日) 21:42:30.83ID:jVWc52Q3
あの、お題っていうか質問もOKですか?
修正して欲しいんですけど
0012デフォルトの名無しさん2015/04/19(日) 21:48:01.35ID:QeOPKk73
いいかどうかは内容によるが‥それって宿題?http://peace.2ch.net/test/read.cgi/tech/1408962564/
0013デフォルトの名無しさん2015/04/19(日) 22:09:46.09ID:G8ijS8/c
>>8
ぐぐれ
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
>>12
質問しようとした後に解決しました
0015デフォルトの名無しさん2015/04/21(火) 13:43:03.07ID:h/4KxI3L
>>6 C
http://ideone.com/ozSyPR
ideoneの5秒制限になんとか収まった
0016デフォルトの名無しさん2015/04/22(水) 09:02:20.22ID:EjMM/uR2
お題: 回文(Palindrome)

1から任意の整数の間に、逆から読んでも同じ数となるような数
(131 とか 24642 のような数)がいくつあるか求めてください

例:1〜11の場合、10以外は左右どちらから見ても同じ数になるので10個

サンプルとして 1〜77777 の場合を求めてみてください

解答例(C言語):
http://ideone.com/tf4HaW
0017デフォルトの名無しさん2015/04/22(水) 10:14:30.61ID:s50RILJh
>>16
ttp://ideone.com/W6QWtU
C++。あってるかな。関数の切り方にちょっと悩んだ。
0018デフォルトの名無しさん2015/04/22(水) 13:40:28.78ID:ttLBdBNj
>>16 Java
http://ideone.com/ZbVF4X
0019デフォルトの名無しさん2015/04/22(水) 14:23:39.16ID:73pI9GPx
>>16
$ 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
>>16 J
+/ (-: |. &. ":)"0 >: i. 77777
876
0021デフォルトの名無しさん2015/04/23(木) 02:31:21.11ID:Zj+Mf1q4
>>16 haskell
http://ideone.com/vRdSZY
0022デフォルトの名無しさん2015/04/23(木) 03:47:13.95ID:r6E26dzh
>>16 Ruby
http://ideone.com/zmWDHB
0023デフォルトの名無しさん2015/04/23(木) 06:57:51.35ID:r6E26dzh
>>16
少し短くなった
https://ideone.com/KEkL3t
0024デフォルトの名無しさん2015/04/23(木) 07:05:00.69ID:r6E26dzh
>>16
何度もすまん
https://ideone.com/vbNQBl
0025デフォルトの名無しさん2015/04/23(木) 12:05:16.10ID:ED5B2lIF
>>16 Java
ttp://codepad.org/dUCHywPU
0026デフォルトの名無しさん2015/04/23(木) 13:25:57.63ID:ED5B2lIF
>>16 Java
ttp://codepad.org/jhajiA13

>>25 は間違えた
0027デフォルトの名無しさん2015/04/23(木) 15:48:24.62ID:zpz2iPld
>>6 Haskell
http://ideone.com/FDuADy

>>16 Haskell
シンプル http://ideone.com/oDak6h
高速 http://ideone.com/1OaYZ5
0028デフォルトの名無しさん2015/04/23(木) 16:51:00.77ID:ED5B2lIF
>>16 Java
ttp://codepad.org/OTJ7hxTF

>>26 まだバグが残っていた
0029デフォルトの名無しさん2015/04/23(木) 20:18:48.74ID:sLyuD+KM
お題:n個の整数の並びが与えられる。(1 <= n <= 1000000)
この並びの任意の位置から連続した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:zpz2iPld
>>29 Haskell
import 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:VOQkakNg
>>29
C++
http://ideone.com/kyYbYS
0032デフォルトの名無しさん2015/04/24(金) 00:04:10.11ID:5q3CaoMe
>>29
ttp://ideone.com/gVduTO
C++。正直>>31が理解できなかったので、理解するために書いた。遅いよ。
0033デフォルトの名無しさん2015/04/24(金) 01:09:01.72ID:BOC1RPMa
>>29 Ruby
O(n)
n=800000 で3.5秒
http://ideone.com/njhwPG
0034デフォルトの名無しさん2015/04/24(金) 07:43:51.12ID:kOI58QZS
>>29 サンプル例の追加
n=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:Fj4jFnZ5
>>29 C
http://ideone.com/mhSKuL
n=1000000の時の答え合わせに>>31さんの方法を
使わせていただきました
0036デフォルトの名無しさん2015/04/24(金) 15:20:10.00ID:Fj4jFnZ5
>> 34
出現数値の偏りにそれほどこだわらないなら大きな数を1から順に割って
その数から目的のデータを作るってのはどうでしょう

例:C
http://ideone.com/PakckH
例:Haskell
http://ideone.com/IB33HQ

整数の割り算ということに気を付ければ言語によらず同じ結果が
得られそうな気はします

例で示した被除数の 123456789012345678 は64bit整数型で扱える数で
打ち間違えにくいように1から順に18桁並べただけで、数字自体に
特に意味は無いです
(数の選び方によって偏りを少なくできるとかあるのかもしれません)
0037デフォルトの名無しさん2015/04/24(金) 18:48:30.96ID:kOI58QZS
>>36
ありがとうございます。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
>>29
半年ぶりくらいの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:5AfRCLH1
>>16 Python
http://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:iBeGX6EQ
>>16
Python3で。
https://paiza.io/projects/rU853W4pytivHv2bCGPzLw

>>20,21の理屈はわかるが、Pythonでの実装が出来なひ・・・
0041デフォルトの名無しさん2015/05/01(金) 14:31:24.98ID:9G1+bMO9
お題:ちょうどn個(1 < n)の格子点(x座標もy座標も整数の点)を通る円の半径の
最小値を求める。円の中心点は格子点でなくてよい。
例
n=2 -> 0.5
n=5 -> 16.170331
n=6 -> 2.5
0042デフォルトの名無しさん2015/05/01(金) 18:56:38.52ID:T0v4P88i
6が5より小さいっておかしくね?
0043デフォルトの名無しさん2015/05/01(金) 19:57:21.58ID:xQOVo91L
ちょうどn個を通る円だから別におかしくはないと思うべ
0044デフォルトの名無しさん2015/05/01(金) 20:17:19.05ID:FLjxIOyJ
n=6の解から任意の1点を減らせばn=5も2.5ってことに・・・
1点減らした5点はそのまま同じ円を通るんだし
なので解は必ず n+1の解 >= nの解 となるような気がする
0045デフォルトの名無しさん2015/05/01(金) 20:23:37.36ID:yafupUA1
減らすって意味わかりませんがw
0046デフォルトの名無しさん2015/05/01(金) 20:28:40.32ID:FLjxIOyJ
ああ、そういうことか
n=5は5個ぴったり(5個より多いのは含まない)ってことなのね
任意に設定した点を通る という意味かと思ったわ
0047デフォルトの名無しさん2015/05/01(金) 21:39:43.70ID:43Y0oyen
数学はわからん!Orz
0048 ◆QZaw55cn4c 2015/05/01(金) 21:57:45.21ID:8Yyb98Ue
これも数論か‥
シュタインハウスの問題と呼ばれているようだね
http://infoshako.sk.tsukuba.ac.jp/~hachi/COS/combin.jp/maebara_08.pdf 定理7-1
0049412015/05/02(土) 03:38:54.35ID:jF3p9Tcq
>>41 訂正
n=5の場合、以下の方が小さかったです。すみません。
n=5 -> 6.25
0050デフォルトの名無しさん2015/05/02(土) 23:40:09.79ID:JnlLatCo
ランダムにn個点を選んでそれが円周上にあるかチェックするみたいな
頭の悪い方法しか思いつかない
代数的にやったほうがいいのかなあ
0051デフォルトの名無しさん2015/05/03(日) 03:11:51.36ID:TxyRXx/w
n=5の場合
x=5/6, y=5/6を中心に半径sqrt(625/18)≒5.89256かも知れんね
0052デフォルトの名無しさん2015/05/03(日) 12:01:26.71ID:RahNxiIo
とりあえず、−50から+50くらいまで制限してみたらどうかな?
0053デフォルトの名無しさん2015/05/04(月) 03:41:04.46ID:uRpO/aWf
>>41 Haskell
一応解けたけどn=5の時の答えが一致しない
http://ideone.com/WibF1p
0054デフォルトの名無しさん2015/05/04(月) 04:04:31.40ID:imk+xUyg
>>51と一致してるやん
0055デフォルトの名無しさん2015/05/04(月) 04:08:05.16ID:uRpO/aWf
ああ、気づいてなかった
0056デフォルトの名無しさん2015/05/05(火) 15:18:54.52ID:H4XzqbDo
半径128まで検索してみたがn<=20のうち17と19が見つからん…
0057デフォルトの名無しさん2015/05/05(火) 15:33:14.43ID:BGv+Ql+D
おいQZお前こっちで必要とされてないからって宿題スレ荒らすなよ
0058デフォルトの名無しさん2015/05/05(火) 18:17:45.73ID:u63F52Uq
>>57
呼んでもないのに出てくるなよ。
0059デフォルトの名無しさん2015/05/06(水) 03:20:59.74ID:gsFpCXg1
>>53
それHaskellで書かなきゃいけないようなプログラムかな
逆にすごくわかりにくくなっている
0060デフォルトの名無しさん2015/05/06(水) 10:46:33.24ID:93pCkaKt
約17時間かけて半径512まで調べたがn=17とn=19が出てこないから困る
検索打ち切ってるところにn=17,19がある可能性
32bit整数がオーバーフローしてる可能性
そもそもプログラムが間違えている可能性

計算でぱぱぱっと結果出せないかなー…
0061デフォルトの名無しさん2015/05/06(水) 11:23:44.80ID:Iqww/TfG
円の中心が、一番近い格子点を原点としたときの偏角が45°倍数ではない点で答えになることってある?
nが偶数なら格子点上か(0.5,0.5)の点が中心になり
奇数なら(0,k)か(k,k)(k:は任意実数)が中心になるんではないか

それなら半径x以下を調べるのがO(x)で出来そう
0062デフォルトの名無しさん2015/05/06(水) 11:24:52.05ID:/1rfMabx
2点と半径設定したら一意で決まるだろ?
小さい円から網羅していけばいいのでは。
0063デフォルトの名無しさん2015/05/06(水) 11:37:09.99ID:/1rfMabx
円周上の2点の座標と半径から円を作図する方法

http://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:93pCkaKt
>>61
n=7(9/22,5/22)
0065デフォルトの名無しさん2015/05/06(水) 12:26:40.95ID:/1rfMabx
原点とX軸のX>0を選んだ時、半径変更で、
すべてのn>=2に対して円周上にn個の格子点をふくむようにできるか?
0066デフォルトの名無しさん2015/05/06(水) 12:45:18.82ID:Iqww/TfG
>>61
完全に勘違いしてた kが実数なのに(0,k)をO(k)で探索するなんて無理な話だった
>>64
即反例がでて悲しい
ちなみにそれ中心の半径いくつで7になるんですか?
0067デフォルトの名無しさん2015/05/06(水) 12:51:22.77ID:93pCkaKt
>>66
R=23.890677 R^2=138125/242
結構小さい
0068デフォルトの名無しさん2015/05/06(水) 12:56:00.09ID:/1rfMabx
上下左右に平行移動させることで原点とX軸上の点は必ず通るとしていいよな
0069デフォルトの名無しさん2015/05/06(水) 13:06:21.47ID:+6vRJGiM
>>59
好きでHaskell使ってるんだよ
適した言語があるなら教えてほしい
0070デフォルトの名無しさん2015/05/06(水) 14:55:21.65ID:/1rfMabx
>>48によると、(4*x-1)^2+ (4*y)^2 = 5^16の格子点は17個のはずだが。
最小半径を求めるには使えんな。
5^16 = 152587890625
0071デフォルトの名無しさん2015/05/06(水) 18:10:02.29ID:/1rfMabx
実数が出てくると大変になるから、3点の格子点を与えて他に格子点があるか数えるのがいいか。
3点で円が一意に決まる。平行移動で3点は第一象限にとっていいか。
とりあえず100*100に限定すると、3点のとりかたは同一だとみなせるのを除去とたらいくつだろうか?
0072デフォルトの名無しさん2015/05/06(水) 18:35:26.70ID:/1rfMabx
これは同一配置とみなせて3点の選び方はcomb(100*100, 3)/8か。20827083750通り。
16*16だと、345440とおりだ。



□□□□ □□□■
□□□□ □□□■
□□□□ □□□■
■■■□ □□□□

■□□□ ■■■□
■□□□ □□□□
■□□□ □□□□
□□□□ □□□□

□■■■ □□□□
□□□□ ■□□□
□□□□ ■□□□
□□□□ ■□□□

□□□□ □□□□
□□□■ □□□□
□□□■ □□□□
□□□■ □■■■
0073デフォルトの名無しさん2015/05/06(水) 21:06:36.30ID:b3w9X6pc
>>http://peace.2ch.net/test/read.cgi/tech/1418278634/963

Python 2.7
GWの暇つぶしにやってみました

http://ideone.com/LhvO7D

※制限事項
重量の小数点以下の桁数は1以下であること、2桁目以降がある場合は切り捨てて実行します
0074デフォルトの名無しさん2015/05/06(水) 23:28:42.12ID:b3w9X6pc
>>http://peace.2ch.net/test/read.cgi/tech/1418278634/984
Python 2.7

https://ideone.com/ldNnLS

※制限事項
単純に処理すると全部最短経路になるようなので特に「最短経路」に関する処理をしていません
前提が変われば処理修正が必要になります
0075デフォルトの名無しさん2015/05/07(木) 08:25:29.14ID:fp1OfwiH
三点の格子点を与えたら、円周にその点を含む円を求めて他の格子点を出力するプログラム。
並列処理できるからGPUとか分散コンピューティングとかのベンチマークになりそう。
0076デフォルトの名無しさん2015/05/08(金) 16:04:38.05ID:yNFQd1Zk
探索端折り過ぎて最小じゃないかもしれない35と53
N=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
円の方程式を(x-a)^2 + (x-b)^2 = r^2として
格子点 (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:yNFQd1Zk
なるほどわからん
0080デフォルトの名無しさん2015/05/08(金) 17:11:04.08ID:rlI7+SsF
>>77>>78がわからない? 別の方針で探索?
三角形に外接する円で、合同三角形を除外し、半径で打ち切りし探索するのが良さげと思ったが。
0081デフォルトの名無しさん2015/05/08(金) 17:12:35.09ID:R3VV3ruE
マジレスすると、(0, 0)は必ず通るとして(C, 0)を通るとは限らないよ
例えばn=3のときとかね
0082デフォルトの名無しさん2015/05/08(金) 17:17:54.05ID:rlI7+SsF
>>81
そうだ。移動や回転でX軸に持っていけると思ったら整数値でなくなる。
0083デフォルトの名無しさん2015/05/08(金) 17:56:39.86ID:rlI7+SsF
原点と、平面上の第一象限で0度から45度の座標(a,b)で√(a^2+b^2)の小さい順に2点目を取り、
3点目は正弦定理で円の半径を限定しつつ決めればいいか。


正弦定理 
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
お題:C言語限定。文字列の集合strsが与えられる。
さらに、「文字列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
>>84
ガバガバな出題だな
http://ideone.com/NaV8MO
http://ideone.com/UlQvR0
0088片山博文MZ ◆T6xkBnTXz7B0 2015/05/09(土) 00:15:06.77ID:IBcmzD7P
>>87
まだこの頭脳はinsaneだから、細かい所に不具合がある。
case 0:は必要だったね。nameじゃなくてpだね。ごめんよ。
0089デフォルトの名無しさん2015/05/09(土) 00:17:05.78ID:v8DO1laq
なるほど
すげーよく整理されてる
0090片山博文MZ ◆T6xkBnTXz7B0 2015/05/09(土) 01:01:46.09ID:IBcmzD7P
お題:>>87をさらに改良できるヤツは居ないか?
0091片山博文MZ ◆T6xkBnTXz7B0 2015/05/09(土) 01:20:42.41ID:IBcmzD7P
候補がある程度以上多い場合は、ハッシュを使った方がいいかも知れない。
それをスマートに判定して切り替えることはできないか?
0092片山博文MZ ◆T6xkBnTXz7B0 2015/05/09(土) 01:56:13.56ID:IBcmzD7P
SIMD、先読み、ハッシュ…
0093デフォルトの名無しさん2015/05/09(土) 04:58:10.84ID:0eap6abI
トライ木なんだからダブル配列でやれば?(適当)
0094デフォルトの名無しさん2015/05/09(土) 05:35:51.17ID:WDrUd2Zm
再帰でやりたい
strsに重複があったらどうするか…
0095デフォルトの名無しさん2015/05/09(土) 22:04:06.89ID:2bA/PfbD
>>41>>83数学的に考察してみた。間違ってたら訂正よろ

原点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:wRhRlmIF
爆発するぞ。するぞ!Orz
0097デフォルトの名無しさん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
>>95
案の定間違ってた…
�Aを�@へ代入するところBx<0のときは成り立たないので場合分けする必要があるな
0099片山博文MZ ◆T6xkBnTXz7B0 2015/05/09(土) 23:20:39.86ID:IBcmzD7P
お題:C言語限定。アドレスa0からnバイト分の読み書き可能なメモリーブロックの簡単なメモリーチェック。
0100デフォルトの名無しさん2015/05/09(土) 23:27:29.73ID:P1lrEbUi
>>95は常連のhaskellおじさんかな?
0101片山博文MZ ◆T6xkBnTXz7B0 2015/05/09(土) 23:32:42.79ID:IBcmzD7P
>>87
このソースをパブリックドメインにしてもいいですか?
0102デフォルトの名無しさん2015/05/09(土) 23:34:24.44ID:1wgbTbIM
>>97
考えたら同じではなく似てるだけだった。描写は近似した整数点でもいいので。
0103デフォルトの名無しさん2015/05/10(日) 00:06:22.02ID:CCUjLZHW
>>101
何をするのか知らないけど、どうぞ
0104デフォルトの名無しさん2015/05/10(日) 00:28:10.08ID:fqW2K+gx
>>97
proce55ingは…主流では無いかなあ?

でもjavaで動いてprocessing.jsもあるから少しの変更でブラウザでも
動くから大抵の環境で動作するんじゃないかな?
jsfiddle.netで公開もできるし
0105デフォルトの名無しさん2015/05/10(日) 23:58:40.59ID:HYyw/XzX
>>97
> マルチプラットフォームで図形描写する

思いつきだけど、canvas(とsvg)とか どうだろうか
http://ja.wikipedia.org/wiki/Canvas%E8%A6%81%E7%B4%A0
0106デフォルトの名無しさん2015/05/13(水) 01:39:35.99ID:HT6TaREL
プログラミングコンテストチャレンジブック第2版って本を買ってきたけど
このスレ的にはどうなのよ
0107デフォルトの名無しさん2015/05/13(水) 09:16:20.77ID:Fx6ryoFE
n^2から(n+1)^2までの間に必ず素数が存在するかどうかは未解決問題らしい
0108デフォルトの名無しさん2015/05/13(水) 13:04:43.46ID:ELTMIXW3
連続する2つの素数の間隔は600以内って証明されてるからそれも証明できるんじゃね?
(n+1)^2-n^2 <= 600 であるような n についてだけ素数を確認すればいいから
0109デフォルトの名無しさん2015/05/13(水) 13:16:52.23ID:RNPZGRSt
>>108
どんな大きい数Nに対してもN <= aがあって、区間(a, a+600)に素数が含まれるだろう。
0110デフォルトの名無しさん2015/05/13(水) 14:29:47.42ID:dc+Mu+3b
http://www.trnicely.net/gaps/gaplist.html
600以内って証明されてるの?
0111デフォルトの名無しさん2015/05/13(水) 15:34:11.65ID:PDozDIS+
>>108
ttp://www.47news.jp/smp/CN/201402/CN2014022601001180.html
これ言ってんのかもしれたいけど、全ての隣接する素数の間隔が600以内とは違うぞ。
0112デフォルトの名無しさん2015/05/13(水) 15:41:30.24ID:PDozDIS+
つーか、任意のnに対して、n個の連続する数が全て素数ではない所が存在することは簡単に示せるよ。
(n+1)!+2, (n+1)!+3,…(n+1)!+n+1
は、全て合成数。
0113デフォルトの名無しさん2015/05/13(水) 17:37:03.26ID:RNPZGRSt
>>109
は間違った。これは当たり前で。こっちか。

どんな大きい数Nに対してもN <= aがあって、区間(a, a+600)に2つの素数が含まれるだろう。
0114デフォルトの名無しさん2015/05/14(木) 06:01:15.56ID:W2iLHg+g
お題:440Hzの音をだす
0115デフォルトの名無しさん2015/05/14(木) 07:10:23.71ID:3LY3Y9ta
// beep.cs
// 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:wgcm9SnC
>>114 JavaScript
var ac = new AudioContext(), o = ac.createOscillator();
o.connect(ac.destination);
o.start();
0117デフォルトの名無しさん2015/05/14(木) 18:15:38.89ID:tu5PNrB+
>>41はいったいどこまで求まってるんだ?
0118デフォルトの名無しさん2015/05/14(木) 19:56:36.53ID:rp22TBsk
>>117
俺が計算したのではこんなん
ただし半径256以上は最小じゃないかも知れないから注意

http://ideone.com/2WBTbl
0119デフォルトの名無しさん2015/05/14(木) 19:59:13.35ID:rp22TBsk
64KB以上になって一番下切れてるわw
0120デフォルトの名無しさん2015/05/14(木) 20:02:19.86ID:gFnFPpwL
[console]::Beep(440,1000)
0121デフォルトの名無しさん2015/05/14(木) 21:09:48.14ID:LRwinxcP
「フィボナッチ時計」現る 時刻をフィボナッチ数の正方形で表現
http://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+
>>118
やってみようとしたら計算途中ですぐオーバーフロー。
0123デフォルトの名無しさん2015/05/14(木) 22:33:22.99ID:rp22TBsk
>>121 Java
http://ideone.com/MvIEqv
01241222015/05/14(木) 23:35:34.97ID:tu5PNrB+
原点通るのと、多倍長演算使ったら、正しく計算できた。
0125デフォルトの名無しさん2015/05/15(金) 01:52:12.47ID:Qr95k8cQ
>>121 J
f =: 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
>>118
これは何分くらい計算しましたか?
自分でやったのは15分くらいやってもっと精度が悪かった。
>>118で求まってない47個に絞って高速化を測ってみよう。
0127デフォルトの名無しさん2015/05/15(金) 19:25:32.61ID:QL9b63wQ
>>126
何分回したか覚えてないが15分回して半径1850までだったわ
0128デフォルトの名無しさん2015/05/15(金) 19:32:03.74ID:Fu7EElRX
>>127 サンクス

実測してないけど。円の方程式を与えた時に円周に乗ってる格子点を数えるのが時間食ってるはずで、
正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:Qr95k8cQ
>>114 十進Basic
beep 440,1000
END
0130片山博文MZ社外取補 ◆T6xkBnTXz7B0 2015/05/15(金) 20:04:50.35ID:hBLf1mma
お題:音楽再生用のアナログテープレコーダーにおいて
テープがずれたときの音響効果を再現せよ。
0131デフォルトの名無しさん2015/05/15(金) 20:15:47.79ID:1SR5Grtl
// speak.js
var spv = WScript.CreateObject("SAPI.SpVoice");
spv.Speak("qawsedrftgyhujikolp;");
0132片山博文MZ社外取補 ◆T6xkBnTXz7B0 2015/05/15(金) 20:39:36.46ID:hBLf1mma
>>131
テープレコーダーの再生の仕組みを再現する必要がある。

さあ、絶望を味わえ。おのれの未熟さを痛感しろ。
0133デフォルトの名無しさん2015/05/16(土) 00:04:48.68ID:CabkBQjc
アホなお題だなと思ったら出題者は案の定ビョーキの人か
0134デフォルトの名無しさん2015/05/16(土) 00:45:20.24ID:35PZJ6Jd
>>133
おまえは宿題スレから出てくるなよ
0135デフォルトの名無しさん2015/05/16(土) 06:29:37.05ID:fG0ClAbZ
お題:四則演算。剰余の演算子または関数、メソッドを
使わずにFizzBuzz問題を解
0136デフォルトの名無しさん2015/05/16(土) 08:25:17.40ID:EZH0vInn
一応知っておいてもいいだろうけど効率は逆に悪そうだな
0137デフォルトの名無しさん2015/05/16(土) 10:24:52.52ID:/L8Apnqu
四則演算駄目だったらループカウンタのインクリメントも駄目だな
0138デフォルトの名無しさん2015/05/16(土) 10:32:13.07ID:Xo5bM6FI
そもそもprintfにあたるものが関数ではない言語でしかできない
0139デフォルトの名無しさん2015/05/16(土) 11:12:15.88ID:fG0ClAbZ
>>138
えー、なんでそんな拡大解釈するかな
たとえば、cなら+,-,*,/,%を使わずにというつもりなんだけど
剰余は、演算子じゃなくて関数やメソッドになっている言語もあるので
そうかいただけ
関数、メソッドが全部、禁止なんてかいたつもりないけど
0140デフォルトの名無しさん2015/05/16(土) 12:00:36.09ID:/ON7fb4I
> 剰余の(演算子または関数、メソッド)を使わずに

このカッコがないとパースできない頭脳は人間よりも先行者に近い
0141デフォルトの名無しさん2015/05/16(土) 12:03:15.08ID:Zn7RHpQ7
>>137
意味不明
(ループは使わないけれど)
inc,decは四則演算子じゃない
0142デフォルトの名無しさん2015/05/16(土) 12:23:26.19ID:/L8Apnqu
>>139
プログラムは考えられうることを考慮するんですよ。
どうとでも突っ込まれる曖昧な物言い(出題など)は駄目ですよ。
言葉に気を付けましょう

>>141
i++ は i = i + 1 なんですよ
0143デフォルトの名無しさん2015/05/16(土) 12:30:28.86ID:EZH0vInn
問題: 誰が読んでも齟齬の無い問題文を出せw
0144デフォルトの名無しさん2015/05/16(土) 12:43:34.53ID:ASNC2Pc+
fizzBuzz=map f $ zip3 [1..](cycle[1,2,3])(cycle[1..5])
 where
  f (_,3,5)="FizzBuzz"
  f (_,_,5) ="Buzz"
  f (_,3,_) ="Fizz"
  f (x,_,_) =show x
0145デフォルトの名無しさん2015/05/16(土) 12:50:32.73ID:b6wyU2Fn
>>142
なんて馬鹿なんだ
おまえ、キモイからレスするなよ

はいNG
0146デフォルトの名無しさん2015/05/16(土) 13:13:10.21ID:Itk97lw+
andとxor使ってadd作るのはダメなんかの?

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+
>>118
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
原点を通る円の方程式は、f(x,y) = (c*x-a)^2+(c*y-b)^2-a^2-b^2;と置くとf(x,y) =0

円周の三時の位置付近の格子点から、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
>>135 Squeak Smalltalk

| 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:SJX8fmIU
>>128によると、(4x-1)^2 + (4y)^2 = 5^46は47点の格子点を持つはずだが、
yの動く範囲が0〜2980232238769531で計算せずともインクリメントするだけでも相当な時間かかる。
いったいどうやったら47点を求められるのか?
>>149のようにしたら円周にそって格子点候補が求まるがそれでもループ回数は同じ。
0152デフォルトの名無しさん2015/05/16(土) 23:25:44.84ID:SJX8fmIU
半径の大きさに拘らなければ>>48で具体的な解が求まるな。
zを複素数、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:YC8igNN2
>>118
7のとき最小は確実だとして。円の方程式にすると、(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:YC8igNN2
逆に格子点を22倍にできる余地があって、
X^2 + Y^2 = 2^3*127*2719は平行移動で154(7*22)点の格子点を通るようにできるとかか?
0155デフォルトの名無しさん2015/05/17(日) 02:02:56.39ID:YC8igNN2
たまたまmod 4での、X^2 + Y^2 ≡ Cの解が4つなだけで関係性はないか。
mod 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:muk8ohrW
『天書の証明』の第4章に詳しい証明が載ってるよ
http://u.cs.biu.ac.il/~margolis/Sadna/Proofs%20rom%20the%20Book%203rd%20Ed..pdf

日本語版も丸善出版から出てるはず
0158デフォルトの名無しさん2015/05/17(日) 12:52:33.45ID:nYjMnLoA
>>135 Emacs Lisp

(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:YC8igNN2
X^2+Y^2=Nの格子点で、128点生成できる最小のNは5^3*13*17*29で、256点生成できる最小のNは5^2*13*17*29*37かと。



N = 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
>>159
と思って>>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+Vo19d
ID:YC8igNN2は47個見つかったんかね?
0162デフォルトの名無しさん2015/05/19(火) 10:59:10.05ID:S02ugk9h
整数Nが回文かどうか判定するプログラムを書いて。
ただし文字列型を使うのは禁止ね。

つまりNを文字列に変換してそれを反転させて比較するのはダメってこと。
0163デフォルトの名無しさん2015/05/19(火) 11:31:47.36ID:MQMNHW3R
ヤコビの二平方和定理を使えばx^2+y^2=nの整数解の個数を求められそうだね
0164デフォルトの名無しさん2015/05/19(火) 16:39:18.56ID:J5n0/uIW
>>163
その公式は初めて知ったが。
すでに個数だけでなくその具体的な解まで判明してるがそれでも最小半径は簡単ではない。
素数は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+Vo19d
>>162
http://ideone.com/zNugUr
01661652015/05/19(火) 16:46:16.94ID:Da+Vo19d
Javaって書くの忘れてた
0167 ◆QZaw55cn4c 2015/05/20(水) 19:41:45.08ID:2T6/P0Lm
>>162
>>165 の翻訳
http://peace.2ch.net/test/read.cgi/tech/1313183984/800
0168デフォルトの名無しさん2015/05/21(木) 04:49:33.68ID:NcgsUaMq
>>135 R
FizzBuzz <- 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:NcgsUaMq
>>162 R
f <- 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
>>162 Squeak Smalltalk

| 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:NcgsUaMq
>>162 Julia
function 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:4DltYx6W
みんな順番に出題する側にもまわってくれないと続かないと思う。
0173デフォルトの名無しさん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:TCe7XEwZ
まったく解法の見当もつかんw
0175デフォルトの名無しさん2015/05/23(土) 14:05:35.40ID:CdB4mnZs
チンコショボーン
0176デフォルトの名無しさん2015/05/23(土) 18:41:03.49ID:KLESbJHw
>>173
O(n^2)はすぐ思いつくけど、計算量が厳しそうだな・・・
0177デフォルトの名無しさん2015/05/23(土) 19:41:48.57ID:xvr22N4V
愚直に2点の全パターンを試すO(n^3)しか思いつかない自分にO(n^2)の解法を教えてくり
0178デフォルトの名無しさん2015/05/23(土) 20:04:53.12ID:1SFlVJvM
枠が有限の折り紙としてもいいんだろ。
異なる二線分を選び、追ってみればできるか?
線分が重複しないケースもあるか? すくなくとも2点重なれば線分がかさなるか。
0179デフォルトの名無しさん2015/05/23(土) 20:17:17.58ID:1SFlVJvM
2点から等距離にある直線にしたらO(n*n)か。
0180デフォルトの名無しさん2015/05/23(土) 21:17:24.86ID:xvr22N4V
>>179 直線の数がn^2でそれぞれN(L)求めるのにnかかるからn^3では
0181デフォルトの名無しさん2015/05/23(土) 21:34:54.34ID:1SFlVJvM
検証するのにO(n)かかるってことか。
直線候補の抽出がO(n)で可能ってほんとかよ?
0182デフォルトの名無しさん2015/05/24(日) 00:58:29.75ID:RlzRxNiR
ごちゃごちゃ言わずに解答晒せやって思ったけど
テストケースを用意してない>>173のせいやな
0183デフォルトの名無しさん2015/05/24(日) 01:09:29.39ID:neLU6sWs
数学はわからんつってるだろ。(逆切れ。
0184デフォルトの名無しさん2015/05/24(日) 01:19:01.88ID:I/ZOM1+g
数学といっても中学レベルだろ?
小学生だったらいいが。
中学以上なのに理解できないとなるとヤバイのでは。
0185デフォルトの名無しさん2015/05/24(日) 02:42:51.04ID:neLU6sWs
題意を理解するのに10分以上かかる底辺なめんなよ。(さらに逆切れ)
0186デフォルトの名無しさん2015/05/24(日) 02:44:54.66ID:neLU6sWs
一応考えかた考えてみたけど、外側の点を洗い出して平行四辺形での中線を折ることを考えるとよさそうだとは思った。
数学怖い。
0187デフォルトの名無しさん2015/05/24(日) 03:28:30.16ID:RlzRxNiR
>>173 C++
http://ideone.com/vKMt7n
01881872015/05/24(日) 05:16:24.96ID:RlzRxNiR
答えの計算間違えた
3じゃなくて8だ
0189デフォルトの名無しさん2015/05/24(日) 16:41:09.92ID:+Ut0g5Td
>>173 Io
f := 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
>>173
たとえば (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
>>41の円問題は素因数分解並の難しさでは?
小さい順に網羅していけば求まったところまでは求まるけど。エラトステネスのふるいの様に。
それだと格子点数を勝手に与えた時、例えば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:xijIFAYn
Void!
Void!
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:xijIFAYn
ネタをネタとわからないと難しい。
0196デフォルトの名無しさん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:xijIFAYn
ID:CLPSKXwIはクリエーテビティ赤点な。
0201デフォルトの名無しさん2015/05/26(火) 05:14:44.55ID:1oDb+v9J
ヘミ猫たんのことだったら題意から外れていそうだ
0202デフォルトの名無しさん2015/05/26(火) 06:19:31.43ID:9h2BjrvB
脳が空っぽって単純に思わない?
0203デフォルトの名無しさん2015/05/26(火) 12:58:50.16ID:6Dkv9O3J
おいQZお前ほんとスレを荒らしてばっかだな
宿題スレに戻ってくるなよ
0204デフォルトの名無しさん2015/05/26(火) 13:07:07.66ID:gECC5ZzU
>>203
QZは頭の病気だからな
医者も措置入院させればいいのに
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:UiDv1Vcu
>>205
n = 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を全て求めよ
02082072015/05/26(火) 21:42:21.84ID:efMquilK
訂正
×全て求めよ
○1つ求めよ
0209デフォルトの名無しさん2015/05/26(火) 23:05:39.07ID:UiDv1Vcu
>>207 Java
http://ideone.com/8LRb06
0210デフォルトの名無しさん2015/05/26(火) 23:55:37.13ID:pWlDwc7e
6ビットの場合も64種類全部あらわれる
000001111110110111010101111001011001101001001110001010001100001000000
JavaScriptだと時間がかかった
0211デフォルトの名無しさん2015/05/28(木) 03:02:01.94ID:HpiHcMm6
お題:
複数の文字列があります(例:あさがお、ひまわり、ばら…)
これらをあいうえお順に並び替えなさい
0212デフォルトの名無しさん2015/05/28(木) 03:35:31.90ID:4sk1+J2t
>>211 Common Lisp
(defun sort-order-of-あいうえお (list)
(sort list #'string<))

(sort-order-of-あいうえお
'(あさがお ひまわり ばら ちゅーりっぷ さくら れんげ たんぽぽ こすもす))
; => (あさがお こすもす さくら たんぽぽ ちゅーりっぷ ばら ひまわり れんげ)
0213デフォルトの名無しさん2015/05/28(木) 03:54:08.42ID:2OA2b1Hf
文字コードってちゃんとあいうえお順で並んでるんだっけか?
0214デフォルトの名無しさん2015/05/28(木) 06:31:58.74ID:k9GSrpZW
あいうえお順がJISX4061とすると、必ずしも並んでると言えない
0215デフォルトの名無しさん2015/05/28(木) 07:02:10.29ID:2OA2b1Hf
それはつらいな。
0216デフォルトの名無しさん2015/05/28(木) 08:17:32.88ID:3K5uFNHw
バブルソートの書き方忘れちまったわ
0217デフォルトの名無しさん2015/05/29(金) 14:56:57.46ID:AjLw/6wQ
お題:数列Hが以下のように定義されているとき、H(2015)を求める。
H(0) = 0
H(n) = n - H(H(H(n - 1))) (n > 0)
0218デフォルトの名無しさん2015/05/29(金) 15:22:19.69ID:CjkVTpML
>>217 Java
http://ideone.com/zg8Pj2
数学解らんからこれで良いのかわからないw
0219デフォルトの名無しさん2015/05/29(金) 15:27:05.84ID:KO9INHN8
>>217 Haskell
http://ideone.com/tKQJh1
0220デフォルトの名無しさん2015/05/29(金) 15:34:53.49ID:7gkBDvqN
http://ideone.com/Ti6zYa

答え出ないんだが
こちらの処理系(gcc4.9.2)では1368
0221デフォルトの名無しさん2015/05/29(金) 15:38:47.23ID:CjkVTpML
>>220
const int N = 2005;
0222デフォルトの名無しさん2015/05/29(金) 15:45:05.87ID:7gkBDvqN
>>221
あ、ごめん
それと答え出たね

http://ideone.com/Q9tbKG
0223デフォルトの名無しさん2015/05/29(金) 18:33:58.90ID:mOKk8Lcr
H(2010)プログラム
0224デフォルトの名無しさん2015/05/29(金) 20:22:03.26ID:iCMpStJ7
アッカーマン関数みたいなもんか、メモ化すれば解けないこともないかな。
0225デフォルトの名無しさん2015/05/29(金) 21:35:20.97ID:iCMpStJ7
>>217
ttp://ideone.com/VlPAfS
C++。メモ化のアイディアいっちばーんとか思ってたら、みんなやってたわ。
なのであんまり面白いコードにならなかったなぁ。
0226デフォルトの名無しさん2015/05/29(金) 21:37:01.64ID:k/z27UFZ
ただのリカーシブコールの問題かと思ったら違うのかw
0227デフォルトの名無しさん2015/05/29(金) 21:43:56.07ID:gldsOPm0
>>217
http://ideone.com/4IUbLw Haskell
http://ideone.com/YPaDxI C
0228デフォルトの名無しさん2015/05/29(金) 21:52:45.50ID:iCMpStJ7
>>226
ただの再起関数問題だけど、再起回数が多いので処理量が多い。
多重ループ組んでるような窮屈感がある。
0229デフォルトの名無しさん2015/05/29(金) 22:16:08.95ID:k/z27UFZ
>>228
あーやっぱり再帰の問題は再帰の問題なのか。
なんかもっとまったく別のアプローチがあるのかと
0230デフォルトの名無しさん2015/05/29(金) 22:18:00.47ID:iCMpStJ7
最適化として、処理量を落とすことを考えるって感じなんだが。
まぁ、暇なら組んでみて。
0231デフォルトの名無しさん2015/05/30(土) 02:28:10.40ID:xl0Q5N5K
H(10000)=6823
であってる?
(JavaScriptで約1秒で計算)
0232デフォルトの名無しさん2015/05/30(土) 02:55:07.25ID:XGN93yVi
1000 682
10000 6823
100000 68233
1000000 682328
10000000 6823278
100000000 68232781
0233デフォルトの名無しさん2015/05/30(土) 07:03:27.91ID:oUtY+/A5
>>217 J
H =: 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:xl0Q5N5K
お題:回文数のスミス数(Wiki調べろ)を小さいものから100個列挙
0235デフォルトの名無しさん2015/05/30(土) 16:59:43.54ID:XGN93yVi
>>234 Java
http://ideone.com/cklUZ0
0236デフォルトの名無しさん2015/05/30(土) 18:17:14.61ID:xl0Q5N5K
>>235
よくできましたね

次は、奇数の完全数をひとつ見つけてみましょう
(完全数:自分自身を除く約数の総和が自分自身に一致
28=1+2+4+7+14など)
0237デフォルトの名無しさん2015/05/30(土) 18:29:37.97ID:aOrY5qKq
>>236
見つけたら名前が残るね‥
どこかで探索しているのかな?
0238デフォルトの名無しさん2015/05/30(土) 18:33:31.27ID:MYQQ8lln
完全数 - Wikipedia
紀元前より考察されている対象であるにもかかわらず、「偶数の完全数が無数に存在するか?」、「奇数の完全数は存在するか?」、「末尾が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+/A5
>>234 J
f =: 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
>>240
奇数完全数は未解決。
素因数が10^8以上の数に存在する可能性はある。
存在するなら計算機で解ける可能性はある。
0244デフォルトの名無しさん2015/05/31(日) 18:41:56.98ID:jHkPthzb
おいQZ隔離スレでトリップつけ忘れてるぞ
そうやっていつも自演してるから忘れんだろ無職
0245デフォルトの名無しさん2015/05/31(日) 20:42:44.87ID:ywCtFlc+
>>244
宿題スレからでてくんな。うっとおしい。
0246デフォルトの名無しさん2015/06/01(月) 13:53:15.66ID:EiVVrKyZ
>>234 Squeak/Pharo Smalltalk

| 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:/b2V8QjM
お題:
paizaのSランク問題を3時間で全問解け
0248デフォルトの名無しさん2015/06/03(水) 17:10:55.64ID:xfgrg7Y4
>>241 とかもそうだけど、出題者は、とりあえず自分で解いて公開できる状態にしてから
出題するってルールは本当に守られているのかね。
0249デフォルトの名無しさん2015/06/03(水) 17:56:10.27ID:UsIXtbxm
別に気に入らなきゃ無視すればいいだけだろアホか
0250デフォルトの名無しさん2015/06/03(水) 20:01:14.19ID:mcx3WV4g
それができないんだろ?QZは
0251デフォルトの名無しさん2015/06/03(水) 20:10:42.03ID:COS6vTt1
プログラミングやってるなんてのは精神病の比率高そうだからな
0252デフォルトの名無しさん2015/06/03(水) 23:42:43.46ID:aOqGEwFh
JSerとかに多いよね
0253デフォルトの名無しさん2015/06/04(木) 08:00:37.85ID:BptMwneT
精神病はQZに多いよね
0254デフォルトの名無しさん2015/06/04(木) 09:07:24.98ID:A81QgshT
JSerってイナゴみたいだね。バトルスレとか見てて思った
0255デフォルトの名無しさん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
>>255 Squeak/Pharo Smalltalk

| 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
>>258
最近あちこちに書いてる奴だから、触らない方が良い。
0260デフォルトの名無しさん2015/06/06(土) 12:40:30.58ID:ghnGBhwh
>>257
精神病の話題が出てあわてたか?
おまえな

なにしろ安易な自演認定は精神病の傍証そのもの
0261デフォルトの名無しさん2015/06/06(土) 12:53:41.67ID:M49TyJvh
おいQZ、ID変換が加速してるな
お前のファビョりぐあいを如実に表してるなおい
0262デフォルトの名無しさん2015/06/06(土) 13:07:23.00ID:ghnGBhwh
>>261
俺を誰と思った?精神病君。

これらが、おまえだ!と言うレス番号のリストを書き込んでみ?

俺は>>260だからな
旧イモバ3GだからIDは頻繁に勝手に変わる。おまえ、それさえ知らんし、教えられても、それ無視して故意に変えたんだとしか思えないだろ?精神病だもなあ

ま、俺が書いた自演リスト出してみろ
0263山下雄介 ◆1Bax/hBUwKIJ 2015/06/06(土) 13:29:54.74ID:jF9pW3bD
俺には工学の知識があるからお前らとは違うんだよ
0264デフォルトの名無しさん2015/06/06(土) 13:38:52.06ID:IVsptkgW
工学頭はhowで考える癖があるからあかん
0265デフォルトの名無しさん2015/06/06(土) 13:45:34.90ID:TEHNGSNb
>>257
念のため >>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
チンコtalkの俺はとうかな?

チンコグイーン!!
0268デフォルトの名無しさん2015/06/06(土) 23:13:35.73ID:TEHNGSNb
>>173 Squeak/Pharo Smalltalk

| 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:hr3tQ2QJ
自演王QZのうんこトーク
0270デフォルトの名無しさん2015/06/07(日) 05:46:14.21ID:F4jsoQ5+
>>255 Io
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
>>255 Squeak/Pharo Smalltalk 外積を使って。

| 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+
>>255 J
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
>>272
落書きなら自分のメモ帳でやれよ無職QZ
無駄レスするな
0274デフォルトの名無しさん2015/06/07(日) 13:30:20.89ID:IR8285sC
ここもへんなのに憑りつかれたね
0275デフォルトの名無しさん2015/06/07(日) 14:38:39.87ID:Aei0oKIv
>>273
引きこもり底偏差値精神病、哀れな人生だな
0276デフォルトの名無しさん2015/06/07(日) 20:06:02.11ID:sjmslyut
落書きとか。
知見の浅さがよくかもし出された素晴らしいレスだな。
0277デフォルトの名無しさん2015/06/07(日) 22:51:36.86ID:hr3tQ2QJ
>>276
自慢のコードをけなされて発狂か?
事実だからしかたないね
0278デフォルトの名無しさん2015/06/07(日) 23:00:53.39ID:B4A1i88e
ID表示されると、こんな風に都合が悪いので、
ID化に抵抗していた奴だろう。
0279デフォルトの名無しさん2015/06/07(日) 23:14:55.22ID:aEGjSSvQ
>>278
俺はID化に反対していたが、その理由はIDの存在こそがかえってスレッドと無関係な
「荒れ」を助長するから。

今実際そうなってるな。

しかし、そういう統合失調症みたいな話をよく恥ずかしげもなく書けるな。
言っちゃわるいけどこれが2ch脳か。
0280デフォルトの名無しさん2015/06/07(日) 23:53:07.90ID:hr3tQ2QJ
そりゃQZは自演厨だからID導入しようが関係ないからな
かえって単発でコメントして自演だと疑われなくなるからな
0281デフォルトの名無しさん2015/06/08(月) 00:14:16.95ID:ZCyLBFNO
つける薬がない。
宿題スレに帰れよ。
0282デフォルトの名無しさん2015/06/08(月) 00:21:43.71ID:BYDNcOl5
ハロワに変えるのはQZだろ
糞コード垂れ流して年月が経つ方が深刻
0283デフォルトの名無しさん2015/06/08(月) 00:26:18.83ID:ZCyLBFNO
こういう問答が一番需要ないんだよ。俺もお前も。
0284デフォルトの名無しさん2015/06/08(月) 02:01:06.69ID:vgqsPLS1
>>255 R

> 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:BYDNcOl5
後だしで糞コードだされても困るんだけどQZ
0286デフォルトの名無しさん2015/06/08(月) 02:27:57.99ID:zYY+ADpM
QZ急速に病態が悪化してるなw
0287デフォルトの名無しさん2015/06/08(月) 08:38:12.69ID:2liztMX7
なんでNGにしないの?ブラウザでみてるの?
0288デフォルトの名無しさん2015/06/09(火) 14:23:55.60ID:IUtGJvNP
>>255 F#

let 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/emkY
>>287
NGにするより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:qPaXw8OK
辞書暮
0293片山博文MZ ◆T6xkBnTXz7B0 2015/06/11(木) 00:06:59.26ID:zLNW2Jkb
☆ 「(名詞)といえば(名詞)。」でもOK。
☆ 同じ単語は二度と使えない。

>>292
ない
0294デフォルトの名無しさん2015/06/11(木) 00:11:37.11ID:xDKpfzbh
あばばばばばば・・・。
0295デフォルトの名無しさん2015/06/11(木) 00:22:40.68ID:hFqXak+Y
おいQZわけわかんないレスするなよ
自演の布石か?
0296デフォルトの名無しさん2015/06/11(木) 00:50:33.08ID:Yw4ulbNM
片山博文MZ=QZ?
0297デフォルトの名無しさん2015/06/11(木) 07:35:17.55ID:ddgaxHOq
らしいね。さらに、

 辞書すら用意してない == 自分は組んでない(組めない)

わけだから、このお題はスルーだな
0298片山博文MZ ◆T6xkBnTXz7B0 2015/06/11(木) 07:40:51.28ID:zLNW2Jkb
MZ≠QZ

インターネットにつながっていればいいのに。。。
0299デフォルトの名無しさん2015/06/12(金) 22:26:58.97ID:eWJlMPNb
> コンピューターの知識は前もってテキストファイルに格納しておく
ここの作り方が問題っていうことですか?
0300デフォルトの名無しさん2015/06/13(土) 07:24:27.03ID:Eq+WANys
MZは80B
0301片山博文MZ ◆T6xkBnTXz7B0 2015/06/16(火) 14:30:41.22ID:Xu7A0Hie
よろしく。
https://github.com/katahiromz/make_switch
https://github.com/katahiromz/MakeSwitch
0302デフォルトの名無しさん2015/06/16(火) 16:21:12.51ID:6MdaxgSR
>>301
これが>>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+jKQo
>>304 Python

def 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
03063052015/06/20(土) 12:57:37.15ID:fq3+jKQo
インデント消えた・・・

def 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
>>304 Squeak/Pharo Smalltalk

| 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
def f(n,a=[])
&nbsp;&nbsp;if n > 0
&nbsp;&nbsp;&nbsp;&nbsp;f(n-1,["Hello,",*a.map{|i|" "+i},"world!"])
&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;a
&nbsp;&nbsp;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:xvoMQVpa
つ全角スペース
0311デフォルトの名無しさん2015/06/20(土) 14:42:57.47ID:17g1JDvp
というかideone.comに貼り付ければいいじゃないの

最近直書きの流れ多いな
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
>>304 Emacs Lisp

(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
>>312
大文字ならn=6で4個見つかったが時間掛かるわー
270CF0
29813D
B910B8
C924C3

大文字n=7、小文字n=6,n=7だと見つからん
0315デフォルトの名無しさん2015/06/21(日) 00:47:54.56ID:Z784gdbw
>>304
ttp://ideone.com/0Fy72k
C++。ひっさしぶりにコード書いたわ。
0316デフォルトの名無しさん2015/06/21(日) 03:32:35.85ID:Z784gdbw
http://ideone.com/8Ctu7Z
https://ja.wikipedia.org/wiki/MD5

MD5を自作しようと思ってウィキペディアのコードパクってみたんだがどうにも数字が合わない。
何が間違ってるんだろうか・・・。Orz
0317デフォルトの名無しさん2015/06/21(日) 04:40:11.95ID:sM1nkpyG
>>316
真 d41d8cd98f00b204e9800998ecf8427e

偽 d98c1dd44b2008f980980e97e42f8ec
↓ 32bitで分ける
d98c1dd4 (0)4b2008f 980980e9 7e42f8ec
↓ エンディアン変換
d41d8cd9 8f00b204 e9800998 ecf8427e

出力のエンディアン?
0318デフォルトの名無しさん2015/06/21(日) 04:49:19.98ID:Z784gdbw
>>317
レポートありがとう。
あれ?ウィキペディアはリトル前提じゃなかったんかいな。
門外漢にはつらい仕打ちだ。
とにかく、バグがわかってよかったよ。
ありがとう。
0319デフォルトの名無しさん2015/06/21(日) 05:20:33.53ID:7H6WuTHm
>>304 Lua
function 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
>>321
(ΦωΦ)フフフ…
よし、教えてやる
オバアとかオジイは沖縄でも三線のことを今でも三味線という。戦前までは三味線と言っていたようだ。
(なお、内地では蛇革を使うので蛇味線という呼称が流布しているが沖縄人はそういう言いはしない)。
有名な三線店の仲尾次三味線店は古い呼称が残っている例だな。
戦後、日本の三味線と区別するためだろうか三線(さんしん)という呼称が普及したようだ。
なお、日本の三味は三線を原型として独自に発達し、世界的にも稀な「さわり」という共鳴機能が在るのが特徴だ。(俺は本職というとなんだが本来は太ざおの津軽三味線使いだ)

というわけで、聞きかじりの知識で断定するのはやめろ。
バグリーアルゴリズムを考えてしむうことにも繋がるぞ。
何事も確認が大切だ

きちっと確認
チンコおったちー
鉄兜装着!
敵開脚濡れ濡れ

よおーし
突撃!
アンアンアン
0323デフォルトの名無しさん2015/06/21(日) 12:28:58.85ID:8BXlXG8i
>>304 C#

https://ideone.com/mwFzvf

編集中はインデント綺麗にそろってるのに
なぜか実行結果画面だとインデント狂いまくってしまう・・・
0324デフォルトの名無しさん2015/06/22(月) 09:31:06.46ID:r4mYEAjg
>>312 Pharo Smalltalk (n=6 のみ)

| 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:mhAsnNtI
>>312
n=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%202015/06/23(火) 20:10:45.25ID:AmyrZbfN
お題:
1から100の数字を改行区切りで表示しろ
ショートコーディングでやれ
エソテリックランゲージの使用は歓迎

出力例:
1
2
3
(略)
98
99
100
0327デフォルトの名無しさん2015/06/23(火) 20:31:29.16ID:HEGeqkRQ
お題
1
12
123
1234
...
12345678910
1234567891011
....
12345678910...99
の中から素数になるものを列挙

(今のところ出題者は解答を得ていない)
0328デフォルトの名無しさん2015/06/23(火) 20:41:48.25ID:T+dh7ruf
簡単に64ビット超えるので厳しいです。@C++。
0329デフォルトの名無しさん2015/06/23(火) 21:11:50.17ID:X5qt4JaO
>>327 Java
http://ideone.com/6kzXxJ
全て合成数
0330デフォルトの名無しさん2015/06/23(火) 21:14:31.23ID:T+dh7ruf
>>312
http://ideone.com/p6eWKB
ギブアップ。MD5が動かない。C++。
エンディアン直したんだけど、それでも動かない。
わけわかめ。

どうして行政の扱うデータ構造ってビッグエンディアンなんだろう・・・。
0331デフォルトの名無しさん2015/06/23(火) 21:16:41.84ID:LEZiNEmr
Python3

>>326
list(map(lambda x: print(x), range(1,101)))

>>327
http://ideone.com/BXiPq2
解なし……でいいのか
0332デフォルトの名無しさん2015/06/23(火) 21:38:50.04ID:8yT8EnjL
>>326 Squeak/Pharo Smalltalk

(1 to: 100) asStringWithCr
0333デフォルトの名無しさん2015/06/23(火) 21:47:22.48ID:8yT8EnjL
>>327 Squeak/Pharo Smalltalk

(1 to: 99) collect: [:x | (((1 to: x) gather: #asString) as: String) asInteger] thenSelect: #isPrime

"=> #() "
0334デフォルトの名無しさん2015/06/23(火) 21:59:40.25ID:X5qt4JaO
>>330
45行目
http://ideone.com/bDpAJK
0335デフォルトの名無しさん2015/06/23(火) 23:22:18.14ID:T+dh7ruf
>>334
エクセレント。よくデバッグできたねぇ。
俺は門外漢だからさっぱりだよ。こんな些細なこと気づくカーっての。
デバッグありがとう。飯を1食おごりたいくらいだよ。
まぁ、貧乏なのでそれなりだけどね。へへ。
0336デフォルトの名無しさん2015/06/24(水) 00:35:32.34ID:ttDsmfvw
>>312
http://ideone.com/LrRUso
C++。一応コードは書いたものの遅い・・・。
イデオンタイムに間に合わなかった。
基数60程度の数列だからシングルスレッドだと骨が折れるな。

スペシャルサンクス
>>317
>>334
0337デフォルトの名無しさん2015/06/24(水) 03:33:29.41ID:OPVPhgqw
>>326 C
main(int n) { printf("%d\n", n); (n >= 100 ? exit(0) : main(n+1)); }
0338デフォルトの名無しさん2015/06/24(水) 03:50:55.13ID:OPVPhgqw
>>326 C
exitいらなかった
main(int n) { printf("%d\n", n); (n >= 100 ? : main(n+1)); }
0339デフォルトの名無しさん2015/06/24(水) 08:37:12.76ID:Oti1R8jg
>>331 訂正 無駄lamdaだった むだらむだー

>>326 Python3
list(map(print,range(1,101)))
0340デフォルトの名無しさん2015/06/24(水) 12:22:29.04ID:LdxuxQwg
>>331
qが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:RTg8LFF8
>>326 php
for(;$i++<100;)echo"$i\n";
03423312015/06/24(水) 18:49:46.27ID:Oti1R8jg
>>340
ご指摘感謝
素数じゃない数も素数と判定する場合があるから
確かにis_primeは不適当でした
0343デフォルトの名無しさん2015/06/24(水) 21:52:01.60ID:ZkZ/FeaC
>>326
Ruby

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/FeaC
>>326,343
Rubyはputsなんか使わなくてもpで良かったわ
0345デフォルトの名無しさん2015/06/24(水) 22:32:15.15ID:NhfXS6nD
>>326 C#

無理矢理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/FeaC
>>326
C
main(n){for(;printf("%d\n",n++)-4;);}
0347デフォルトの名無しさん2015/06/24(水) 23:05:39.50ID:NaJhfL5/
>>326
Powershell
1..100
0348デフォルトの名無しさん2015/06/27(土) 06:50:54.41ID:vdBMRB8Z
お題:文字列のa番目の文字とb番目の文字を交換する
0349デフォルトの名無しさん2015/06/27(土) 07:25:38.87ID:VQZUdh4H
>>348
マルチバイト考慮するの?
0350デフォルトの名無しさん2015/06/27(土) 11:43:42.26ID:vdBMRB8Z
お題なんてただのきっかけです
不明な点はお好きなように
0351デフォルトの名無しさん2015/06/28(日) 02:00:33.36ID:hUz0qxV5
>>326 nasm

https://ideone.com/f1KkjZ

アセンブラ勉強がてら
表示が001,002,003・・・ですが、ご愛嬌ということでw
0352デフォルトの名無しさん2015/06/28(日) 03:32:11.69ID:hUz0qxV5
徒然草の151段については、ちょっと疑問だ
「ゆかしく覚えん事は、学び訊くとも、その趣を知りなば、おぼつかなからずして止むべし」
と、言うけど、今日の俺は「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
>>348 Emacs Lisp

(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:7bNI9dxW
>>326 Julia
map(println,1:100)
0356デフォルトの名無しさん2015/06/28(日) 17:31:28.35ID:7bNI9dxW
>>348 Julia
function 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
>>356
なにそれすごい
0358デフォルトの名無しさん2015/06/28(日) 23:55:49.92ID:m2Cqz/bs
>>348 PowerShell
function 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+8K
>>348 nasm

https://ideone.com/X1o5Qm

制限事項多々あり、ソースコメント参照
アセンブラの勉強が楽しくて、仮想PCにDebian(32bit)インストールして開発環境整えたw
0360デフォルトの名無しさん2015/06/29(月) 09:55:24.58ID:QwxAmYqt
>>348 Squeak/Pharo Smalltalk

'あいうえお' swap: 1 with: 4 "=> 'えいうあお' "
0361デフォルトの名無しさん2015/06/30(火) 20:51:35.69ID:HIOlDgg/
QZ怒りの別スレ現実逃避
0362デフォルトの名無しさん2015/07/05(日) 11:16:14.41ID:BiXYXi7r
>>121 nasm

https://ideone.com/C9LpKp

アセンブラ楽しいなー
0363デフォルトの名無しさん2015/07/06(月) 22:39:47.66ID:rsUbzHSg
そういえば似たようなスレをふたばの/g/に立ててみたが結構伸びてたな
あそこ代謝が早くてすぐに落ちちゃったけど
0364デフォルトの名無しさん2015/07/07(火) 18:08:07.17ID:xwpye55W
>>363
ふたば→4chan
0365デフォルトの名無しさん2015/07/12(日) 22:32:32.67ID:Ga0HIkJk
>>16 nasm

https://ideone.com/jiZNPh

ideoneのアセンブラはlibcの関数とか呼び出せないみたいなのでちょっと辛い・・・
0366デフォルトの名無しさん2015/07/12(日) 22:38:11.62ID:BKAToTl0
>>365
普段アセンブラで何か書いているんですか?よくこんなん書けますね。兎に角物凄いですね。
0367デフォルトの名無しさん2015/07/12(日) 22:58:54.23ID:Ga0HIkJk
>>366
レスありがとう
厨房の頃MSXでZ80のアセンブラとかいじって遊んでたんですが、
最近ideoneでもアセンブラ使えるのを知って当時の思い出に浸りつつIA-32の勉強してます
ちなみに、今のところ、このスレ向けだけにアセンブラやってるかなw
0368デフォルトの名無しさん2015/07/12(日) 23:07:36.37ID:1C3rPR+t
今でもパチンコを逆アセンブル解析する猛者はいるんだろうか?

アセンブラでオブジェクト指向が出来るって本当だろうか?
0369デフォルトの名無しさん2015/07/12(日) 23:15:10.87ID:bEfSh98P
ふつうのC/C++コンパイラはアセンブラ変換、出力可能
0370デフォルトの名無しさん2015/07/12(日) 23:20:26.49ID:Ga0HIkJk
アセンブラでオブジェクト指向というと・・・アセンブラと言えるかどうか微妙だけど
JVM向けのJasminってのが、一番それっぽいんじゃない
所詮仮想マシン向けだし、全然勉強する気は湧かないけど・・・でもネーミングセンスはなかなかだと思うw
0371デフォルトの名無しさん2015/07/13(月) 00:02:05.69ID:bZKNDXZm
オブジェクトをどう切り取るかっていうことだし、
C++は関数とデータ構造でできてるから、
積み重ねればできなくないんじゃない?
0372デフォルトの名無しさん2015/07/14(火) 17:02:24.45ID:UtKLctm2
全然数学的な問題では無いんですが、
文字列で
"文字列ダブルクオート"
'文字列シングルクオート'
両方使える言語有りますよね。JSなど。
var str1="あ'い'う";
var str2="あ\"い\"う";
の様に入れ子になると益々ややこしい。
与えられたプログラムの行を解析して文字列と文字列以外の部分でsplitしたいんですが、どう言うアルゴリズムとか手法が有りますか?複数行に別れている場合はややこしいので考えないとして。
先頭から一文字ずつ調べて行く地道な方式しか思い付きません。頭のいい人教えて。
0373デフォルトの名無しさん2015/07/14(火) 17:08:45.31ID:iC5YD+mU
文字列部分を特定するということか?
0374デフォルトの名無しさん2015/07/14(火) 17:10:04.41ID:UtKLctm2
>>373
そうです
0375デフォルトの名無しさん2015/07/14(火) 17:11:56.35ID:iC5YD+mU
基本は、"から"、'から'の最短部分を抽出で。
ただし直前に\がある場合はエスケープだから無視したらいいだろ。
0376デフォルトの名無しさん2015/07/14(火) 17:13:20.31ID:UtKLctm2
>>375
先頭から調べて行く方式ですか?
0377片山博文MZ ◆T6xkBnTXz7B0 2015/07/14(火) 17:15:11.23ID:2KYZ+h7+
正規表現で検索するという方法もある
0378デフォルトの名無しさん2015/07/14(火) 17:17:36.20ID:UtKLctm2
>>377
入れ子が何十にもなっている場合にも
マッチ出来る表現って原理的に書けるんでしょうか?
0379デフォルトの名無しさん2015/07/14(火) 17:27:03.42ID:iC5YD+mU
括弧と違って入れ子構造はないだろ。それらしく見えたとしてもエスケープだから無視。
0380デフォルトの名無しさん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:2UCISld7
落ち着いて3パス位で読めばできないことはないと思う
0383デフォルトの名無しさん2015/07/14(火) 19:40:57.40ID:K07m6CLM
俺ならまずは状態遷移図を書き始めるかな
後は状態遷移図をそのままゴリゴリ機械的にプログラムに落とし込めば
ワンパスで処理できると思う
0384デフォルトの名無しさん2015/07/14(火) 21:30:38.01ID:K07m6CLM
>>372 Python

状態遷移図書いてプログラムに落とし込んでみた

https://ideone.com/PsB6CT

どんな図を書いたかは想像してくれ
0385デフォルトの名無しさん2015/07/14(火) 21:55:58.14ID:mKmRjHXt
>>372 C
>>384さんのテストケース借りました
https://ideone.com/UdVopC
0386デフォルトの名無しさん2015/07/14(火) 22:01:39.78ID:2UCISld7
おもしろいなー。ふむふむ。
0387デフォルトの名無しさん2015/07/14(火) 23:09:04.52ID:UtKLctm2
>>384
有難うございます。こんなのをささっと作れるって凄いわ。遷移図って言うのを俺も勉強しようかな。windowsにpythonインストールして実行してしたらいい感じで分解出来ました。ただ文字化けかもしれませんが
"?"コメント"?"
って出ます。
>>385
pythonは全くの素人なのでc++に翻訳が大変だなあと思っていた所にタイムリーなcコード有難うございました。上手く実行できましたが入力の終了はctrl+zで良いんでしょうか?入力の終了方法が今ひとつよく分かりませんでした。
0388デフォルトの名無しさん2015/07/14(火) 23:24:46.64ID:K07m6CLM
>>387
もしかしたら、スクリプトファイルの先頭にこれをつけてやれば文字化けが直るかもしれん
from __future__ import unicode_literals

あと、状態遷移図以外のキーワードとしては、
有限オートマトンとかステートマシンとかもググってみるといいよ
0389デフォルトの名無しさん2015/07/15(水) 00:09:17.64ID:dGdv/3vm
[2] 問題文
150桁の素数を一つ求めよ

[5] その他の制限
C/C++を使用
0390デフォルトの名無しさん2015/07/15(水) 00:11:52.92ID:lN86dIN6
多倍長ないのでやりたくないです。
0391デフォルトの名無しさん2015/07/15(水) 00:13:49.69ID:hO4B+kkW
標準で無限精度の多倍長クラス欲しいよね
0392デフォルトの名無しさん2015/07/15(水) 00:29:27.09ID:1KPOhNZT
>>387
Unix系ならCtrl-Dか
WindowsならCtrl-Z送ってみてください
0393デフォルトの名無しさん2015/07/15(水) 00:46:28.19ID:lN86dIN6
>>391
一応議題には上がってるんだけどなかなか通らん。
さっさと入ってほしい。
0394デフォルトの名無しさん2015/07/15(水) 07:34:03.71ID:gZn+GrQT
>>388
状態遷移図って言うのは情報処理の学校の授業で習うんですか?私は自己流なので情報遷移図って言うのを見たことも聞いた事も有りませんでした。
0395デフォルトの名無しさん2015/07/15(水) 11:01:34.61ID:oGaBOeZt
>>394
学部の2年生ぐらいかね。
専門学校では習わないんじゃない?
0396デフォルトの名無しさん2015/07/15(水) 13:12:02.46ID:9g3Um3C5
1<=a<b<=1000000000
1000000<b-a

この条件の時、aからbの範囲内に素数がいくつあるか出力せよ
0397デフォルトの名無しさん2015/07/15(水) 13:15:17.34ID:V0AxV3aQ
プッチ神父の多いスレでつね
0398デフォルトの名無しさん2015/07/15(水) 19:18:25.08ID:GCGNqYEM
>>394
自分は大学の情報系学科で2〜3年の頃に習った
特にコンパイラ演習で、想定する簡易言語のコンパイラの製造、アセンブラコード出力して動作検証までやる授業があって
字句解析、構文解析のところで状態遷移やらオートマトンやら身に沁みて覚えられたよ
0399デフォルトの名無しさん2015/07/16(木) 07:13:55.19ID:vXoT0ZWq
「ゲームプログラマになる前に覚えておきたい技術」って本の
XMLパーサーの章で状態遷移扱ってたよ
0400デフォルトの名無しさん2015/07/16(木) 07:16:55.13ID:LOPRnG3x
記憶では、41個の格子点を通る円で最小半径のやつは求まってなかったはずかとおもうが。
出来たのだろうか?
0401デフォルトの名無しさん2015/07/16(木) 07:19:36.79ID:LOPRnG3x
過去レスみたら47個が難しかったんだったか。
0402デフォルトの名無しさん2015/07/16(木) 07:50:32.94ID:/b6luSAZ
最近へんな雑談厨が繁殖中ですね。
0403デフォルトの名無しさん2015/07/16(木) 19:49:12.86ID:N2Vdqeqk
N=47 (4/22,1/22) R=16543.732561 R^2=132468422125/484
0404デフォルトの名無しさん2015/07/16(木) 20:12:03.80ID:UsfisL7E
>>399
サンキュウ。読んでみるよ。
04053512015/07/17(金) 23:09:51.95ID:DYsu0MP8
>>326 C(ほぼGAS)

http://ideone.com/eLpvFF

今後はこのスタイルでやっていこうと思っている
nasmとはお別れ・・・
0406デフォルトの名無しさん2015/07/17(金) 23:29:14.83ID:eXqjhmrq
>>405
これくらいの規模ならギリ読めるわ。全く書けないけど。
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:Xl228nsE
インラインアセンブラかー

Delphiは単体で使えたけどBCBは別売りのTASMが必要だったなー
0411デフォルトの名無しさん2015/07/18(土) 13:57:22.58ID:t4bRQBmQ
懐かしいな、ニーモニックで書き下し
チンポもグイーンで超絶早漏!!
速い!早すぎるぅ!!
0412デフォルトの名無しさん2015/07/18(土) 17:46:54.90ID:47zg+pIq
>>207 ほぼGAS

https://ideone.com/Hn0LhX

制約として、bは最大32ビットです・・・
Cのインラインアセンブラにしたし、ローカル変数をスタックフレーム上に確保して利用しようと頑張ったけど
すごい混乱するだけだったので、やっぱりグローバル変数を使うことにした・・・
0413デフォルトの名無しさん2015/07/19(日) 17:34:33.47ID:hwKAr6jy
>>217 C(ほぼGAS)

https://ideone.com/1ypTIi

最初、そのままn - H(H(H(n-1)))計算してたら、アセンブラでも答え返ってこなかった・・・
他の人の回答を参考にさせていただいて、キャッシュ化したら早くなったw
0414デフォルトの名無しさん2015/07/19(日) 17:55:31.85ID:70ugHhcp
>>413
これ非再帰化するにはどうすればいいんかな
0415デフォルトの名無しさん2015/07/19(日) 18:16:18.33ID:hwKAr6jy
>>414
うーむ・・・数学的なことはちょっとよく分からんw
キャッシュ化がある意味、疑似的な非再帰化なんじゃないかな・・・
0416デフォルトの名無しさん2015/07/19(日) 20:15:29.71ID:+kGtCzuo
>>414
アセンブラってどういう開発環境で作るんですか?
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
>>417
単純な展開なら、自分でスタック相当の配列を確保してループに展開すればいいかな。
GOTO使っていいならもうちょっと簡単になるけど、計算量はあんまり変わらん気がする。
0419デフォルトの名無しさん2015/07/19(日) 21:16:10.34ID:hwKAr6jy
>>416
いろいろとやり方はあると思うけど、
自分はVirtualBoxの仮想PCにDebian/GNU Linux(32bit)入れて、eclipse(CDT, gcc)でコーディングしてます
デバッグは今のところどんなツールがあるのかよく分からないのでgdb使ってシコシコやってますw
0420デフォルトの名無しさん2015/07/19(日) 21:20:52.21ID:+kGtCzuo
>>419
詳しい説明有難うございました。
皆さんどうしてそんなにアセンブラが好きなの?Cで書くほうが楽ちんじゃない?
0421デフォルトの名無しさん2015/07/19(日) 21:46:38.17ID:oRpbGtoQ
Cは高級アセンブラ
0422デフォルトの名無しさん2015/07/19(日) 21:50:55.65ID:8Ya8eemU
アセンブラで書くことが楽しいから使うんでしょうね
楽さを求めたらCですら選ばれないでしょう
0423デフォルトの名無しさん2015/07/19(日) 21:53:41.20ID:hwKAr6jy
>>420
まず、今のところこのスレでアセンブラやってるの俺だけかな
で、なぜ好きかというと、>>367読んでくれ
0424デフォルトの名無しさん2015/07/19(日) 22:09:47.04ID:hwKAr6jy
>>420
あと、>>422の言うとおり楽さを求める場合は今はPython使ってます
このスレでもたまにPythonの駄コードを上げてるよ
Cは学生の頃、授業で使ったけど(>>398とかで)、今となってはあんまり興味が・・・
0425デフォルトの名無しさん2015/07/19(日) 23:42:42.88ID:hwKAr6jy
>>http://toro.2ch.net/test/read.cgi/tech/1411227287/13 C(ほぼGAS)
※過去スレが見えない場合はs/net/sc/で・・・

https://ideone.com/Rb1WIf
0426デフォルトの名無しさん2015/07/20(月) 14:05:47.16ID:GItXWMu9
>>414 C#

再帰を使わずに>>217をコーディングするお題と解釈
オブジェクト指向的なアプローチなので>>414の求めているものとは違いかもしれないが・・・

https://ideone.com/Ok3RWA
0427デフォルトの名無しさん2015/07/20(月) 23:53:26.16ID:GItXWMu9
>>http://toro.2ch.net/test/read.cgi/tech/1411227287/28 C(半分GAS)
※過去スレが見えない場合はs/net/sc/で・・・

https://ideone.com/SiwyzT

バッファを初期化するとか泥臭い部分はCでゴリゴリ書いてみた
あと、ローカルで動いてもideoneで動かなくてちょっとハマった
今までほったらかしだったけど、アセンブリテンプレートの破壊レジスタをちゃんと指定してやらないといかんらしい・・・
0428デフォルトの名無しさん2015/07/20(月) 23:58:45.05ID:Mk1lR5Z8
>>427
気が向いたらでいいんだけど、過去の問題はコメントに問題文入れてくれるとうれしい。
見れないから、思い出すの大変。
0429デフォルトの名無しさん2015/07/21(火) 00:15:12.95ID:4cujWVLy
>>428
過去スレ見れない場合は、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:t51wwC7q
まぁ、気が向いたらでいいから。嫌ならいいよ。
0431デフォルトの名無しさん2015/07/21(火) 01:19:32.68ID:sP0nnS9v
  |=番兵|_
 (  ・ω・) <暑中見舞いにお茶どうぞ
  〇={=}〇
  |::::::::::\
、、、し 、、、(((.@)旦旦,,旦ww旦 <アッタカ~イ
0432デフォルトの名無しさん2015/07/21(火) 02:24:56.56ID:t51wwC7q
番兵久しぶりだね。
0433デフォルトの名無しさん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
>>434
過去になんかそんなん解いた覚えがあるんだが。
制限もっと緩かったけど。
アルゴリズム書いてないから解けないっていうのもあるけど。
0436デフォルトの名無しさん2015/07/21(火) 21:36:14.35ID:t51wwC7q
現在VS2015インストール中。やっと出た模様。
0437デフォルトの名無しさん2015/07/21(火) 21:39:48.43ID:ykIrCRFz
>>436
2015で作ったソリューションって2013じゃあ開けないだろ?
二台のpcでそれぞれ2013、2015を使っていると不便じゃあないか?
0438デフォルトの名無しさん2015/07/21(火) 22:41:27.39ID:t51wwC7q
個人だから、別に移行に関するトラブルは少ないよ。ただ、IDEが日本語じゃないから面喰ってる。
スゲーいっぱい機能増えてて頭爆発しそう。ATLもMFCも最初から使える模様。
俺、アマチュアレベルだからね、これからやらなきゃならんことがたくさんある。
0439デフォルトの名無しさん2015/07/21(火) 22:42:42.88ID:t51wwC7q
constexpr対応やったーと思ったらC++11だった。ショボーン。
0440デフォルトの名無しさん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
>>440
計算するときはどこまで情報くれるの?
04424402015/07/24(金) 02:30:22.82ID:orlgr+Lf
数字は答えだから、無いものとして解いて
0443デフォルトの名無しさん2015/07/24(金) 02:33:15.17ID:i7tlJ0x5
数字のマップ方法が思い浮かばないなー。
04444402015/07/24(金) 02:44:51.78ID:orlgr+Lf
さあ? 総当たりはどうかね?
0445デフォルトの名無しさん2015/07/24(金) 03:00:39.65ID:i7tlJ0x5
辞書ないとだめじゃね?
04464402015/07/24(金) 03:45:43.16ID:orlgr+Lf
数独(ナンプレ)よりは、簡単そうだけど
0447デフォルトの名無しさん2015/07/24(金) 04:39:42.70ID:i7tlJ0x5
例題プリーズ。
0448デフォルトの名無しさん2015/07/24(金) 07:30:49.96ID:i7tlJ0x5
>>440
http://ideone.com/7fzMbO
C++。一応解いたが誤答も入ってる気がする。大いにする。
VCのリリースで10秒ほどかかる。@N3700
これでググる入社だ!

辞書云々は勘違いしてた。
0449デフォルトの名無しさん2015/07/24(金) 07:36:48.33ID:i7tlJ0x5
さらに書いてバグフィックスした。
0450デフォルトの名無しさん2015/07/24(金) 12:19:15.91ID:DXnt2k2V
>>440 Haskell
ふぅ・・・汚いし遅いけど書けた
http://ideone.com/yGZPxD
0451デフォルトの名無しさん2015/07/24(金) 14:42:27.19ID:EjPkrmXr
>>440 Java
酷いコードが出来たぜ
http://ideone.com/Plrzsu
0452デフォルトの名無しさん2015/07/24(金) 16:21:16.16ID:E+gh8pZi
>>451
すげー速いな
こういうのC++で書けないかな
0453デフォルトの名無しさん2015/07/24(金) 17:15:57.19ID:M5TjTU2l
>>440 Squeak Smalltalk

| 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:cSQMFcxl
>>440
Javaに勝てる気がしないけどProlog で
https://ideone.com/tEdvvX
0455デフォルトの名無しさん2015/07/24(金) 19:23:23.71ID:i7tlJ0x5
>>452
ポートする意外だとアイディアないな。
俺のはnext_parmitation使ってるからめちゃくちゃ遅い。o(N!)だし。
ぜひ改善してくれ。
0456デフォルトの名無しさん2015/07/24(金) 23:56:32.13ID:VNZ6dmGo
>>440 C
http://ideone.com/UHMbDk
遅い
0457デフォルトの名無しさん2015/07/25(土) 00:26:34.26ID:+Ve7mYSl
>>440
WWWDOT
−GOOGLE
------------------
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+9eo6i
>>440 Python

https://ideone.com/Evaia7

足し算と引き算のみ
いろいろと改良の余地が非常に多そうなので、また修正すると思う
0459デフォルトの名無しさん2015/07/25(土) 04:16:19.74ID:BtkcRlE5
>>440
遅ればせながらC++
http://ideone.com/CNmQqa
0460デフォルトの名無しさん2015/07/25(土) 05:05:00.74ID:309x+t0o
「Googleの入社試験」より

正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:wTwAcdhU
231パターン!
0462デフォルトの名無しさん2015/07/25(土) 06:53:11.73ID:BtkcRlE5
>>459
チューンでまあまあ速くなった
http://ideone.com/9J5rml
0463デフォルトの名無しさん2015/07/25(土) 07:03:02.80ID:DQEJp29t
>>460
http://ideone.com/FCJ3EH
C++でこういうコード書いてみたけど、メモリも処理能力も全然たりん。
っていうか、std::uniqueが仕事してない気がする。
ググるは遠い。
0464デフォルトの名無しさん2015/07/25(土) 07:08:37.68ID:DQEJp29t
そういえばソートしてないとだめなんだっけ・・・。
忘れてた。
0465デフォルトの名無しさん2015/07/25(土) 07:12:00.49ID:DQEJp29t
http://ideone.com/lScvon
バグフィックス。
0466デフォルトの名無しさん2015/07/25(土) 07:33:55.16ID:DQEJp29t
>>463
2時間半かかる。@N3700
投げるカー。Orz
04674602015/07/25(土) 08:18:12.24ID:309x+t0o
>>460
これは、「Googleの入社試験」という本に載っていた問題で、
コンピューターで数え上げるのが、
無理なら無理で、仕方ないです

たぶん入社試験では、
「ポリアの数え上げ定理」をPCで検索して、
この定理から、値を求めるのかな?
0468デフォルトの名無しさん2015/07/25(土) 08:39:55.46ID:tp+9eo6i
>>467
ググって定理を見つけて、ちょっと計算すれば合格
ググらずにゴリゴリとプログラムを書き始めたら失格ってことかい・・・
0469デフォルトの名無しさん2015/07/25(土) 08:49:25.08ID:YqNKFNZH
検索にgoogle以外使ったら即失格
0470デフォルトの名無しさん2015/07/25(土) 08:51:06.09ID:DQEJp29t
寝ないといけないので投げます。汗

>>467
数学ダメなので、どのみち無理ですねぇ。
ググるは遠い。
04714602015/07/25(土) 09:22:46.58ID:309x+t0o
立体での対称性は、めちゃめちゃ難しい。
「ポリアの数え上げ定理」
自体が正しいのかどうかも、わからない

まず平面の問題から、解いていかないと

n個の石が、円状に並んでいる時、
各石をm色で塗る方法は、何通りあるか?
ただし、回転して同じものは、1つと数える
0472デフォルトの名無しさん2015/07/25(土) 09:49:31.03ID:wTwAcdhU
で、>>461は正解なの?
04734602015/07/25(土) 10:31:05.18ID:309x+t0o
「ポリアの数え上げ定理」が立体的にも正しければ、
>>460
が正解なんじゃないの?

でも証明するのは、かなり難しそう
0474デフォルトの名無しさん2015/07/25(土) 11:13:10.67ID:wTwAcdhU
mのn乗じゃあかんの?

ナポリタンの定義使わな怒られてまうん?
0475デフォルトの名無しさん2015/07/25(土) 12:14:09.08ID:tp+9eo6i
お題Part.4 104
>>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
>>476
リストって線形に限定しないよな?
でないと問題にすらならん。

空間計算量が定数になるようにしろってことかな
0478デフォルトの名無しさん2015/07/25(土) 17:04:03.27ID:gmV25Sr9
>>477
本に書いてある条件はこれだけで、そのまま書きました
難易度がアレだったら別のお題として条件追加してくらさい
04794602015/07/25(土) 17:15:24.57ID:309x+t0o
>>474
塗り方が何通りあるか?
という質問は、回転したら同じになるものを、
1つと数えるから、難しい

「ポリアの数え上げ定理」は、
こういう対称性のある数え上げに使う

>476
有向グラフなら、グラフの向きと反対向きの、2回たどることで、
強連結成分(閉路、巡回路)の部分がわかるけど、
この方法は、すべてのノードに番号を付けていくからね
0480デフォルトの名無しさん2015/07/25(土) 17:20:46.28ID:gmV25Sr9
>>479
>>476は書き込み不可なのでノードに番号は付けられません
0481デフォルトの名無しさん2015/07/25(土) 17:23:05.26ID:5K8h4x4y
当然ポインタからアドレス値を得ることもNGだよな
ポインタは異なることが識別できれば良いだけの
内部情報で、不定長さビットストリームと仮定
0482デフォルトの名無しさん2015/07/25(土) 17:25:54.14ID:5K8h4x4y
辿れることは仮定
循環があればリスト要素数は∞とカウントされるんで
少ないメモリ領域とやらのサイズをリスト要素サイズで割った値を
超えたら循環が発生してるんだろうね。
本当問題にもならない
0483デフォルトの名無しさん2015/07/25(土) 17:28:14.42ID:gmV25Sr9
>>481
ポインタからアドレス値を得ることはOKです
0484デフォルトの名無しさん2015/07/25(土) 17:28:38.67ID:5K8h4x4y
B木などのように分岐する木の場合は、辿る時は
段を設定しそれを超えたらまだ伸びていても再帰
呼び出しから復帰。段を増やしながら辿利直す
0485デフォルトの名無しさん2015/07/25(土) 17:33:17.12ID:AmQdhWXo
>>460は出題者なのか?相談にきたのか?
答えはこれだからアルゴリズム、プログラムで求めて一致を確かめる問題なのか?
0486デフォルトの名無しさん2015/07/25(土) 17:47:08.37ID:BtkcRlE5
>>476
2つポインタ用意して
1つは+1、もうひとつは+1+1と2つすすめつつ二回比較
これなら循環している所でいつかぶち当たるんでないの

木の場合も幅、深さどちらでも良いが、
各枝で同じアルゴリズムで上の探索をやれば出来る
0487デフォルトの名無しさん2015/07/25(土) 17:51:06.60ID:SmPf1Yeq
Floyd's cycle-finding algorithm
0488デフォルトの名無しさん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
>>487
基本アルゴリズムだったのね
そして二回も比較はいらないという
0491デフォルトの名無しさん2015/07/25(土) 18:15:58.63ID:gmV25Sr9
用意してた>>476の解答例です
https://ideone.com/55E73p
0492デフォルトの名無しさん2015/07/25(土) 18:16:11.40ID:5K8h4x4y
(m,n)かどうかのチェックコード
NILリスト終端を表すリスト
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
>>440
>デュードニーの覆面算

@Mathematica
https://ideone.com/TobhyI

ナイーブに書き過ぎて、SEND+MORE=MONEY が6時間経っても解けない (´・ω・`)
04944602015/07/25(土) 19:27:01.65ID:309x+t0o
>>485
>>460 は「Googleの入社試験」
という本に書いてあった問題で、

これをプログラムで確かめることは、
出来るのかと思ったのですが、

立体における対称性を考えるのも難しく、
計算量的にも無理そうですね

気にしないで下さい
0495デフォルトの名無しさん2015/07/25(土) 22:29:08.75ID:AmQdhWXo
>>494
これはプログラムでとかなきゃ不合格だろ。
すくなくとも公式が正しいならO(1)、定数時間で解けてるわけで。
0496デフォルトの名無しさん2015/07/25(土) 23:58:21.62ID:BtkcRlE5
これは対称群の操作になるしログラムとしても難しい
(訳:俺はできないので適当に知ったかして言い訳)
0497デフォルトの名無しさん2015/07/26(日) 00:16:16.12ID:Iy/dMhV5
俺ならまずペーパークラフトで作った20面体とペンキ3色用意するかな・・・
(訳:俺はできないのでネタに走る)
0498デフォルトの名無しさん2015/07/26(日) 03:00:57.42ID:BBzBg0a1
>>465で一応解けるはず。
ただばぐってて、終了判定に使ってるやつもカウントしちゃうので結果が1多いかもしれん。
0499デフォルトの名無しさん2015/07/26(日) 03:02:26.26ID:BBzBg0a1
ちなみにATOMで3時間かかるからな。
o(3^20)だから。
0500デフォルトの名無しさん2015/07/26(日) 03:55:52.40ID:wZArgyIp
正四面体をn色で塗り分けると
n=1 1通り
n=2 5通り
n=3 15通り
n=4 36通り
n=5 75通り
であってるよね?
0501デフォルトの名無しさん2015/07/26(日) 07:41:49.94ID:wZArgyIp
正二十面体2色塗り分け(17824通り)を総当たりで作ろうとしたがうまくいかなす…
0502デフォルトの名無しさん2015/07/26(日) 11:41:42.93ID:F9zjmZLC
>>500
正四面体を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:F9zjmZLC
ごめん、6面体と間違えた
0504デフォルトの名無しさん2015/07/26(日) 12:31:08.07ID:wZArgyIp
>>502
正六面体2色、3+3も2通りあって計10通りじゃない?
0505デフォルトの名無しさん2015/07/26(日) 20:48:07.09ID:BBzBg0a1
>>460
http://ideone.com/7kMmeg
C++。さらにバグフィックス。
間違ってたら教えてくれ。
0506デフォルトの名無しさん2015/07/26(日) 21:33:50.48ID:wZArgyIp
>>505
4面体は良いけど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
お題Part.4 114
>>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
3000の約数を全て求めなさい。
ただし、1から3000までループして計算せず、なるべく計算量を減らす工夫をしなさい。
0510デフォルトの名無しさん2015/07/30(木) 23:35:44.83ID:HTmLogaO
お題Part.4 132
>>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:UEq2Ng1b
>>509 JAVA
http://ideone.com/TvN7sQ
0512デフォルトの名無しさん2015/07/31(金) 11:36:00.72ID:aobk3QH+
>>509
中一ぐらいで習う数学だったような...
まあ組み合わせはもっと後かもしれんが
0513デフォルトの名無しさん2015/07/31(金) 12:35:32.91ID:XH2HdJzN
>>509 Java
http://ideone.com/e5mHbq
0514デフォルトの名無しさん2015/07/31(金) 16:45:56.91ID:gTceL3gJ
>>509
Haskell
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
>>509
素数表を使えば、いいんじゃないの?
0519デフォルトの名無しさん2015/08/06(木) 07:03:04.39ID:CkVip+sC
>>518
素数表はどっから引っ張ってくるの?
手前で計算するんやったら結局ループするよ。
約数検索にもループするし。
0520デフォルトの名無しさん2015/08/06(木) 13:05:59.73ID:PTQ+iIuS
素数表てw
3000 = 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:ad9Dia9F
>>509 Ruby
https://ideone.com/SvdbkC
0523デフォルトの名無しさん2015/08/07(金) 00:28:27.18ID:ZvHE2uvK
まず素数表に、2を追加する
3,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
>>523
だからー、動的に素数表作るときにループするんだってばぁー。
じゃないと、wellknownまでしか問題解けないじゃん。
0525デフォルトの名無しさん2015/08/07(金) 10:41:45.34ID:i7xtVdjk
9つの物がある。
重さが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:2DYolGPs
>>525
Haskell
https://ideone.com/u2gyj4
0527デフォルトの名無しさん2015/08/07(金) 19:48:56.07ID:1ri11Qaf
>>525
この問題を誰かPythonで解いて下さい
コード読んで勉強させてください
0528デフォルトの名無しさん2015/08/07(金) 21:39:49.75ID:r2Bevevp
>>525 Haskell
https://ideone.com/8HwQl0
0529デフォルトの名無しさん2015/08/07(金) 23:13:44.97ID:T7vKM+5A
>>525 Python

https://ideone.com/okxjD1

あんまり自信ないけど、Haskellの人と答え一致してるし、多分あってるかな?
0530デフォルトの名無しさん2015/08/08(土) 00:00:05.21ID:ThAIXUQy
>>529
うーむ、このテストケースだとたまたまあってるけど、
「単位重量あたりの価値が高い順に足してくと中途半端に重さが20を超えちゃうけど、
単位重量あたり価値は低いけど重さが20に収まるのが他にもある」・・・みたいなパターンだったらダメっぽい
ので、NGだな・・・orz
0531デフォルトの名無しさん2015/08/08(土) 02:26:05.07ID:/wExcf3V
>>525
https://ideone.com/rIBT6g
C++。全検索。重いよ。
コンビネーションほすぃ。
パイソンにはコンビネーションあったよね、確か。
0532デフォルトの名無しさん2015/08/08(土) 09:02:45.33ID:6P2f/LwO
>>525
python解 最近まったくpythonは書いてないレベル
http://ideone.com/Vz4Aye

一応、全探索(2^n*n)解と 手抜きDP解を書いてみた
05335292015/08/08(土) 11:59:37.78ID:ThAIXUQy
>>525 Python3

https://ideone.com/okxjD1

昨晩は大ボケかまして赤っ恥かいたので、もう一回頑張ってみた
物は23個までならideoneで実行できたけど、増やすとtime out(15s)だった
05345292015/08/08(土) 14:31:11.60ID:ThAIXUQy
>>533
ちょっと工夫したら、30個でも1秒以内になった・・・
URLは同じ
0535デフォルトの名無しさん2015/08/08(土) 20:32:02.85ID:M3SvhFRz
>>525 Squeak/Pharo Smalltalk

| 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:tgnqQ5VA
ていす
0537デフォルトの名無しさん2015/08/09(日) 02:26:06.84ID:Tbd/Elz5
れいす
05385292015/08/09(日) 03:40:52.90ID:MmR8qrNe
>>509 nasm

https://ideone.com/RuRXDP

出力順が変なのはご愛嬌ってことで・・・
0539デフォルトの名無しさん2015/08/09(日) 07:16:11.67ID:1HG7N0Ln
age

>>525
C++
http://ideone.com/dVWBK8
0540デフォルトの名無しさん2015/08/09(日) 21:49:21.35ID:FQ34dcmW
暇つぶしがてらC#で動的計画法でやってみた

https://ideone.com/LtOHqA
0541デフォルトの名無しさん2015/08/09(日) 22:05:09.50ID:FQ34dcmW
データを適当に30個にしてもこの速度になる
まあ最初に重さ0、価値も0の物があると仮定しているのでv[]とw[]の最初の両方に0を入れなければ
ならないけどそこは許してちょ

https://ideone.com/XUiqED
0542デフォルトの名無しさん2015/08/10(月) 00:33:49.20ID:IMTu2L09
C++の不完全型が通ればもうちょっと柔軟に書けるようになるんだが、
問題はVCに適応されるのがあと何年後かわからん事だ。

template<class T>
struct Node{
T Value;
vector<Node> Nodes;
};

というのが書けるようになるのでDPのようなものも書きやすくなる。かも。
0543デフォルトの名無しさん2015/08/10(月) 02:07:34.25ID:IMTu2L09
>>525
https://ideone.com/C3MnV8
C++。暇だったのと>>539見たのとで書く気になって書いてみたが、うーむ。微妙。
少数では、>>531よりよっぽど早くなったけど、30要素のテストをすると返ってこない。
よく書いてる、ラディックス系の問題を抱えててオーダー爆発してる気がする。
選定眼が悪すぎるなぁ。Orz
0544デフォルトの名無しさん2015/08/10(月) 03:59:58.76ID:GocUDqGY
>>541
これいいな

http://ideone.com/rcCIWO

500要素でも一瞬にして答えが返る
0545デフォルトの名無しさん2015/08/10(月) 16:58:39.18ID:EREVH0u4
>>544を参考にC++で書いてみた
こんな大きなDPが通るかと思ったら通った

要素数4000個です

http://ideone.com/3Bb8AT
0546デフォルトの名無しさん2015/08/11(火) 02:15:09.29ID:Hh2091CF
ttps://ideone.com/ChTcha
嫉妬心めらめらで我流に書き直してみた。遅くなった。Orz
イデオンでベンチマークしてるが、時間よりメモリのほうが先に無くなるな。
VCだと32ビットで11250要素位がメモリ的に限界。リリースで10秒くらいだった。@N3700
俺もこれくらいできるようになりたい!
0547デフォルトの名無しさん2015/08/11(火) 06:57:06.82ID:Hc76YZ4F
http://ideone.com/Eec7Fy

unique_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
>>525
これが流行ってるのか?
重さで区切ったテーブルを用意して、データを1つずつ取り出してそれを
テーブルの全要素に加算したとき、よりよい条件ならデータ更新するだけではないか?
高速化のよちはあるか?
0549デフォルトの名無しさん2015/08/11(火) 08:18:34.17ID:d4rwMY1e
>>548
論よりコードでお願いします。
0550デフォルトの名無しさん2015/08/11(火) 09:04:29.52ID:b1gdhSBL
>>548
余地ありまくりです
0551デフォルトの名無しさん2015/08/11(火) 09:08:11.44ID:b1gdhSBL
C++

>>539(修正版) (>>547氏のコードの2倍遅い)
http://ideone.com/pOiWrM

>>547氏のfork、vectorにしただけで多少早くなった
http://ideone.com/SXOjCw
0552デフォルトの名無しさん2015/08/11(火) 09:54:02.46ID:4SWJuJjS
>>551
あ、なるほど、bpをいじらなくても結果を取り出せるようにしたので速度が倍になるわけですね

それとvectorにしただけで速くなるという事は生の配列をいじっているようなコードを吐いてくれる
事を期待して無理矢理unique_ptrを使ったのはもはや無意味でvectorの方がいいコードに
してくれるようになってるみたいですね

なんかいろいろ勉強になりますわー
0553デフォルトの名無しさん2015/08/11(火) 13:57:21.97ID:b1gdhSBL
C++
>>551上 再修正、もうむりぽ
http://ideone.com/XTVoVn

>>552
いえいえ、私のが2倍遅いんですw
今は>>547さんのコードが一番速いはずです

それと私の変更は修正になってませんでした、すみません
unique_ptrの認識は、仰る通りと思います
初期化処理が宣言した場所にずれて、計測時間が変わっただけみたいです
0554デフォルトの名無しさん2015/08/11(火) 21:39:13.92ID:twERAkdr
Project Eulerより

フィボナッチ数列で最初に1000桁になる Fibonacci(n)のnと、Fibonacciの値を求めよ
ただし、BigIntegerを実装している言語はそれを使ってはいけない
0555デフォルトの名無しさん2015/08/12(水) 00:59:20.40ID:aVMu6OBo
>>525
9つのデータを重さ順に並べると、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
>>525
(続き)
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:aVMu6OBo
>>525(続き)
parm(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
>>555
なかなかいい眼してますね。
コンビネーション関数があれば動的に算出して食わせられるんだけど、C++には生憎無い。
残念だ。チクショー。
0559デフォルトの名無しさん2015/08/12(水) 01:33:22.67ID:3JfHZzAv
標準になくともコンビネーションくらい自作でいい
0560デフォルトの名無しさん2015/08/12(水) 01:48:07.06ID:bzee/ayF
>>554
> ただし、BigIntegerを―使ってはいけない

このスレ的には、禁止するより BigInteger をうっかり使うと
思わぬ遠回りになる良問考えて、それを何食わぬ顔で出してほしいと思う
0561デフォルトの名無しさん2015/08/12(水) 01:51:00.09ID:kmWvGKo7
>>559
頭悪すぎて自作できません。Orz
0562デフォルトの名無しさん2015/08/12(水) 02:03:56.28ID:EwmSeq/v
Free Basicは多分スレで初出かしら
0563デフォルトの名無しさん2015/08/12(水) 03:04:36.43ID:3NKu34CI
>>555
10進BASIC(JIS Full BASICのサブセット)で書いてみた

http://pastebin.com/1ZEzEQxR

これインタープリタのはずなのに強烈に速いね
計算量を減らした効果が出てる
このBASICは標準でグラフィック描画機能があるのでグラフが
必要な時にも使えるね

BASICなんかほとんど使った事がないんで最初配列をどうやって
初期化しようかと迷ったけどDATA文とREAD文ってのがあったんで
>>555さんのを簡単に移植できた
0564デフォルトの名無しさん2015/08/12(水) 03:08:38.14ID:3NKu34CI
この10進BASICが好きなのは「十進BASIC 第2掲示板」に結構高度なトピックが投下されてるから

http://6317.teacup.com/basic/bbs

数学者のような人が多いんでしょうか・・・
0565デフォルトの名無しさん2015/08/12(水) 03:10:03.95ID:3JfHZzAv
アマチュア数学愛好家
0566デフォルトの名無しさん2015/08/12(水) 03:24:32.00ID:3NKu34CI
あとリンクからたどれる

http://www.urban.ne.jp/home/kz4ymnk/seminar/basic/index.html

からダウンロード出来るzipファイルには面白いアルゴリズム集の詰め合わせになっている
0567デフォルトの名無しさん2015/08/12(水) 03:25:14.53ID:3NKu34CI
>>565
あ、なるほどそうでしたか
これだけの分量を書くんだから相当の知識を持ってる人なんでしょう
0568デフォルトの名無しさん2015/08/12(水) 03:29:13.69ID:YDzp28fn
>>554 Java
http://ideone.com/4nwLYD
手抜きw
05695292015/08/12(水) 17:31:56.70ID:ykmHsL68
お題 Part.4 197
>>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:i7Ce6lvW
お題
ttp://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:yOa4X5cV
お題
http://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+hx
お題:
C/C++限定。
主要なC/C++コンパイラーで完全にポータブルなstdint.hまたはcstdintを作れ。
0574デフォルトの名無しさん2015/08/12(水) 23:41:20.77ID:kmWvGKo7
>>573
回答者に優しくない。
テンプレートメタプログラミングすればできるんじゃね?
よく知らんけど。
0575デフォルトの名無しさん2015/08/13(木) 00:48:57.22ID:5m9qfokk
片山なにがしの公式サイト(?)に体液交換所とかあるけど、正直きもいよね。
っていうか風営法的に大丈夫なの? 風営法的におkだとしてもキモイから死ねばいいと思うよ(ニッコリ
0576片山博文MZ ◆T6xkBnTXz7B0 2015/08/13(木) 11:18:40.34ID:TzobCxoU
>>573
そのまんまのpstdint.hというのがあるようなので、お題は取り下げます。
0577デフォルトの名無しさん2015/08/13(木) 15:15:30.10ID:OKgzTFKd
お題
整数N(10**15)の素因数を全て出力せよ
0578デフォルトの名無しさん2015/08/13(木) 16:20:45.22ID:AjD0KUn3
>>554
その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
>>554
続き
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
>>578
同じく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
>577
題意がN=10**15ということならば、
10**15=2**15*5**15
0583デフォルトの名無しさん2015/08/15(土) 23:19:12.68ID:J/PFL1Tj
>>554 Squeak/Pharo Smalltalk

| 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:nCIMfI1D
>>583
Smalltalkとはなつかしい 名前ですね。
このsmalltakが実際に動くコンピュータが
あるのですね。
パソコンでは、Smalltalkのコンパイラか
インタプリタはないのでしょうか。
0585デフォルトの名無しさん2015/08/16(日) 03:03:32.17ID:KpU9gAzT
てす
0586デフォルトの名無しさん2015/08/16(日) 03:06:36.61ID:KpU9gAzT
>>1にあるようなオンラインで実行できる環境は見たことないですね
ttp://qiita.com/newapplesho/items/d541bfdc1c54f273cea9
0587デフォルトの名無しさん2015/08/16(日) 08:55:08.94ID:nCIMfI1D
>>586
ご教示ありがとうございます。
Smalltalkがいまでも現役であることに驚いています。
PL/IとかModular-2とかAdaと同じように、もう消え去った
言語かと思っておりました。
0588デフォルトの名無しさん2015/08/16(日) 10:50:51.16ID:ZfhVUxlQ
>>584
Smalltalk 自体は 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+Dquo
>>581
FreeBasicはコンパイラなんですね、知りませんでした
手元にVS2015があるんでもっぱらC++とC#ばっかりですが、VBも使おうと思えば使えるので
それでもやってみようかな
いやVBなんか使ったら反則だな
速度的にはC#とほとんど同じだし
0590デフォルトの名無しさん2015/08/16(日) 14:00:47.59ID:nCIMfI1D
>>588
たびたびの御教示ありがとうございます。
SmalltalkというものはXeroxパルアルト研究所で開発された
画期的なオブジェクト指向言語であるという1980年代止まり
(『bit』とか『数理科学』で得た)程度の智識しかありませんでしたので、
大変参考になります。
Fortran IV→Basic→Pascal→C/C++と進んできたものの
C++のオブジェクト指向的なものについていけないロートル
にとっては、Smalltalkは敷居が高そうですが、がんばってチャレンジ
してみようかとおもっています。
0591デフォルトの名無しさん2015/08/16(日) 14:18:08.40ID:KpU9gAzT
>>588
ありゃ実行できるんですね。ごめんなさい。
ちなみにSmalltalkのこと全く知りません。
オブジェクト指向の祖先ぐらいとしか。
0592デフォルトの名無しさん2015/08/16(日) 17:43:22.63ID:GQzK8CVx
ここは丁寧なインターネットですね。
0593デフォルトの名無しさん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:fmZCPpbb
>>595
http://ideone.com/WMBgIG
C++。VCでしか動かないコード。マルチバイト文字はほんとどうしようもないな。
うにこーどコンテナがはよ来てほしい。
まぁ、もう一個作って通常のChar文字のを返せばいいんだけどめんどくさいのでパス。
0597デフォルトの名無しさん2015/08/19(水) 20:19:22.27ID:fmZCPpbb
http://light.dotup.org/uploda/light.dotup.org227226.png
ローカルではこんな感じで動いてる。
0598デフォルトの名無しさん2015/08/19(水) 20:50:43.73ID:pyvbsVBG
http://ideone.com/tUFV4q

C#はUnicodeだからこういうの楽だなぁ
0599デフォルトの名無しさん2015/08/19(水) 21:34:01.23ID:K0fM8cGk
>>595 C(ゴルフ風味)
http://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:MCjdlcPA
頑張ってください!
0602デフォルトの名無しさん2015/08/20(木) 09:13:49.19ID:d7+5K/06
>>595 Squeak/Pharo Smalltalk
公式版(英語版)では文字化けするけれど、
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
06035292015/08/20(木) 11:19:26.75ID:PhWv3bmG
>>595 Python

https://ideone.com/V9MjC6
0604デフォルトの名無しさん2015/08/20(木) 11:20:36.27ID:PhWv3bmG
名前欄消し忘れた・・・お題とは特に関係ありません
0605デフォルトの名無しさん2015/08/20(木) 15:55:22.32ID:n0GaH406
>>602
> GNU Smalltalk でも動くように改変してみた(けど、マルチバイト文字列は扱えないっぽい?

ideoneではだめっぽいですが、ローカルならI18Nパッケージをロードすることで使えるらしいです。

GNU Smalltalkで日本語(Unicode)を扱う - レガシーコード生産ガイド
http://phaendal.hatenablog.com/entry/2015/08/18/231817
0606デフォルトの名無しさん2015/08/20(木) 19:54:27.49ID:MPj4cmUO
>>595 FreeBasic
Dim 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
>>595
>>606
別の結果:
ですどう進捗ですかどうですどうですですかどうどう進捗進捗かどうどう進捗かかです進
捗かかですか進捗どうどう進捗進捗ですかです進捗どうどうですどうどうです進捗どうか
かどうですどう進捗進捗か進捗ですどうです進捗進捗かですどう進捗かですか進捗進捗か
かどうですかどうですですか進捗進捗ですどう進捗かどうか進捗ですか進捗進捗かですで
すかどうですどうですですかかですです進捗進捗進捗か進捗進捗か進捗どうどうどうどう
かかかどうかどうですですどうかかかか進捗ですかですですどうですかかどうどうですど
うですか進捗かどう進捗どうです進捗かですかですです進捗どう進捗かです進捗ですかで
すかですどうです進捗どうどうどうですどう進捗ですかどうですかですどう進捗進捗どう
進捗進捗かですです進捗どうですです進捗どうです進捗どう進捗どうどうです進捗どうで
すか??? 362文字で煽られました
0608デフォルトの名無しさん2015/08/20(木) 20:44:48.10ID:zKrdr4ko
>>599
printfの使い方面白いですね
一瞬Pythonのprintかと思った
0609デフォルトの名無しさん2015/08/20(木) 22:11:53.49ID:PM3A/Um9
http://ideone.com/oDqmhX

C#の改良版
この場合はwordsのindexが0,1,2,3の順に出て来ればそれで終了だから
わざわざ重いToString()でその都度表示させなくても最後に一回だけ
表示すればいいね
0610デフォルトの名無しさん2015/08/20(木) 23:49:02.00ID:NYEJ8Y+W
>>595
Ruby
エンコードは環境に合わせて

# 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:RwXqV507
>>595
Haskell
http://ideone.com/2T8Ex

うーん…
0612デフォルトの名無しさん2015/08/21(金) 13:52:10.82ID:RwXqV507
URL一文字抜けてました
http://ideone.com/2T8Exx
0613デフォルトの名無しさん2015/08/21(金) 18:01:04.83ID:2BxAwlW6
チンコォ
0614デフォルトの名無しさん2015/08/22(土) 16:35:44.33ID:SF3spgkL
>>595 Emacs Lisp

(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:/uEqDuKi
>>612
Haskell よくわからないんですが、最後に res を一気に出力している仕様と読みました。
興味本位で恐縮ですが、ランダムな語をたとえば 0.2sec ずつ間をあけて逐次表示するように
仕様変更することは、このコードにちょっとした追記 and/or 修正で可能なものなものですか?
(こちらの読み間違いで、すでにそういうコードだったらごめんなさい。)
0616デフォルトの名無しさん2015/08/23(日) 02:28:02.76ID:bL4DWVex
>>615
>ちょっとした追記 and/or 修正で可能なものなもですか?
http://ideone.com/2DpiPl

ちょっとではできませんでした…
ヘボHaskellerにはこれが限界のようです
0617デフォルトの名無しさん2015/08/23(日) 07:36:18.27ID:+kEeUpua
>>616
ありがとうございます。読んでみます。
0618デフォルトの名無しさん2015/08/23(日) 14:37:18.72ID:r5zCd+h4
>>595
FreeBasic改訂版
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:7CXqQTim
このスレって「算額」みたいだね。

https://ja.wikipedia.org/wiki/算額

素敵な文化だと思います (・∀・)
0620デフォルトの名無しさん2015/08/23(日) 17:27:04.09ID:UsyQeA+D
初めて聞いたぜ
0621デフォルトの名無しさん2015/08/23(日) 18:58:56.94ID:8rh7GHk2
>>620
関孝和とかも知らない人?w
0622デフォルトの名無しさん2015/08/23(日) 19:23:35.50ID:r5zCd+h4
>>619
そうですね。まさに遺題継承です。
0623デフォルトの名無しさん2015/08/23(日) 20:20:29.66ID:+uQzTNZq
>>619
動くコードを残しているというあたりがそれっぽいかもね。
ただ自分の場合はデバッグ適当なので妄信して使うと痛い目見る可能性が高いけど。へへ。
0624デフォルトの名無しさん2015/08/24(月) 01:33:18.30ID:yxLzAtG8
Project Eulerより

http://pastebin.com/SW5G9d7U

この行列の連続した縦または横または対角線上の4つの数字を乗算した結果で
最も大きな数字は何か

問題の原文
https://projecteuler.net/problem=11
0625デフォルトの名無しさん2015/08/24(月) 03:01:46.43ID:TPAjrb/L
>>624
http://ideone.com/imXeNE
C++。これであってる?
SIMD殺しだな。行列を縦と横用は用意できるが斜め用はなかなか難しい。
そこまで技量ないから何もやってないけど。
2次元配列使ってるが、実際あんまり効率よくないので、1本にしたほうがいいかもな。
0626デフォルトの名無しさん2015/08/24(月) 03:11:34.70ID:8uiBkhLK
2個、3個の乗法を使いまわすんだろ?
3個が計算済みだったら分岐は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
>>624 Squeak Smalltalk

| 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
ちなみに >>629 は、
データをネット経由で取得とか余計なことをせず、次のようにペタ書きすれば、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
>>624
遅ればせながらC++
http://ideone.com/sDo6vF
0632デフォルトの名無しさん2015/08/25(火) 13:56:14.08ID:RLrOO49k
>>624FreeBasic
Dim 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:vVSJ44wn
やってはいないが、2かeか10などの対数を求めて足し算に持ち込んだら速いだろう。
0634デフォルトの名無しさん2015/08/25(火) 20:19:58.20ID:odxiALMU
>>624
@Mathematica

http://ideone.com/0wcBQj
0635デフォルトの名無しさん2015/08/26(水) 01:05:29.49ID:pJv7VE/g
そう来たか
0636デフォルトの名無しさん2015/08/26(水) 21:24:41.10ID:yHgKqfXq
こちらもProject Eulerより
最も回答数が多い問題(簡単だからだろうね)

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:yHgKqfXq
あ、結果は

result = 233168

です
0638デフォルトの名無しさん2015/08/26(水) 21:33:56.24ID:yHgKqfXq
もうしわけない、この訳は問題を「3及び5だけで作った合成数」と読み違えていた時のものです
実は「3または5の倍数」だったんですね

合成数の時は3と5だけで作るために配列を3^6=729だから6個ほど用意して
その中に1と3と5を入れていく組み合わせが必要かなーとか余計な事を考えてました
0639デフォルトの名無しさん2015/08/26(水) 23:14:27.57ID:nSfPbyXQ
前に見た覚えがあるな。
0640デフォルトの名無しさん2015/08/26(水) 23:36:55.11ID:pB3YAw41
>>636 Squeak/Pharo Smalltalk

((1 to: 999) select: [:x | (x isDivisibleBy: 3) or: [x isDivisibleBy: 5]]) sum "=> 233168 "
0641デフォルトの名無しさん2015/08/26(水) 23:41:13.56ID:nSfPbyXQ
和じゃなくて積じゃね?
0642デフォルトの名無しさん2015/08/26(水) 23:43:17.82ID:nSfPbyXQ
違うわ、マルチプルのサムだった。ごめん。勘違い。
0643デフォルトの名無しさん2015/08/27(木) 06:04:32.27ID:dP3c3bmU
>>636
@Mathematica

http://ideone.com/FP4Iqk
0644デフォルトの名無しさん2015/08/27(木) 08:41:53.66ID:oNXmE8hM
>>636 FreeBasic
Dim 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:9KnKzHgu
FreeBasicって何かあったのか。マイナーすぎる言語が使われてるが。
0646デフォルトの名無しさん2015/08/27(木) 10:01:32.13ID:oNXmE8hM
>>645
簡単に使えるという以外の他意はありません。
一応、この言語以外に、Pascal、Fortran、C++なども使えますが、
Editorでプログラムを書き、そのままコンパイルして実行できる手軽さ
でFree Basicを使っているまでです。
0647デフォルトの名無しさん2015/08/27(木) 12:20:55.88ID:oNXmE8hM
>>636
C++

http://ideone.com/PTYqiP
0648デフォルトの名無しさん2015/08/28(金) 05:48:44.95ID:bUorkSPW
>>636

またしてもC++
http://ideone.com/DRMTX1
0649デフォルトの名無しさん2015/08/28(金) 08:59:37.83ID:vI1BOxp3
>>636 Python
ただ単に>>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
>>636 J
+/ >: I. +./ 0 = 3 5 |/ }. i. 1000
233168
0651デフォルトの名無しさん2015/08/28(金) 14:55:42.99ID:B9AXnjt8
>>636 F#
printfn "%d"<| List.sum [for x in 1..999 do if x % 3 = 0 || x % 5 = 0 then yield x]
// 233168
06526492015/08/28(金) 18:49:04.77ID:vI1BOxp3
>>636

>>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:65eyPlZo
お題: hackerrankより

https://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:yMiYELYH
>>653
http://ideone.com/doNujI
C++。いっちばーん。今日は調子がいいから短いコードが書けた。
0655デフォルトの名無しさん2015/08/29(土) 06:08:55.23ID:wfPnBoUA
>>653
@Mathematica

http://ideone.com/3Q7858
0656デフォルトの名無しさん2015/08/29(土) 10:52:38.92ID:WkkW5Zl4
(require 'cl-lib)
cl-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:NDR2mEwv
>>653 Free Basic
Dim 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
>>653 Emacs Lisp

(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
>>653 Squeak/Pharo Smalltalk

| 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:LqdW8bvi
>>653 J
f =: 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:/y7LwmGS
>>660

2 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:/y7LwmGS
>>660
Substringの説明は
https://www.hackerrank.com/challenges/two-strings/topics/string-basics
にあります
0663デフォルトの名無しさん2015/08/30(日) 07:56:04.83ID:qggTaQba
>>661
なんか見当はずれのコドみたいなので
>>660はとりさげます
0664デフォルトの名無しさん2015/08/30(日) 23:33:46.86ID:aj+QsKaJ
お題:半角数字の列をよくある日本語表記に直してください

f(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:BuFncqM8
>>664
http://ideone.com/ze30qD
C++。イデオンだとSig11で落ちる。なぜじゃー。Orz
オプションはやってない。
0666デフォルトの名無しさん2015/08/31(月) 06:25:41.82ID:/q7V3tHF
>>664 ocaml
http://ideone.com/hbL5uc
数値バージョン、4桁の京を扱えない

http://ideone.com/gYlwTH
文字列バージョン、4桁の京も大丈夫
0667デフォルトの名無しさん2015/08/31(月) 06:26:01.89ID:yqA7xXJ+
>>664
@Mathematica

http://ideone.com/57cmds

※分かりやすいように関数名を変えています。
0668デフォルトの名無しさん2015/08/31(月) 06:39:17.56ID:iqkJ/hRF
お題:
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11149721076
0669デフォルトの名無しさん2015/08/31(月) 07:03:04.72ID:OqMtrQmZ
お題の出し方が斬新だな
0670デフォルトの名無しさん2015/08/31(月) 11:34:48.22ID:8CZHcZuv
>>665
MinGWのg++でコンパイルしたら、
'unit_64_t' is not a member of 'std'
というエラーメッセージが出てコンパイルできませんでした。
このエラーを回避する方法はありますか
0671デフォルトの名無しさん2015/08/31(月) 12:05:11.18ID:44vWBFtj
>>670
#include <cstdint>
0672デフォルトの名無しさん2015/08/31(月) 14:11:30.14ID:5pWQowlO
>>664
Ruby
関数じゃなくて標準入力標準出力でやってしまった
オプション非対応
極まで対応
それ以上は単位が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
>>670
<cstdint>はコードに入ってるんだが、なんでコンパイルできないかなぁ。よくわからん。
っていうか、なんでランタイムエラーで落ちるのかサッパ解らん。
VS2015コミュニティで開発してるんだが、それでは問題なく動いてる。
な ぜ だ − Orz

一応検索したらこっちの不具合ではないっぽい記述を発見したので保留。
0674デフォルトの名無しさん2015/08/31(月) 15:10:03.71ID:XMVdTen+
>>668 Common Lisp
面白そうだからやってみたけど、真面目にやらないと収束しないなこりゃ
http://ideone.com/3crdiP
0675デフォルトの名無しさん2015/08/31(月) 16:20:52.21ID:8CZHcZuv
>>673
MinGW 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
>>675
さっぱりやね。標準のライブラリの範囲でやってるから怒られるはずがないんだけど、パス通ってる?
0677片山博文MZ ◆T6xkBnTXz7B0 2015/08/31(月) 17:05:31.30ID:l/+TTZEK
>std::unit64_t

unsigned int 64-bit type
だから
uint64_tだよ
0678デフォルトの名無しさん2015/08/31(月) 18:00:19.16ID:dZB28jlS
>>664 J
f =: 3 : 0
if. y = 0 do.
0
else.
a =. (5 # 10000) #: y
; (* a) # a (<@,&amp;":)"0 ucp '京兆億万 '
end.
)

f 1234億2234万3234 
1234億2234万3234 
f 100000000000000039x
10京39 
0679デフォルトの名無しさん2015/08/31(月) 18:12:39.09ID:dZB28jlS
>>678
実行結果コピー失敗した
f 123422343234x
1234億2234万3234 
でした
0680デフォルトの名無しさん2015/08/31(月) 19:22:57.92ID:yqA7xXJ+
>>674
あんたすげぇなw
0681デフォルトの名無しさん2015/08/31(月) 21:01:55.00ID:dZB28jlS
>>653 Io
subString := 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:MGeyNwdC
>>653 F#
let 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
>>664 Emacs Lisp

(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
>>664 Squeak Smalltalk (日本語版 https://osdn.jp/projects/squeak-ja/)

| 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:2ClwOalo
>>664 Python3
from 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
ファイルの内容の検索、重複・類似検索はプログラムの基本とおもう。Googleの土台もここ。
お題でローカル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:MVA2NaoW
>>686
FileMany使えばどう?
C#x64版だけど一度も落ちた事がない
0689デフォルトの名無しさん2015/09/02(水) 04:57:53.68ID:m4hBDGn9
>>664
http://peace.2ch.net/test/read.cgi/tech/1434079972/9
0690デフォルトの名無しさん2015/09/02(水) 11:54:23.73ID:RN6F+W1d
>>689
カンマの位置おかしくね?
06916552015/09/03(木) 05:55:01.65ID:4NI0YG0L
>>653
@Mathematica

http://ideone.com/923Sls

※Substring の解釈を間違っていたので書き直しました。
0692デフォルトの名無しさん2015/09/03(木) 08:13:01.79ID:Hq1TyWtW
>>664 Go
http://ideone.com/h9BlKP
fの引数には文字列、内部でbig.Intを使うことで京まで実装
0693デフォルトの名無しさん2015/09/03(木) 08:41:34.44ID:Mb6vlEP2
>>690
>>664 のカンマの打ち方は変
数字を英語で読んでみればわかる
0694デフォルトの名無しさん2015/09/03(木) 09:33:37.13ID:2z67PNJX
英語で読む?題意に沿う事も出来ない低脳QZか
0695デフォルトの名無しさん2015/09/03(木) 09:40:36.27ID:BYmbupPq
出題にケチを付けて出された問題が意図するのと違う答えを提出してたら
プログラミングコンテストにすらハブられるよ
そんなんだから無職なんだろうけどな
0696デフォルトの名無しさん2015/09/03(木) 19:46:12.06ID:HDK0Xx13
Goって初かな
0697デフォルトの名無しさん2015/09/04(金) 01:34:34.38ID:ErYOyNSO
奇囲碁に三味線とプログラムから遠ざかっていたら、お題見てもぱっと作り出せなくなった
年だのぉ
チンコもなかなか立たないし

わははは
0698デフォルトの名無しさん2015/09/04(金) 11:48:19.76ID:60C8P18N
お題:

NQueens問題を解け
N=16まで求めよ
また、N毎の時間も計測せよ
ユニーク解については考慮しなくてもよい
0699デフォルトの名無しさん2015/09/05(土) 05:11:15.58ID:pNQf4xq/
>>698
C#
http://ideone.com/12sLAy

N=16はideone.comでは残念ながらタイムアウトしてしまう
手持ちの処理系では8秒ほどで求まる

それにしてもこれをC++に書き直してもそんなに速くならない事に驚き
新しいJITコンパイラは優秀
0700デフォルトの名無しさん2015/09/05(土) 06:02:46.91ID:bMqKfWg+
>>698
http://peace.2ch.net/test/read.cgi/tech/1434079972/11

>>699
爆速だ‥
0701デフォルトの名無しさん2015/09/05(土) 08:35:35.11ID:HkcVe1Bz
>>694
>>695
ここは>>619 のとおりお題スレ、ならばお題の批判もありなのでは?
0702デフォルトの名無しさん2015/09/05(土) 08:37:14.95ID:dxdGb8xg
お題が出てそれに対して批判してたらコンテストが成り立たないって話なのにアスペか?
0703デフォルトの名無しさん2015/09/05(土) 08:58:10.81ID:bk65bvoQ
どうしてもお題を批判したいのならここで書かずにチラシの裏にでも書いとけ
皆答えてる奴がいるのに一人だけ暴れるとかキチガイかよ

それに日本語圏では4桁と3桁の間にカンマを入れるのになぜ英語で読むんだ?
頭おかしいのか?
0704デフォルトの名無しさん2015/09/05(土) 09:54:03.65ID:FYG0oxrb
>>702-703
それはQZの思考過程がこうなってるからなんだよ

普通の人が解答を間違えた場合:「済みません間違えました」
QZが解答を間違えた場合:「俺は間違ってない。間違ってるのは出題の方だ」←実際は間違ってばかりいる

自己愛性パーソナリティ障害特有の思考回路

捏造した歴史を信じこんで真実の歴史から目をそむけているどこかの特亜人そっくりですなあ
ニンニクくさー
0705デフォルトの名無しさん2015/09/05(土) 11:36:42.88ID:u8tdzSFZ
>>699
プログラムだけでなく、15Queenの場合の配置の一例を表示して
もらえないでしょうか。
0706デフォルトの名無しさん2015/09/05(土) 11:36:50.97ID:H3Bu+jcQ
荒れてるところすみませんがお題です

Google 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
>>705
横槍だけど、お題はNQueens問題であり、ユニーク解(回転したり反転すると重なる重複解)
を考慮しない置き方の数を求めるものだ

実際の配置を出力すると膨大なデータになり、時間を測定するという題意に背く事になる
この場合時間の測定は必要なくなるだろ
そんなプログラムはどこにでも転がっている
0709デフォルトの名無しさん2015/09/05(土) 11:54:21.61ID:i6kEld9S
ユニーク解と、そうでない解の間に、たとえば4倍したら求まるといった簡単な関係があるんだっけ?
それだったらどちらでも一緒だし、そうでなければユニーク解を求めないとダメでは?
一個求めただけでもいいことにならないか?
0710デフォルトの名無しさん2015/09/05(土) 11:58:23.07ID:i6kEld9S
Nクイーン問題(N Queens Problem)
http://www.ic-net.or.jp/home/takaken/nt/queen/index.html
0711デフォルトの名無しさん2015/09/05(土) 11:59:34.78ID:iR2NaoHp
この粘着具合はまたQZか

http://deepgreen.game.coocan.jp/NQueens/sig-GI26-11.pdf

これでも読めや
題意では"ユニーク解は考慮しなくてもよい"となっている
それにケチを付けるんならてめえがユニーク解を考慮したプログラムをまず書いてから言え
0712デフォルトの名無しさん2015/09/05(土) 12:02:22.49ID:iR2NaoHp
>>710
ちゃんと最初に"解の個数を求める"となってるね(・∀・)

ユニーク解を考慮した解の個数を求めるべきならお題にちゃんと「ユニーク解を考慮せよ」
と書いてあるはずだろ

「ユニーク解は考慮しなくてもよい」と書いてあるんだぞ
日本語読めないんでちゅか?
0713デフォルトの名無しさん2015/09/05(土) 12:09:06.35ID:i6kEld9S
>>711
どちらもユニーク解だが。どれも同一と見なすかで解個数が違ってくるからユニークのほうがいいだろ。
鏡像は別で、回転は同一とみなす人をいるかもしれない。




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
>>713
だからそこまでお題に背きたいんだったら改めて"ユニーク解を考慮せよ"という新しいお題を立てろ
もうこれ以上お前と議論しても無駄だ
0715デフォルトの名無しさん2015/09/05(土) 12:11:53.03ID:i6kEld9S
Boardは四角で、ことなる四方向から観察したら直ちに同じ見え方のものが4つあるのはわかる。
0716デフォルトの名無しさん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
>>716
お前が全滅すればいいのにな
完全に論破されたからと言ってまず誰も解答が付かない問題を出すとかガキかよ
0719デフォルトの名無しさん2015/09/05(土) 12:54:53.58ID:nIE3Kuq7
>>664 Emacs Lisp
キーワード引数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
>>708
私は15Queenの一つの例を求めているだけです、
コンピュータ内で例えば行列の形で配置を求めているならば、
その一例を表示することはできないでしょうか。
たとえば、すべての配置の数を求めた後で、その最後に求めた
配置を表示するということならば、時間はあまり掛からないと思いますが。
プログラムだけを提示されてもその言語を使える環境にないものに
とっては、このプログラムの正しさを検証するてだてがありませんので。
0721デフォルトの名無しさん2015/09/05(土) 15:52:40.59ID:1TQgpEDy
>>720
お前どんだけしつこいんだよ
じゃお前の書いたプログラムには全くバグがないのか
仕事で書いたプログラムに不具合が見つかっても「仕様です」と言って直さないつもりか
この問題は配置を求める問題ではない
「解の個数」さえ求めればそれでいいんだ

ビットマップを使った解法は外人が世界で一番最初に考案したそうなんでこの人に
「あなたのプログラムは本当に正しいのでしょうか。配置を表示できますか。」と質問を
英語で送ってみなよ

http://jsomers.com/nqueen_demo/nqueens.html

この人がそうだ
この人の書いたプログラムと本質的には何ら変わらない
もっと速いアルゴリズムもあるが長くなるので端折っただけ
お前を見てるとお前は人に嫌われる達人だなあと心から感心する
0722デフォルトの名無しさん2015/09/05(土) 16:13:25.93ID:1TQgpEDy
>>720
あ、それとお前頭が悪くて人のプログラムを読み解く力がなさそうだから教えといてやるよ
利き筋のみをチェックするのと配置も同時に求めるのは別の問題だ
どう読んだらこのプログラムの中に配置情報まで入っていると思えるのかそちらの方が不思議なんだが
いくらでも配置も覚えておくプログラムは書けるぞ

むしろこのプログラムは利き筋のみチェックして配置を求めるのを省いた分だけ速くなってるのだと
気付けないのかなあ

真剣に一度精神科で診てもらう事を検討しろよ
もう遅いと思うけど
0723デフォルトの名無しさん2015/09/05(土) 17:13:54.12ID:H2DL4EyO
これが噂の炎上学習法か
醜いね
0724 ◆QZaw55cn4c 2015/09/05(土) 17:25:37.26ID:bMqKfWg+
なりすましに利用されるキャラに成ったとは喜ばしいことだ‥
でも俺じゃないよ
0725デフォルトの名無しさん2015/09/05(土) 18:11:46.68ID:r36BFiK6
>>722
ざっと主張を読むと、>>722は頭いいとおもうけどな

異論あるやついるの?
>>720
このこは、馬鹿というか精神病はいってるいうか、
「云々なだけです」
なんてヤバスギなんだぞ
本人わからんだろうけど
0726デフォルトの名無しさん2015/09/05(土) 18:20:17.60ID:byXpZJ1D
>>720君へ
僕は>>699さんのコードを改竄して配置を表示するようにしてみたよ。

http://ideone.com/vkdR56

期待に応えられたかな???
0727デフォルトの名無しさん2015/09/05(土) 21:22:45.11ID:pNQf4xq/
>>706
どちらのテストケースも時間が掛かり過ぎるのでもっと小さなデータにしました

データは
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
>>728
(2 < disp) は(0 < disp)でもおkです
0730デフォルトの名無しさん2015/09/05(土) 22:22:12.08ID:OFlnC1Bs
>>729
やっぱり省略がアレになるので(2 < disp)に訂正します
0731デフォルトの名無しさん2015/09/06(日) 00:53:28.75ID:3aEa3HTV
>>728 Python3
http://ideone.com/cztw9F
spotから表示する数を求めていく方法
0732デフォルトの名無しさん2015/09/06(日) 02:03:11.12ID:labNDWrY
NQueenの問題といい、オセロの件といい.QZの自演は凄いな
0733デフォルトの名無しさん2015/09/06(日) 04:26:44.16ID:3aEa3HTV
>>728 OCaml
http://ideone.com/7NJGAS
>>731と同じアプローチ、ゴリ押しで書き下した
0734デフォルトの名無しさん2015/09/06(日) 06:07:10.46ID:laHESI+6
>>732
QZの自己承認欲求が強すぎるよな
完全に精神的に病気だな
炎上学習法をやるのはQZ一人しかいない
0735デフォルトの名無しさん2015/09/06(日) 08:08:20.90ID:/Fu+tBiS
>>727
ちょっと時間がかかりすぎですね
無理に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:3aEa3HTV
>>728 Go
http://ideone.com/XVUHYj
>>731と同じアプローチ、再代入ましまし
0737デフォルトの名無しさん2015/09/06(日) 08:23:56.62ID:pZj7Wd8c
>>728
汚Haskell
http://ideone.com/0D45kT
0738デフォルトの名無しさん2015/09/06(日) 12:29:03.84ID:RC4omDg7
>>706 Java
http://ideone.com/qW7Q0U
0739デフォルトの名無しさん2015/09/06(日) 15:06:47.52ID:mows7ZZ0
>>728 Emacs Lisp

(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:XK9v3oN2
>>728 GNU Smalltalk

http://ideone.com/hozAgO
0741デフォルトの名無しさん2015/09/06(日) 15:53:00.71ID:XK9v3oN2
>>698 GNU Smalltalk

http://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:QKeqN0i2
>>728
http://ideone.com/x7wphz
C++。ギブアップ。細かい仕様が対応できなかった。
表示回りっていつも適当だから、ここまで手の込んだのは無理やったわ。
GOTO使ってるあたりに苦悩を感じてくれ。
算数できなくなってることに絶望した。
0743デフォルトの名無しさん2015/09/06(日) 23:58:23.31ID:3aEa3HTV
>>728 C
http://ideone.com/u5zN0Z
原始的に配列へ詰め込んでソート、文字列の生成は断念した
0744デフォルトの名無しさん2015/09/07(月) 03:04:02.94ID:QAzFwx2+
>>664 C
http://ideone.com/TYc7SA
0745デフォルトの名無しさん2015/09/07(月) 03:04:53.70ID:QAzFwx2+
>>728 C
http://ideone.com/SPp4v5
0746デフォルトの名無しさん2015/09/07(月) 03:43:16.07ID:hx62h88L
>>728 C
http://ideone.com/IygETy
0747デフォルトの名無しさん2015/09/08(火) 00:20:53.77ID:qsWudAV2
>>728
省略の基点というのがよくわかりません
0748デフォルトの名無しさん2015/09/08(火) 00:24:13.57ID:HV2JZhb0
>>747
SpotLightを中心点に表示を要求されるのでここを目印に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
>>749
×非破壊操作がしにくい → ○破壊操作がしにくい
0751デフォルトの名無しさん2015/09/08(火) 10:54:06.55ID:n5Qbp6yS
>>749 Python3
引数を破壊的変更しないジェネレータ、要素がタプルになるので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:JhgINqf8
>>749 GNU Smalltalk

http://ideone.com/P2GxKa
0754デフォルトの名無しさん2015/09/08(火) 12:48:53.12ID:JhgINqf8
>>751
Pythonって、すごくシンプルに書けて格好いいですね。
ただ、この実装だと、多要素だけど要素のほとんどが同じで簡単に返せる場合
(たとえば "aaaaaaaaaaaaaaaaaaaaaaaaaaaaab" とか)
にもかかわらず戻ってこなくなったりしませんか?
0755デフォルトの名無しさん2015/09/08(火) 13:03:12.99ID:JcPY1iwa
>>749
C#

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:HV2JZhb0
数学ダメなんですよ。ため息出るわ。
0759デフォルトの名無しさん2015/09/08(火) 19:59:30.98ID:MMxN10T7
俺は数学、足し算なら怖くないな。
ただし演算数、非演算数、ともに二桁以内な
0760デフォルトの名無しさん2015/09/08(火) 20:35:18.17ID:WO1DF9qJ
C++のnext_permutation()アルゴリズムのヘッダを見て真似するのが一番簡単
0761デフォルトの名無しさん2015/09/08(火) 20:59:28.34ID:MMxN10T7
バカにしてたけど
javaやることにした
とりあえず スッキリわかるジャバジャバのKindle版注文した

ん?スレチだな
(*´σー`)ヘヘヘ
0762デフォルトの名無しさん2015/09/09(水) 01:01:53.28ID:WxXYPcUn
N=1 一意解=1 全解=1
N=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:kopU2pqH
GCJはプログラミングコンテスト本が出てるのでProject Eulerで

https://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:AxUmdUI6
n T U [cost]
1 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
>>762
>>765
>>1
0767デフォルトの名無しさん2015/09/10(木) 05:17:03.70ID:2byHSaL/
>>749 Python3
関数の仕様を勘違いしていたのでやりなおし
>>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
>>767
すばらしい。GNU Smalltalk に移植してみました。(文字列のみ対応の手抜きで恐縮ですが…)

http://ideone.com/C35eG9
0769デフォルトの名無しさん2015/09/10(木) 21:31:45.79ID:AToafzam
>>728 c
https://ideone.com/6f6Fcc
0770デフォルトの名無しさん2015/09/10(木) 22:15:18.95ID:Q2vaRfqD
>>763
モロにカンニングですみませんが

http://ideone.com/G9TU4A
0771デフォルトの名無しさん2015/09/11(金) 01:59:58.81ID:0Pjc40Dt
>>651 遅ればせながらPerl
use 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/
手抜きPerl
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/
use 5.016;
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
>>773
元の並びがソートされている場合、
保持されている現在の並びを破壊しながらでも
ジェネレータみたいに呼び出される度に次の順列を
重複なく返すアルゴリズムが>749のお題の肝では?
0775デフォルトの名無しさん2015/09/13(日) 19:11:57.62ID:dr5xNYTR
>>774
お題に「生成される順列はソートせずとも辞書順に並ぶこと」って一言いれておけばよかったですね^^;
0776デフォルトの名無しさん2015/09/13(日) 20:57:12.14ID:bLikZ+wL
>>749 OCaml
http://ideone.com/rSTdwr
引数はリスト限定で破壊的操作はしない、返り値で次の順列を返す
0777デフォルトの名無しさん2015/09/13(日) 22:52:40.22ID:b32GJr7l
>>440 c
https://ideone.com/WQrzaa
注:肝心な部分(comb, permute)はぐぐったサイトから無断で拝借しました
0778デフォルトの名無しさん2015/09/14(月) 07:17:09.48ID:aQticbJR
>>777
中身が見えない
0779デフォルトの名無しさん2015/09/14(月) 20:25:46.47ID:Gwz4vSRg
>>440 c
https://ideone.com/bL9NOn

>>777からの変更点:
・いったん全パターンもつのをやっぱやめる
・細部のちょこちょこっとした改善
0780デフォルトの名無しさん2015/09/15(火) 21:30:13.30ID:jovL9vh0
>>774 うっせーな、ハゲっが。

「生成される順列はソートせずとも辞書順に並ぶこと」の意味が
「出力する行が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
>>780 連投ごめんなさい、or式全体を()でくくらないと出力に抜けが起きるバグありあした…orz
修正版:

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
>>783
左側の新しい項の入れ替えに移行し右側の並びを一式リセットするためのsortは
reversieでよいはず。これにより並べ替えのオーダーをNlogNからNに低減できる。
また項を入れかえる対象の要素を検索する繰り返しは、その項より大きくかつ最も小さい
値の要素を探すので、平均行程1/2で打ちって検索の計算量も半減することができる。
それから、もう少しコンパクトかつ可読性ある書き方ができるはず。
0785デフォルトの名無しさん2015/09/16(水) 00:59:37.85ID:NuZWJDts
>>16 c
https://ideone.com/GS9JrQ
カウント版と算出版と両方
カウント版で出した値じっくりながめると
9, 99, 999…っていう値の気配がしたので
それ中心に押したり引いたりしながら算出
なお、理屈はよくわかっていないもよう
0786デフォルトの名無しさん2015/09/16(水) 01:04:42.91ID:zgtxEZCv
use feature qw{:5.16};

sub 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:TSIOTapp
>>749 Ruby
http://ideone.com/KLJ3T1
0788デフォルトの名無しさん2015/09/16(水) 07:10:31.01ID:2Yj1o+46
>>749 Go
http://ideone.com/dJjETu
Permutationインターフェースを実装すれば他の型でもできる
0789デフォルトの名無しさん2015/09/16(水) 13:06:36.59ID:fQczy5Yc
ruby初心者スレでこちらに書く様に促されたので、
できればrubyかpythonで答えて頂けるとありがたいです。

お題
以下の様な数値群から、重複しない要素を使って任意の数値(例えば2360)に最も近い和を求めるにはどうしたら良いでしょう?
115,135,215,352,358,655,885,925,936,1250,1285,1620,1850
0790デフォルトの名無しさん2015/09/16(水) 14:20:54.79ID:VfqLXb9I
115+135+215+358+655+885=2363
0791デフォルトの名無しさん2015/09/16(水) 14:23:48.16ID:aL/dguIa
>>790
任意の数値のアルゴリズム
0792デフォルトの名無しさん2015/09/16(水) 15:06:27.46ID:VfqLXb9I
データ件数10000件の場合とかだなw
0793デフォルトの名無しさん2015/09/16(水) 16:09:16.80ID:9fL6Ueyi
ポテトチップスを、60gの袋詰めする機械では、

9個の秤に、幾らかのポテトチップスが載っていて、
その秤の中から、60g以上で、
最も少ない重さを計算して、袋詰めする

9個の秤の重さの合計を、sum9として、
1個の秤の重さを求めると、残り8個の秤の重さもわかる。
2個の秤の重さを求めると、残り7個の秤の重さもわかる。
3個の秤の重さを求めると、残り6個の秤の重さもわかる。
4個の秤の重さを求めると、残り5個の秤の重さもわかる
0794デフォルトの名無しさん2015/09/16(水) 16:44:57.70ID:9fL6Ueyi
重複を許さない組合せ
Array.combination

13個の数字の合計を、sum13として、
1個の数字を求めると、残り12個の数字の合計もわかる。
2個の数字の合計を求めると、残り11個の数字の合計もわかる。
.
.
6個の数字の合計を求めると、残り7個の数字の合計もわかる

つまり、6個までのすべての組合せを計算すればよい
0795デフォルトの名無しさん2015/09/16(水) 17:54:44.06ID:slZMIjby
>>789
> 以下のような
っていう部分はどう解釈すればいいの?
例に挙がってる程度の数であれば、
総当りでいいんじゃね?
これ↓と同質の問題ならリンク先を参照。
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
>>789 ruby 2.0.0
単に全パターンをチェックした場合

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:ExTMGHGk
>>789
http://ideone.com/vwJNKv
一応解いたがオセー。最新CPUで1:40かかる。
順列使うくらいなら再起使ったほうが早いな。
コンビネーションほしー。
0799デフォルトの名無しさん2015/09/16(水) 22:16:07.44ID:JeX5l5vV
>>789
データの数が20個程度なら総当りで問題なく解けそうだけど最大数いくつ?
0800デフォルトの名無しさん2015/09/16(水) 22:42:12.73ID:aL/dguIa
これでいいのでは? データがx0, x1, ・・・xN、yに近い和を求めるとして。
y = 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/dguIa
>>800で関数calを作ればいい。
cal(y, vec)とすると、y,かvecが小さくなるので再帰関数で作れるはず。
0802デフォルトの名無しさん2015/09/16(水) 23:59:55.71ID:JeX5l5vV
>>789
http://ideone.com/IQiI0w
とりあえず何も考えずに総当り
20個だと1秒くらいで出るけど数が増えると死ぬ
0803デフォルトの名無しさん2015/09/17(木) 00:21:00.74ID:56vB2llc
網羅するしかないけど、再計算はしない、大きすぎる・小さすぎる和を検出して無駄なループをさせない点がポイントでは。
0804デフォルトの名無しさん2015/09/17(木) 00:36:51.76ID:oSu48zpr
>>789
http://ideone.com/lsHLPD
前に書えたやつを軽く修正
全探索解(2^n*n)と、ウソDP解(n*最大重量)
基本python2.xだけど、pypyで実行
08057892015/09/17(木) 08:46:22.84ID:aStCI4Gl
解答してくださったみなさんありがとうございます。
元々は50程度の数値群で、別にやらなきゃいけない物でもなかったんですが、
プログラミングでやるとしたらどうやるのかなと思ったのですが、
自分では解法が考えつかなかったので書き込んでみました。これから少しずつ見て理解してみます。
0806デフォルトの名無しさん2015/09/17(木) 09:19:36.19ID:7rI3c1r5
>>789 OCaml
http://ideone.com/xzzmf0
力任せ探索をハッシュテーブルを使ってメモ化
0807名無しさん@お腹いっぱい。2015/09/17(木) 11:24:35.90ID:Ref/prt+
今度PS4が値下げするそうなんだけど
PS4でプログラミングはできるのかな?誰か教えて。
CとかRubyとかその他。
0808デフォルトの名無しさん2015/09/17(木) 13:03:14.26ID:56vB2llc
PS4単体でプログラミングできる仕組みはあるのかしらないけど。
PS4で動くソフトの開発は素人でもできるのでは?
PS4で動くコンパイラとかエディタとかキーボードとか揃えばできるとおもうが。
0809デフォルトの名無しさん2015/09/17(木) 13:08:21.98ID:56vB2llc
適当にかいた。ここには契約しないとできないとなってる。個人利用でもソニーから開発環境提供してもらわないとムリなのか?



PlayStationRソフトウェアの提案・開発・発売をしたい | PlayStation.com
https://support.jp.playstation.com/app/answers/detail/a_id/161
0810名無しさん@お腹いっぱい。2015/09/17(木) 13:18:09.20ID:Ref/prt+
PS4の使い道があまりないのでPC代わりにプログラミングの勉強に使えないかと
思ったが、やっぱりダメみたいだね。
普通にWINDOWS PCを使う事にするよ。
回答ありがとう。
0811デフォルトの名無しさん2015/09/17(木) 13:59:14.02ID:56vB2llc
>>805
やってないけど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:IC3slnA5
求める値が10000( > 2360 * 50 / 13)程度なら、>>804これのfunc1で行ける
0814デフォルトの名無しさん2015/09/20(日) 05:58:43.13ID:vBjKt0IW
「Googleの入社試験」より

正の整数 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
>>814
「10進法表記で」かい?
0816デフォルトの名無しさん2015/09/20(日) 08:25:53.78ID:g7ao8Sb7
>>814
http://ideone.com/CzsJCK
C++。とりあえず2通り書いてみたけど、どっちも遅い。
片方は並列化すれば多少早くなるはず。片方はデバッグ投げた。コンビネーションほしい。
最近まともに解けてないな・・・。
08178142015/09/20(日) 08:37:04.35ID:vBjKt0IW
>>815
もちろん、10進数だよ

f(13) = 6
1, 10, 11, 12, 13で、1を6個使っている

11は、2個で数える
0818デフォルトの名無しさん2015/09/20(日) 09:36:23.85ID:1JwuQWhK
入社試験でパソコン使っていいのか?
0819デフォルトの名無しさん2015/09/20(日) 10:45:18.64ID:7mBXEM/X
>>814 OCaml
http://ideone.com/5Iro1v
最小のnのみ表示、経過はアウトプットしてない
0820デフォルトの名無しさん2015/09/20(日) 12:10:16.54ID:4gyZNSF5
>>814 C
http://ideone.com/yXDGV0
08217802015/09/20(日) 13:29:55.06ID:Ac94krKF
>>814
use 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:W3KPe91F
>>814 c
http://ideone.com/bqd6FF
0823デフォルトの名無しさん2015/09/20(日) 22:12:07.71ID:w687FJud
>>814 Squeak/Pharo Smalltalk

| 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
高速化しようとしてthreadいじってみたけど、そっちの闇にのまれて全く進まなかった。Orz
真面目に最後までやって終わってるのかすらわからん・・・。
0825デフォルトの名無しさん2015/09/20(日) 23:01:38.16ID:D6HrfyQE
マンカラ= カラハ = 豆まきゲームのAI作成で。自分が強いのを作るので対戦。



マンカラ ( ボードゲーム ):無料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/X
>>821の検証をしていたら
9が並んだパターンの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
08277802015/09/20(日) 23:55:39.69ID:Ac94krKF
>>826
ゴメンチャイ

>>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
08287802015/09/21(月) 01:39:22.93ID:jBw1B4c/
>>814 Perl

こった解探索アルゴリズムの物はすぐできない感じなので、
愚直に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:j5q7sFQh
1を数えるのはそんなに難しそうになくプログラムもなくても出来ないのか?
10区切りで1のケタをみれば、1個しかなくこれがループしてるだけ。
10の位も100の位も似たようなもので精密に数えたら手計算でもできないか?
0830デフォルトの名無しさん2015/09/21(月) 02:12:51.56ID:GyvZP+14
論よりコード。
08317802015/09/21(月) 02:17:07.55ID:jBw1B4c/
>>829
ある切のいい値、たとえば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で一旦 日和らせてもらた
08327802015/09/21(月) 02:30:00.52ID:jBw1B4c/
>>831
この弱点は、ある値が与えられたら、1からその値までの文字1の総和を
解析的にというか式で算出することに気がとられ、
そのような計算式にもとづき、切の悪い値の中にある>814の求解に挑む
方向に考えが流されちゃったところかな。
発想を転換した方が良いかもしれないと思った。
和を足し込みながら漸近させて行く方法などと組み合わせるとかね。
さ、寝るわ。
0833デフォルトの名無しさん2015/09/21(月) 03:09:20.39ID:TV+aglfl
>>814

愚直に日本語

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
4.k=1のときはd+1,それ以外はdをsに足し、sがn+kに一致したら
出力して終了(n+k<2の場合は継続)
0835またもや訂正(スマンコ)2015/09/21(月) 03:12:02.29ID:TV+aglfl
6. n=n+10として2.へ
0836デフォルトの名無しさん2015/09/21(月) 08:29:38.04ID:K1QACkp5
>>830
>論よりコード。

超名言w
0837デフォルトの名無しさん2015/09/21(月) 08:35:28.97ID:OcjZ8RWa
いいね
論よりコード
0838デフォルトの名無しさん2015/09/21(月) 09:05:31.09ID:QVf3KibQ
これは良い。テンプレに入れようず
0839デフォルトの名無しさん2015/09/21(月) 11:10:04.89ID:K1QACkp5
>>814
@Mathematica

http://ideone.com/G1pNO8

※ナイーブに書き下したので、2時間経っても計算が終わらない orz
0840デフォルトの名無しさん2015/09/21(月) 11:47:33.16ID:TV+aglfl
C語で書き直し
[?]には整数型変数名を入れてください

#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:zZoSoqbh
>>814のnと1の総数の関係が少し面白くて、お題とはちょっとずれるけど
f(n)=nとなるnを全て計算してみました
>>826を見るとnの桁数が大きくなると1の総数f(n)がnを追い越すことから
有限個と予想はできるのですが、実際計算してみるとf(n)=nとなる数は
0,1を入れると84個っぽい
C言語:http://ideone.com/6jwkpQ
08427802015/09/21(月) 12:39:31.93ID:jBw1B4c/
>>841
面白い結果だね。

13:[200000]
25:[2600000]
28:[35000000]
40:[35200000]

などは一旦 f(n)>n と逆転したあとに、f(n)==nに戻ったところだね
0843デフォルトの名無しさん2015/09/21(月) 13:22:00.66ID:o5zq47rX
>>814 Emacs Lisp

(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:vwg3dHwd
数字1の出現を見抜けるかどうかか
Google問題は
ヒントを知ると容易
ヒントが無ければ、f(1)=1, f(13)=6で一生悩む

>>841
深いな
08457802015/09/21(月) 16:14:22.83ID:jBw1B4c/
>>832 >814 のお題で1の出現回数を0から足し込んでいくのではなく
ある値が与えられたら、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;
08467802015/09/21(月) 16:16:19.84ID:jBw1B4c/
>>845 の実行例(行が多すぎたので2レスに分割)

$ 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+aglfl
あ
08488142015/09/22(火) 06:19:38.15ID:0pZRAY1l
非公認 Googleの入社試験、竹内薫、2008。
竹内さんは、NHKの「サイエンスZERO」に出ている人だね

Googleが試験問題を公表していないから、
外国のサイトを見まくって、問題を探し出して、
仲間と頭をひねりながら、解答を作って、
本にまとめてくれたことに感謝します

日本人のサイトでは、
あまりGoogleの試験問題は載っていないようだから、
本にまとめるのに苦労したみたい
0849デフォルトの名無しさん2015/09/22(火) 06:46:32.71ID:8xBEIW2I
つまり試験を受けた人のブログをコピペして、外国語だからばれないだろう
みたいな感じで佐野ったのか。
08508142015/09/22(火) 07:08:18.21ID:0pZRAY1l
竹内さんは、外人のブログをコピペしてはいない

外人は試験問題を、正確には書いていないから、
どういう問題が出たのか、色々なサイトを見て、
推測して書いているのだろう

それにブログに書いてある解答も、
たいてい間違っているらしい
0851デフォルトの名無しさん2015/09/22(火) 07:27:00.80ID:8xBEIW2I
>>850
だからコピーじゃなくて佐野ったんだろ?
0852デフォルトの名無しさん2015/09/22(火) 07:58:51.34ID:8xBEIW2I
フォントが違うからコピーじゃないとかなんとか。
08538392015/09/22(火) 09:34:36.06ID:hBy/MoF0
一晩放置したら答えが出てました。
ということで、コードを微調整。

@Mathematica

http://ideone.com/N7aNFY

※最後の結果に +1 してます。
08548392015/09/22(火) 11:55:24.83ID:hBy/MoF0
連投スマソ。>>846 を参考に改良。

@Mathematica

http://ideone.com/b49p5c

変更点:
1. n と nまでに含まれる”1”の個数 の差を
  次に計算する n の推定(guess)に利用。

2. FixedPoint で解が収束するまで計算。

結果:
・約80ステップで解に収束。
・計算時間が約20時間 → 1分弱に改善。
08557802015/09/22(火) 13:57:33.62ID:ungOuZXX
>>854
先に作られてしもた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
お題:正の整数n が与えられたとき,√n を連分数展開せよ
連分数:https://ja.wikipedia.org/wiki/%E9%80%A3%E5%88%86%E6%95%B0
0857デフォルトの名無しさん2015/09/22(火) 19:18:25.94ID:0pZRAY1l
「Googleの入社試験」より

ネイピア数 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:fdpESrCr
1時間もかかる??
100ミリ秒とかからず終わったけど

$ 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:81sVtoLn
>>857 Java
http://ideone.com/4trtDA
0860デフォルトの名無しさん2015/09/22(火) 20:03:13.08ID:uU2JaX25
やってないからわからないけど、手間・計算時間はある程度かかるはずだろ。短縮不可能な。
10ケタ最小fは一瞬だったら、11ケタ、12ケタの最小素数にしたらどうか?
0861デフォルトの名無しさん2015/09/22(火) 21:11:01.82ID:2QChAl7u
http://pastebin.com/gywLF8rr
1000桁までにも
結構たくさんあるみたい。
この確率の高さを正常と見るべきか
異常とみるべきか....
0862デフォルトの名無しさん2015/09/22(火) 21:17:43.58ID:uU2JaX25
円周率、Eは計算が面倒で、このような後ろに順番を追加していく数ならどうか?
これでなるべく数字を追加せずに、11ケタの素数部分を見つける問題。本質的な探索部分は同じでは。


1
12
123
・・・
123456789
12345678910
1234567891011
0863デフォルトの名無しさん2015/09/22(火) 21:38:02.27ID:fdpESrCr
>>861
10桁の数のうち素数は5%くらいなんだから
50個ぐらい見つかるのは期待値通り
0864デフォルトの名無しさん2015/09/22(火) 22:01:37.16ID:81sVtoLn
>>862
45678910111
0865デフォルトの名無しさん2015/09/22(火) 22:23:27.01ID:uU2JaX25
自分のは簡単だったな
0866デフォルトの名無しさん2015/09/22(火) 22:52:27.25ID:vtuBryJI
>>857 Emacs Lisp

(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"
08678572015/09/22(火) 22:56:05.44ID:0pZRAY1l
>>858
Rubyで、0.1秒ですか?
2008年の本に、マセマティカのFactorIntegerで、
1時間かかったと書いてあったので

暇なら、e,PI,√2,√3などの数列を使って、
素数を求めてくだされ
0868デフォルトの名無しさん2015/09/22(火) 23:01:55.10ID:2QChAl7u
eの計算以外の部分はそんなところ
多くが小さな素数で割れる合成数だし。
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
10桁の合成数でも最大素因子は高々5桁
なので、100000までの素数を篩で求めてお
いて、小さい素数から片っ端から割っていく
方法でも、十分だった
0871デフォルトの名無しさん2015/09/22(火) 23:28:35.29ID:2QChAl7u
ゴメソ 最小素因子の間違いね
0872デフォルトの名無しさん2015/09/23(水) 07:48:02.68ID:HiyuM5m6
>>857
@Mathematica

http://ideone.com/JEHRlj

※ 計算時間は3msでした。
0873デフォルトの名無しさん2015/09/23(水) 09:06:06.22ID:o5eDyHvE
>>857 C
http://ideone.com/E4vRcq
0874デフォルトの名無しさん2015/09/23(水) 11:14:10.28ID:o5eDyHvE
>>856 C
http://ideone.com/hhVd64
0875デフォルトの名無しさん2015/09/23(水) 14:11:29.28ID:ByrCNK4a
eでだとえば一分以内に11ケタや、12ケタは計算完了できるか?
08767802015/09/23(水) 14:26:50.38ID:22OCfLbN
>>875 何言ってるの君は、十数桁までの算出なら�_秒のレンジでしょに

一番簡単なatanの式でも
例、言語: MIT C Scheme

(* 4 (atan 1.0))
;Value: 3.141592653589793

doubleまでをサポートする言語でも16桁くらいまでは一瞬だよ。
08777802015/09/23(水) 14:28:33.20ID:22OCfLbN
>>876
おと間違えた、こりゃπだ。
でもeも同様に桁数が余り長くなければ�_秒だよ。
0878デフォルトの名無しさん2015/09/23(水) 14:50:46.49ID:ByrCNK4a
eの部分列が、だとえば一分以内に11ケタや12ケタの素数となるのを発見するのはできるか?
0879デフォルトの名無しさん2015/09/23(水) 16:08:06.43ID:0scTCNwp
多項式時間アルゴリズムならできるんじゃね?AKSとか。
AKSの実装みたことねーな。
0880デフォルトの名無しさん2015/09/23(水) 16:09:56.27ID:m6puvBDg
>>814
Ruby
答えの桁が少ないから終わるけど桁が増えるともっと工夫しないとダメだろうな
てかこんなんでいいのか

http://ideone.com/1riGzV
08818802015/09/23(水) 16:13:24.63ID:m6puvBDg
あ、間違えてた
こうだな

http://ideone.com/NFrGUW
0882デフォルトの名無しさん2015/09/24(木) 11:37:12.32ID:NZgcXNyR
>>118
亀レスですみません。
シルバーウィークで暇だったので面白そうな奴を組んでみました。
ほぼ計算結果は同じですが、違っていた奴

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
>>882
見逃してる点があるだけじゃね?

半径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:RV77AIll
>>880,881 を Python で。

http://ideone.com/BZeivY

短っ!
0885デフォルトの名無しさん2015/09/26(土) 02:51:47.44ID:i0zKrV8k
お題:以下を出力する
1
12
123
1234
12345
123456
1234567
12345678
123456789
0886デフォルトの名無しさん2015/09/26(土) 03:32:13.06ID:P25DxxnJ
>>885 Python3
for i in range(1,10):print('123456789'[:i])

43文字
0887デフォルトの名無しさん2015/09/26(土) 03:43:25.43ID:nw7tAYJX
>>885
Ruby

a=0;9.times{|i|p a=a*10-~i}

27文字
0888デフォルトの名無しさん2015/09/26(土) 03:46:20.54ID:VXPsa0vt
>>885
+++>>+++++++[<+++++++<+>>-]+++++++++[>+[>+<<<.+>>-]>[<+<<->>>-]<<<<.>>><-]
0889デフォルトの名無しさん2015/09/26(土) 03:50:47.76ID:P25DxxnJ
>>885 Go
package main;func main(){for i:=1;i<10;i++{println("123456789"[:i])}}

69文字
0890デフォルトの名無しさん2015/09/26(土) 03:53:30.71ID:VXPsa0vt
>>888
><とか全く無意味なところが残ってた恥ずかしい
0891デフォルトの名無しさん2015/09/26(土) 04:18:45.09ID:P25DxxnJ
>>885 OCaml
let 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:MTElpeKZ
>>885
http://ideone.com/OXxvpe
C++。ワンライナーにはかなわんな。
0893デフォルトの名無しさん2015/09/26(土) 04:34:02.86ID:P25DxxnJ
let p,s=print_endline,"123456789"
let 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:P25DxxnJ
>>885 Bash
for i in {1..9};do s=$s$i;echo $s;done

38文字、sが空の状態であることが条件
0895デフォルトの名無しさん2015/09/26(土) 04:56:05.75ID:LKYoiOWF
>>885 C++
http://ideone.com/myeXtj
0896デフォルトの名無しさん2015/09/26(土) 05:08:10.78ID:i8DjA5eB
>>885
@Mathematica

Range[9]//Map[{StringTake["123456789",#]}&,#]&//Grid

52文字
0897デフォルトの名無しさん2015/09/26(土) 05:21:25.74ID:OT+Fkj/0
>>885
Haskell

import Data.List
main = mapM putStrLn . tail . inits $ "123456789"
0898デフォルトの名無しさん2015/09/26(土) 05:41:15.64ID:VPLzo2d+
>>857 Squeak Smalltalk

| 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:i0zKrV8k
>>885 Io
for(i,2,10,writeln(((10**i-1)/9-i)/9))
0900デフォルトの名無しさん2015/09/26(土) 06:08:21.02ID:VPLzo2d+
>>885 GNU Smalltalk

(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
>>888
ナイスとしかいいようがない,ideoneに実行系があるよ
http://ideone.com/3viQmr
0902デフォルトの名無しさん2015/09/26(土) 06:47:48.50ID:wxxd8WLg
暗号系言語って何らかのトランスレータがあるんだろうか?
09037802015/09/26(土) 11:54:35.31ID:HlXxu/MY
>>885 Perl

say 1..$_ for 1..9;
0904デフォルトの名無しさん2015/09/26(土) 11:54:36.10ID:gfTU519R
>>885 c
#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:s3bG5fjE
>>885
C#

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:i0zKrV8k
>>885 R
for(i in 1:9)cat(1:i,sep="",fill=T)
0907デフォルトの名無しさん2015/09/26(土) 13:24:18.37ID:Bwgz8l1o
>>885 Rust
fn main() {
for i in 1..10 {
for j in 1..i+1 {
print!("{}", j);
}
println!("");
}
}
0908デフォルトの名無しさん2015/09/26(土) 15:15:42.63ID:O4axx1wD
>>885 Emacs Lisp

((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
>>885 Emacs Lisp
>>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:nw7tAYJX
>>885
Clojure

(doseq [x (range 1 10)] (println (subs "123456789" 0 x)))
0911デフォルトの名無しさん2015/09/26(土) 19:17:34.86ID:O4axx1wD
>>885 Emacs Lisp
>>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
>>911
無名再帰にすると長くなるのは仕方ないな
無理せず名前使えば?
0913デフォルトの名無しさん2015/09/27(日) 17:50:15.20ID:NRLqsz4V
>>856
出題者想定: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
お題:3の倍数でnで始まりnで終わる最小値を求める
例
n=1 -> 111
n=2 -> 222
n=3 -> 3
0916デフォルトの名無しさん2015/09/27(日) 22:19:00.57ID:pud21hSw
>>915 Java
http://ideone.com/d66hHf
0917デフォルトの名無しさん2015/09/27(日) 22:21:41.45ID:pud21hSw
おっと、>>916じゃダメだな
n=11とか111じゃないといかん
0918デフォルトの名無しさん2015/09/27(日) 22:38:32.88ID:pud21hSw
>>915 Java
http://ideone.com/uppkvD
今度こそ?
0919デフォルトの名無しさん2015/09/27(日) 22:49:58.77ID:OMWJkqrz
>>915
ruby2.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
>>918もバグってた件orz

>>915 Java
http://ideone.com/aoYVeV
0921デフォルトの名無しさん2015/09/27(日) 23:11:22.94ID:OMWJkqrz
Cで。
http://ideone.com/W4YhG4
0922デフォルトの名無しさん2015/09/28(月) 00:40:18.05ID:7hkQ4YH6
>>915
http://ideone.com/ol0EA0
C++。なんか妙な並びだな。これバグってないよね。
0923デフォルトの名無しさん2015/09/28(月) 00:48:29.00ID:Qdjt+JHs
出題があいまいだから何とも言えない
09249152015/09/28(月) 01:01:15.83ID:gcp0/eNc
n=11 の場合111のつもりです
09257802015/09/28(月) 01:13:38.21ID:1qg2YL0F
>>915 Perl

%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
09267802015/09/28(月) 01:16:00.39ID:1qg2YL0F
>>924
二桁以上対応要だたのか…
n=12 とかの場合、どういう解が要求されるわけよ?
09277802015/09/28(月) 01:22:19.87ID:1qg2YL0F
>>925
だめだこれぜんぜん間違っている。
検証不十分でアップしちゃってごめんね。
09287802015/09/28(月) 01:26:45.99ID:1qg2YL0F
>>927
たびたびゴメン,1-9まではこれで合ってるわ。検算の電卓叩き間違えてた。
二桁以上対応は、また時間のあるときにねハート
0929デフォルトの名無しさん2015/09/28(月) 01:59:41.01ID:nBnRDQZn
>>915 Haskell
深いこと考えずに

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
09309292015/09/28(月) 02:11:22.67ID:nBnRDQZn
>>915 Haskell
1から100まで列挙
http://ideone.com/b4VVyA
0931デフォルトの名無しさん2015/09/28(月) 02:13:48.56ID:etdYPLZ6
>>926
12なら12でいいんじゃないかな
0932デフォルトの名無しさん2015/09/28(月) 02:14:47.60ID:7hkQ4YH6
>>915
http://ideone.com/4rYEOX
C++。書き直した。けど例と食い違ってるんだが、なんかバグってる?
0933デフォルトの名無しさん2015/09/28(月) 02:19:12.61ID:7hkQ4YH6
あー、始まってっていうの忘れてた。
0934デフォルトの名無しさん2015/09/28(月) 02:27:54.45ID:7hkQ4YH6
>>915
http://ideone.com/RjJz09
C++。デバッグ完了!?あってるかな。
腹減った。
0935デフォルトの名無しさん2015/09/28(月) 02:51:52.43ID:etdYPLZ6
>>915
Ruby
http://ideone.com/KouUhu
適当に総当り
6桁くらいあると1秒じゃ終わらないかも
0936デフォルトの名無しさん2015/09/28(月) 03:05:01.50ID:etdYPLZ6
>>915,935
なんで関数でreturnしないでputsしてたんだろ
というわけでちょっと修正
http://ideone.com/kRP231
0937デフォルトの名無しさん2015/09/28(月) 03:15:11.76ID:g87qhbj3
>>915 Emacs Lisp

(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:kAFkU9e5
>>915 Python3
def 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:ZDExReCM
>>915
O(n*m)ぐらいまで抑えてみた

C++
http://ideone.com/LzQwEM
0940デフォルトの名無しさん2015/09/28(月) 15:28:26.19ID:etdYPLZ6
>>915
Ruby
http://ideone.com/bO8m4R
たぶん1万桁程度は通るようになったと思う
アルゴリズムは>>938と大体同じかな
Pythonわからないけど
0941デフォルトの名無しさん2015/09/28(月) 15:52:38.55ID:/qYU1fFl
n=22の時も、重複ありなら222、無しなら22122
0942デフォルトの名無しさん2015/09/28(月) 16:16:50.63ID:gXusLmLr
>>915 Squeak/Pharo Smalltalk

| 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:EgikiZYG
ruby2.0で。

def 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:A92rPhFQ
>>915 c
https://ideone.com/JPCnqK
0946デフォルトの名無しさん2015/09/29(火) 03:18:10.11ID:7mTyt6Kl
お題: 3の倍数の時だけ文字化けするプログラム
例
12@45'78!
0947デフォルトの名無しさん2015/09/29(火) 07:21:16.85ID:tl3iioqy
>>944
4,5,7,8の結果、おかしくない?
0948デフォルトの名無しさん2015/09/29(火) 11:00:25.50ID:C4Ll/6Vj
>>946 Java
http://ideone.com/kwaKpn
0949デフォルトの名無しさん2015/09/29(火) 15:12:35.50ID:ux+ZVrLF
文字化けって表現がおかしくね
バイナリにでもせいっちゅうことか
0950デフォルトの名無しさん2015/09/29(火) 21:06:02.44ID:WN6iGBpO
>>946 ruby
https://ideone.com/8O6FAh
09517802015/09/29(火) 21:14:29.38ID:0gMRYR9e
>>946 Perl

@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
09527802015/10/01(木) 00:33:57.03ID:O5jmaqNC
>>951 こう書いた方がカッチョエエか

@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:smVvYCyu
お題:以下を出力
1
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:wmMPPcd6
>>953 Common Lisp
http://ideone.com/eVcrlw
0955デフォルトの名無しさん2015/10/02(金) 17:22:43.77ID:6E18S5dP
BrainFuckでもない限り
Cで
puts("1\n12\n123\n1234\n12345\n...\n123456789abcdef\n23456789abcdef\n...\nf");
としてるのと大差が無い件
0956デフォルトの名無しさん2015/10/02(金) 18:03:15.17ID:T4kk9zpR
難し過ぎるのも困るけど簡単過ぎるのもやる気出ないな
0957デフォルトの名無しさん2015/10/02(金) 19:03:14.73ID:PPYCDrIp
>>953
@Mathematica

http://ideone.com/dE3mCI
0958デフォルトの名無しさん2015/10/02(金) 19:12:34.24ID:gloLINxL
>>953 c
#include <stdio.h>
int main() {
int i;
for (i = 1; i <= 29; i++) printf("%.*s\n", i, "123456789abcdef" + i / 15 * (i % 15));
return 0;
}
09599532015/10/02(金) 19:42:21.54ID:smVvYCyu
じゃあ"123456789abcdef"を含む文字列(あるいはそれに準ずるもの)使用禁止で
0960デフォルトの名無しさん2015/10/02(金) 21:17:28.97ID:T1FCG5fN
>>959
なぜそうしたのか意図を聞かせてください。
09619152015/10/02(金) 22:59:09.46ID:Q80sWlwu
>>953 J
smoutput &amp;> (<\ , <\.) '123456789abcdef'
0962デフォルトの名無しさん2015/10/02(金) 23:16:51.40ID:uIXobxf8
#include <stdio.h>
int 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;
}
09639532015/10/02(金) 23:19:10.41ID:smVvYCyu
>>960
数学的なアルゴリズムが出てくると思った
0964デフォルトの名無しさん2015/10/03(土) 07:30:34.93ID:hNGF9zPI
>>953
http://ideone.com/TfVc5O

++++++++++>>+++++++++[>[>>]>++++++++[<++++++++>-]<[-<<]>-]++++++[>[>>]+++>++++++
++++[<++++++++++>-]<[-<<]>-]>>+<<++++++++++++++[>>[<.>>>]+<[<<]<.>>-]>[.>>]>>+++
+++++++.<<++++++++++++++[<[<<]>>->>[<.>>]>.<<-]

>>955
やれと言われた気がした
09657802015/10/03(土) 12:42:39.38ID:PLl1Mwjm
>>953 Perl

use feature qw{:5.16};
say for sub {
 @_ ? do{
  my @r = __SUB__->(@_[0..$#_-1]);
  say @_;
  (join('', @_), @r)
 } : () }->(1..9,a..f);

>>963
数学的アルゴリズムではないけkど、/とか%のマジック演算に依らずに、
再帰的構造をトラバースする形で作ってみた、まぁ遊びだね。

もうちょっとコンパクト&エレガントに書けたら良いだけれどもねェ…
09669152015/10/03(土) 12:52:59.16ID:2lM26vpR
お題:n人で総当り戦をする時の対戦表をつくる
09677802015/10/03(土) 13:01:08.17ID:PLl1Mwjm
>>965 ごめんこれ間違っていた、下半分の三角形に求めれれているものとは違うものを出力させてた orz
$ 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:3fp7KwDH
>>915 C
http://ideone.com/zsR3L1
>>946 C
http://ideone.com/1K3cAO
>>953 C
http://ideone.com/OXcriy
0969デフォルトの名無しさん2015/10/03(土) 19:11:54.87ID:3fp7KwDH
>>964
目が回りそうなので、試しにCに自動翻訳してみた
http://ideone.com/nxAO5S
でも難解であることには変わりなかった><
このソースを実行した結果 http://ideone.com/OfeS04
0970デフォルトの名無しさん2015/10/03(土) 20:56:29.61ID:g/NsU62v
>>969
規模は小さいけどまごうことなきトランスコーダじゃないですか。
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:c3LOhcpj
データ作成がうまくいかない人は以下のデータを使ってみてください
S=さ 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
>>971
その数字間違ってるじゃないか
× 1234567899012345678
○ 123456789012345678
0974デフォルトの名無しさん2015/10/04(日) 14:34:50.93ID:+0+r9MqJ
秀逸なお題乙
BrainF*ck好きな人は
ぜひBrainF*ckでよろw
0975デフォルトの名無しさん2015/10/04(日) 14:37:26.23ID:BoLyeOLz
>>971 Haskell
あんまりかっこ良くない...
http://ideone.com/qac402
0976デフォルトの名無しさん2015/10/04(日) 15:15:48.06ID:c3LOhcpj
>>973
ご指摘ありがとです
その通りです><
123456789012345678 でお願いします
0977デフォルトの名無しさん2015/10/04(日) 15:17:55.57ID:BoLyeOLz
>>971 Haskell
こっちのほうがいいかな?
http://ideone.com/VsUVyc
0978デフォルトの名無しさん2015/10/04(日) 19:30:38.58ID:qykP8ViT
>>953
Ruby

a=0
1.upto(29){|i|puts (a=a*36+i).to_s(36)[i/15*i%15,15-(15-i).abs]}
09799152015/10/04(日) 21:00:25.91ID:aEDkzaSr
>>953 IO
for(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:Efh3UhbF
>>971 Python3
http://ideone.com/Rq8ESt
正規表現の後読みアサーションでSKRSKをマッチさせる
0981デフォルトの名無しさん2015/10/05(月) 17:16:55.10ID:V+1Y1wpi
>>971 J
f =: 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+1
>>966 J
f =: 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:hl62C8iM
>>966 C++
http://ideone.com/rgH8r5
総当たりの対戦表ということでマス目の表を想像して
手を付けてなかったけどリストで良いなら
0984デフォルトの名無しさん2015/10/06(火) 21:57:54.61ID:U0RhR/1j
>>971 brainfuck
http://ideone.com/FX6KmQ

>>974
これで勘弁してくださあああああああああああああ
0985デフォルトの名無しさん2015/10/06(火) 22:09:39.74ID:fHPawY3t
>>984
gj.
涙なしでは見れんなぁ。発狂するぞ。
0986デフォルトの名無しさん2015/10/06(火) 22:10:44.24ID:YetVXLTi
>>984
あんたのこと尊敬する
0987デフォルトの名無しさん2015/10/06(火) 22:22:47.44ID:sJPwA8RM
最近は実用性が無いお題が多いわね。
もう少し実用性が有って役に立つお題を考えなさいよ。
0988デフォルトの名無しさん2015/10/06(火) 22:26:58.55ID:U0RhR/1j
過去のお題で実用性があるお題ってたとえばどんなんだ?
0989デフォルトの名無しさん2015/10/06(火) 22:35:33.99ID:sJPwA8RM
>>988
ただの数字を羅列するだけのお題なんてつまらないわよ。あんたもう少し気の利いたお題考えなさいよ。いいわね。
0990デフォルトの名無しさん2015/10/06(火) 22:59:37.19ID:YetVXLTi
>>971 Go
http://ideone.com/yAXRHN
0991デフォルトの名無しさん2015/10/07(水) 04:10:18.62ID:/LBHrMRL
もうBrainF*ck以外禁止って
感じになったなw
0992デフォルトの名無しさん2015/10/07(水) 04:19:36.01ID:fAxGwSAE
え?
0993デフォルトの名無しさん2015/10/07(水) 06:43:14.97ID:J7P6wmmU
>>971 OCaml
http://ideone.com/tpJimX
パターンマッチングが頑張る
0994デフォルトの名無しさん2015/10/07(水) 11:50:52.46ID:04crvgdq
>>989
ツンデレ
0995朗報2015/10/07(水) 12:50:46.74ID:/LBHrMRL
[[[[[[>>>><<<<<>.>>]
とかは
6[ 4>4<>.2>]
と書いてもいいことにすれば
BrainF*ckでももっと大きなプログラム
が上げられるYo
0996デフォルトの名無しさん2015/10/07(水) 18:57:10.34ID:fAxGwSAE
独自拡張になっちゃうYo
0997デフォルトの名無しさん2015/10/07(水) 20:21:14.13ID:c4LYwtKo
次スレ
http://peace.2ch.net/test/read.cgi/tech/1444216746/l50
0998デフォルトの名無しさん2015/10/08(木) 03:46:12.12ID:UBdHSGOZ
埋めだYo
0999デフォルトの名無しさん2015/10/08(木) 07:59:04.22ID:1qyfWFZN
埋め
そして>>984に泣いた すごすぎ
1000デフォルトの名無しさん2015/10/08(木) 14:23:04.64ID:kaOucKBf
うめ
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
10021002Over 1000Thread
2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
http://premium.2ch.net/
レス数が1000を超えています。これ以上書き込みはできません。