1 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 11:03:24 ] 最強のLL=軽量プログラム言語は、どれよ? エントリーは、Perl、PHP、Python、Ruby、JavaScript・・・ さあ、死ぬまで語りやがれ!!! ■LLとは? 軽量プログラミング言語(Lightweight Language,LL)とは、取り回しに優れ、 コードの作成や修正が容易と見なされるプログラミング言語のことを指す。 ここでいう「軽さ」はプログラマの負担の軽重を指し、 実行速度に優れているという意味ではない。 現在の水準では ・インタプリタ ・動的型 ・正規表現 ・関数オブジェクト などを利用できるものがLLと呼ばれることが多い。(Wikipediaより) ■過去スレ 【Perl,PHP】LLバトルロワイヤル6【Ruby,Python】 pc12.2ch.net/test/read.cgi/tech/1244166510/ 【Perl,PHP】LLバトルロワイヤル5【Ruby,Python】 pc12.2ch.net/test/read.cgi/tech/1238720336/ 【Perl,PHP】LLバトルロワイヤル4【Ruby,Python】 pc12.2ch.net/test/read.cgi/tech/1234635513/ 【Perl,PHP】LLバトルロワイヤル3【Ruby,Python】 pc11.2ch.net/test/read.cgi/tech/1215319832/ 【Perl,PHP】LLバトルロワイヤル2【Ruby,Python】 pc11.2ch.net/test/read.cgi/tech/1209289408/ 【Perl,PHP】LLバトルロワイヤル【Ruby,Python】 pc11.2ch.net/test/read.cgi/tech/1188997302/
40 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 08:13:40 ] だいたい、「遅延評価でおながい」って、何をおながいするんだ?
41 名前:デフォルトの名無しさん [2009/07/26(日) 08:40:47 ] 平方根はこんな感じ ↓ (labels ((nxt (x v) (/ (+ x (/ v x)) 2))) (defun sqp (n e) (do* ((x1 n x2) (x2 (nxt x1 n) (nxt x1 n)) (err (expt 10 (- 0 e)))) ((< (abs (- x1 x2)) err) (truncate (* (expt 10 e) x2)))))) > (sqp 2 100) 14142135623730950488016887242096980785696718753769480731766797379907324784621070388503875343276415727
42 名前:デフォルトの名無しさん [2009/07/26(日) 08:46:33 ] >>40 ハスケルでお願いっていう意味じゃないの?
43 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 08:51:30 ] >>39 では50番目から100番目まで。 というのはおいといて”マジで言葉通りに書ける”とあるから1−2番目を計算せずに いきなり3番目を取り出せるのだろうな。処理系内部では一所懸命計算やるだろうけど。 >>35 の説明で遅延評価をはじめて知ったんだけど処理系にバグを仕込むために考え出さ れた仕様ではないだろうか。
44 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 09:07:44 ] >>39 4っつだ ぼけ
45 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 09:08:40 ] 「4っつ」って珍しい書き方だな。
46 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 09:11:32 ] >>43 え、もしかして、なんか言質とってツッコミ入れて恥かかせたがってる? 「言葉通りに」というところを取り上げて何か言いたかったら、元の「言葉」を正しく読み取らなきゃダメよ。
47 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 09:26:02 ] よく2chの情報はいい加減とか、正しくない情報が多いとか言われるけど、 僕にとっては大事な情報源です。 たまにはボロクソ言われることもあるけど、みんな親切に教えてくれる。 いつもありがたいと思ってる。
48 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 09:29:47 ] >>46 そんな気はまったくない。>>35 には感謝してるよ。よそで”遅延評価というのはだな・・・” とか言ってみたいほうだから。元の「言葉」を正しく読み取ったらどえなるのだ。
49 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 09:38:28 ] うわ。アンカー間違えた>>34 だ。最後”どえなるのだ” じゃねえ ”どうなるのだ” だった。
50 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 10:09:38 ] tail $ take 10 $ filter func [1..] とかそんな感じのことじゃねーの?
51 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 10:31:33 ] >>48 > 元の「言葉」を正しく読み取ったらどえなるのだ。 「(1〜∞)の中から、条件に合致する値を抽出し、さらのその2番目から10番目を抽出する」 これが元の言葉だよね。 「”マジで言葉通りに書ける”とあるから1−2番目を計算せずに」って、それは元の言葉にある 「条件に合致する値を抽出」する途中の段階を、そっと見て見ぬフリしてない?
52 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 10:56:53 ] 遅延評価って、例えば現在の時間を内部でパラメータとして使うような関数だと、 いつ評価されるん?
53 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 11:00:43 ] 現在時間を使うなら「時間を得る」部分だけはその時点で評価されて それ以外の処理は後回しじゃね?
54 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 11:06:17 ] >>51 見て見ぬフリはしてない。「条件に合致する値を抽出」するところは処理系が 3番目が必要になったときに1−3番目を計算して3番目を返すと解釈している。 だからプログラマはいきなり3番目を取り出せると想像したんだけどこれで 合ってるんじゃないか。
55 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 11:09:07 ] 遅延評価と、クロージャとかカリー化を統一できそうだな。
56 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 11:38:45 ] >>52 Haskell では IO モナドでそのへんをうまくやってる
57 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 17:48:30 ] とんだすれ違いスレだな
58 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 18:52:22 ] すれちがい通信か
59 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 19:52:52 ] >>16 を>>26 のアルゴリズムで書いてみたわ。 泥臭い方法だけど、桁が増えても計算量が線形増加だからいいかも。 30行くらいだけどソースいる?
60 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 21:05:47 ] plz
61 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 21:06:28 ] 2/2 www.youtube.com/watch?v=nVDq-s3r5Ys 1/2 www.youtube.com/watch?v=9UU4Hx76Zg0
62 名前:59 mailto:sage [2009/07/26(日) 21:16:15 ] def kaihei(n, k): stack = [] keta = 1 while n >= 100: stack.append(n % 100) n = int(n / 100) keta = keta + 1 else: stack.append(n) dlist = list(range(10)) dlist.reverse() baikon = 0 rem = 0 result = "" while (keta > 0 or (keta <= 0 and -keta <= k)): if keta == 0: result += "." keta = keta - 1 if(len(stack) > 0): rem = rem + stack.pop() for i in dlist: if(rem >= i * (baikon + i)): result += str(i) rem = (rem - i * (baikon + i)) * 100 baikon = baikon * 10 + i * 20 keta = keta - 1 break print(result)
63 名前:59 mailto:sage [2009/07/26(日) 21:24:32 ] >>> kaihei(2, 100) 1.4142135623730950488016887242096980785696718753769480731766797379907324784621070388503875343276415727 ちなみに、整数しか対応してない。 一部の名前が、開平とか桁とか倍根とかそのままローマ字になってるけど、そのあたりは勘弁してくれ。 かわりに桁合わせをちゃんとしたから。
64 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 23:32:27 ] クスクス
65 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 23:35:23 ] >>43 横レスだが drop 49 $ take 100 $ filter (\x -> (foldr ((+) . product . enumFromTo 1 . read . (flip (:) [])) 0 . show) x == x) [1..] 直感的に書くとこんな感じかな? 49と100の部分を変えればどうとでも書けるよ。
66 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 07:40:37 ] >>65 サンクス! haskell知らないから間違っているかもしれないが49までの計算結果を捨てる のを明示しなきゃいけないということですね。 >>34 を読んだら 2..10 という感じで書けると思っていた。
67 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 08:51:59 ] >>62-63 GJ!!!
68 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 11:28:26 ] memo ttp://www.youtube.com/watch?v=xJ93ESdCJgI
69 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 12:08:35 ] >>66 そうですね。 でもたとえば「それが50番目である」ことを示すには前の49個の計算が 必要なわけで、それを省略することは遅延評価といえどできない。 遅延評価なのは100以降を計算しないこと。 自分で2,10を引数にとる関数を作ればもちろん2..10みたいに書けるよ。
70 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 15:02:19 ] PHPで無料レンタル鯖のいいとこ&有名なとこあります?
71 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 15:12:24 ] 俺んち
72 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 15:25:28 ] 養殖ならノルウェー辺りが有名だな
73 名前:デフォルトの名無しさん [2009/07/27(月) 23:44:17 ] www.atmarkit.co.jp/news/200907/24/ruby01.jpg なにポーズつけてるんだよ(w
74 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 23:50:13 ] It has already been out.
75 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 01:14:48 ] 「ポーズとってください」って言われたんだろうなw 『まつもとゆきひろ コードの世界』でも「私だって恥ずかしい」とか書いてた
76 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 03:13:45 ] その記事おもしろかったねー。いろんな話が凝縮されてて。
77 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 05:55:15 ] プログラマーって見栄え悪いのばっかだな。
78 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 06:00:38 ] 見栄えで稼ぐ商売以外は似たり寄ったりだよ。
79 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 12:14:20 ] >77 運動不足が職業病だからな。
80 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 12:46:29 ] まっつんはちょっと痩せればそれなりにダンディになるとは思うが。
81 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 13:31:14 ] 全員、顎髭を伸ばせば、かっこがつくよ。
82 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 13:50:10 ] They should be skin head.
83 名前:デフォルトの名無しさん [2009/07/29(水) 19:12:58 ] Python 3.1からifとかforとかけっこう変わるんだね。 修正がめんどい orz
84 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 20:59:40 ] coreblog.org/ats/statements-to-expressions-python-31 このエープリルフールを真に受けちゃった人ですか
85 名前:83 [2009/07/30(木) 01:26:38 ] >>84 変わらないの?良かったぁ (;´Д`)
86 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 01:31:23 ] しかし、3がリリースされた直後に3.1を四月馬鹿ネタにするってのもなんかセンスが微妙だな Python 4とかなら微笑ましいんだが。 Pythonってそんなにバージョンアップしないもんなの? Perl6がリリースされた後でPerl 6.2の話題とか、多分普通に信じるぞ。
87 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 03:32:19 ] Pythonのメジャーバージョンは1、2、3、3.1、3.11、3.12、3.13、3.14、3.141と増えていくからな
88 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 03:34:48 ] クヌース先生の美学だよなあ……
89 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 13:13:54 ] >>87 最近の小学生は3と聞いたけど
90 名前:デフォルトの名無しさん [2009/07/30(木) 13:39:23 ] >>89 それ聞きまちがい
91 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 15:00:19 ] ttp://ja.wikipedia.org/wiki/円周率は3
92 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 00:01:38 ] エイプリルフールネタを一見それとはわからない状態で いつまでもWeb上に残しておくなんて、はっきり言って悪だろ。 それでwebなんちゃらなんて会社の代取とか笑えねーって。
93 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 00:39:36 ] 日付みればわかるだろ。アホか
94 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 01:03:21 ] 実際、真に受けてるやつがいるだろ。アホか
95 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 01:08:02 ] ひとりのアホの面倒をみるためにみんなが犠牲にならなければならないのかよ
96 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 08:58:40 ] >>95 犠牲て。 ネットにデマを流すときはそれなりの 配慮があってしかるべき。jk
97 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 11:54:13 ] 4/1のエントリって時点で、それなりの配慮はしてるわな。
98 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 18:47:55 ] 4/1に書かれた記事は全て疑わないといけないのかよ
99 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 19:00:29 ] とうぜんだろ
100 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 21:20:58 ] どっかのバカがやってるならともかく、 プロフィールにそれなりの肩書き書いておいて あんな感じじゃ、いろいろ神経疑われるわなw
101 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 22:03:28 ] Pythonian: モンティパイソン精神なのでそんなの余裕で笑ってスルー Rubist: エープリルフールネタなんだからあーたらこーたら Perler: ネタを見逃して話題に乗れない
102 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 22:13:16 ] >>101 あ、それいいえてミョー
103 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 23:20:35 ] >>101 いや、きっとdankogaiなら、 dankogaiならネタを見逃すはずがない。
104 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 23:34:11 ] >>103 断固GUYって誰?
105 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 23:34:33 ] LLTVまで残り1ヶ月を切りました。 盛り上がって参りましょう!
106 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 06:20:40 ] すみません。 ところで僕は中学生のころ、いじめられっこでした。 一番ひどくいじめられた放課後、先生が見るに見かねてとめてくれて 家の帰りもずっといっしょでした。そのとき、川原で先生と一休みしたんですが 先生がこんなことをいっていました。 「人間ってのはひどいもんだ。 こんな鼻くそより汚い。」 私はいまだに鼻くそより汚いという比喩がうまく理解できませんが、 そんな比喩にまで使われた鼻くそをいまだに食べています。私はRubyプログラマーです。
107 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 15:45:52 ] そのコピペなんかいみあんの?
108 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 18:49:14 ] 例えばこれを実行すると結果が何になるか、すぐにわかる? @int i=0;if(i=1){puts("1");}else{puts("2");} Aint j=0;for(;j>0;++j){}
109 名前:デフォルトの名無しさん [2009/08/02(日) 02:02:48 ] 分かるよ。 1,1 が表示される。 2,for文は実行されない。
110 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 07:04:04 ] 俺は後者はとっさに判らないな 単項++演算子の戻り値はアテにすべきじゃないと思ってる 自分じゃそういうコードは書きたくないね
111 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 07:06:57 ] 単項++の戻り値は使われていないわけだが…
112 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 07:13:43 ] ごめんなさい間違えました
113 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 07:15:59 ] i=1が(文脈によっても)何を返すかは、言語によってブレがあるな。
114 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 08:16:52 ] BASIC系は文脈で比較か代入かが決まることが多いね 本家はLET省略不可だからLET文以外代入だけど Javaは代入文自体の戻り値はCと変わらんが if文がbooleanしか受け付けないからエラーだな
115 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 12:42:53 ] >>107 底辺Rubyプログラマーってことだろ
116 名前:デフォルトの名無しさん [2009/08/03(月) 09:39:57 ] 所謂覆面算で 英字一文字がそれぞれ異なる一桁の数字(0-9)で表されるとき one + nine + twenty + fifty = eighty となる組み合わせを検索してください 各行の先頭の文字は0以外です
117 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 11:52:03 ] それって正解は「そんな組み合わせは無い」で合ってる?
118 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 11:55:11 ] pythonスレで答え出てなかったっけ?
119 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 12:26:48 ] ごめんあった、何故かone+nine+twenty+fifty+eighty=eightyで計算してた俺の馬鹿〜 selects([], _). selects([X|XL],YL) :- select(X,YL,L), selects(XL,L). check(O,N,E,I,T,W,Y,F,G,H,ONE,NINE,TWENTY,FIFTY,EIGHTY) :- ONE is O * 100 + N * 10 + E, NINE is N * 1000 + I * 100 + N * 10 + E, TWENTY is T * 100000 + W * 10000 + E * 1000 + N * 100 + T * 10 + Y, FIFTY is F * 10000 + I * 1000 + F * 100 + T * 10 + Y, EIGHTY is E * 100000 + I * 10000 + G * 1000 + H * 100 + T * 10 + Y, ONE >= 100, NINE >= 1000, TWENTY >= 100000, FIFTY >= 10000, EIGHTY >= 100000, EIGHTY =:= ONE + NINE + TWENTY + FIFTY. solve(ONE,NINE,TWENTY,FIFTY,EIGHTY) :- selects([O,N,E,I,T,W,Y,F,G,H],[0,1,2,3,4,5,6,7,8,9]), check(O,N,E,I,T,W,Y,F,G,H,ONE,NINE,TWENTY,FIFTY,EIGHTY). ?- solve(ONE,NINE,TWENTY,FIFTY,EIGHTY). ONE = 984, NINE = 8584, TWENTY = 364832, FIFTY = 75732, EIGHTY = 450132 ; false.
120 名前:デフォルトの名無しさん [2009/08/03(月) 13:24:34 ] prologだっけ?
121 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 14:54:47 ] Prologだよ 手続き書くのは面倒いが 覆面算とかはむしろこの言語の十八番だと思う
122 名前:デフォルトの名無しさん [2009/08/03(月) 15:29:28 ] >>121 おすすめのProlog実装を教えてください。 あとおすすめの教科書もあれば。
123 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 15:48:44 ] とりあえずはSWI-Prologで良いんじゃないかと 教科書は…Prologスレのテンプレに載ってるやつ片っ端読むのが良いんじゃない? 日本語で書かれてるやつだけ読んでもそれなりには解るかと ちなみに今回のコードは「Prolog 覆面算」でググって出てきた SEND+MORE=MONEYのコードを元にして改変したものだったりする 自分で書いたコードは遅すぎて話にならんかったw
124 名前:デフォルトの名無しさん [2009/08/03(月) 15:51:51 ] metafontとかでも解けそうな気がするな。 くりあがりの処理がミソかしら。
125 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 20:24:40 ] >>123 a+b+...+c=x の形になる任意の式を与えて 解いてもらうようにするにはどうすれば良いですか?
126 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 22:34:53 ] >119 みたく答えになりうる値を全部列挙するワケにはいかないだろうから モジュール使うほうが良いんじゃないかな ?- use_module(library('clp/bounds')). ?- 3 + X + 4 #= 19. X = 12. っていうか、Prologってこのスレで扱って良いものなのかな
127 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 07:35:13 ] >>123 さんくすです。swi-prologをインストールして勉強することにします。
128 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 15:00:08 ] >>126 他の言語よりも分かりやすく短く書けるのならそれはLL
129 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 15:04:26 ] この手の問題だと、論理型が得意だったって事
130 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 16:16:06 ] 読めないからよく解らんのだが、119のコードって他言語に直訳できないの?
131 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 16:20:03 ] アセンブリ
132 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 16:24:23 ] 119って式が変わったら毎回書き換えるしかないんかな
133 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 16:35:08 ] >>130 つ ttp://miko.org/~naruto/Artifact/MASKSQL.html
134 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 17:31:52 ] 汎用性は無いだろうね ただコード自体が式を列挙してるようなコード…つまり入力データみたいなコードだから Prolog的には下手なことするより最適な方法かも知れん
135 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 19:06:45 ] >>130 論理型言語を、そうでない言語に直訳 するのは基本的に無理。 論理型言語には、処理順序とかまったく ないし、根拠となる条件式に基づいて 解を求めることしかできない。
136 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 19:09:31 ] >>132 式を他の言語で解釈して、 ソースを機械生成すれば。
137 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 19:16:27 ] >>135 じゃあロンリー型言語は?
138 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 20:37:13 ] ロンリーロンリーロンリーロリー
139 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 20:51:06 ] TOMOちゃんじゃないか!
140 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 23:09:17 ] どっちにしろマシン語になるんだから、無理なわけないだろ。