プログラミングのお題スレ Part9 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
http://pc10.2ch.net/test/read.cgi/tech/1169413998/656 この問題 2つの1バイトのビットパターン b,w (b&w == 0) に対して r = base[b|w]+b (or base[b|w]+w) を重複なく定める配列 6668まで縮める配列を見つけたけどもっと縮める或は6561ぴったりにする配列はあるのだろうか int base[] = { 612,614,1681,1054,4528,3808,6078,2684,3278,3262,6349,336,5719,4410,6249, 700,1587,1584,5960,2284,4738,3352,6230,2412,4496,3514,5924,516,4770,3546,6636, 2876,4371,3096,6497,1952,5977,3880,5696,2668,6153,4268,5708,320,6235,3984,6182, 812,4354,4282,6549,1576,5713,3384,6541,2372,6029,4350,6425,1508,6155,4090,6605, 1760,3620,3496,5182,692,6058,3612,6094,1020,3694,3774,6317,580,4732,3480,6217, 716,6260,3740,5672,1416,6050,3768,6086,2180,6254,3674,6256,1288,6048,3898,6284, 2844,6522,2968,5680,1936,5711,3864,6142,1132,6093,3646,6313,564,6169,3936,6297, 1140,6510,4226,6489,2156,6508,3192,6514,2540,6025,4222,6413,1572,6027,4048,6380, 2716,4396,3266,5559,548,4690,3712,5628,980,5319,3246,5555,368,4540,3214,5567, 908,5380,3258,5800,1544,4876,3320,4938,972,5436,3486,5828,1512,4706,3290,5491, 2308,4693,3250,4755,1980,5833,3792,5791,1912,5285,4204,5281,1956,5769,3198,5265, 1888,4691,4218,5866,1960,5860,3728,5839,2348,5862,3450,5636,256,4428,4026,5201, 1696,4947,3500,5150,568,4969,3456,4961,556,4945,3642,4977,464,4636,3658,4993, 876,4955,3608,5640,1424,4682,3512,4906,2148,5410,3390,5376,1284,5404,3802,5459, 1252,4685,2952,5146,1908,5721,3472,5122,996,4701,4176,4949,448,4620,4188,5130, 732,4699,2944,5792,2064,5735,3200,4866,2468,5374,2940,4687,260,4426,2942,4427,0 }; 二つの2^8の形で表されている実質3^8の状態を一回の256要素の配列の参照と加算で 0から6561になるべく近いユニークな数に変換するその配列を求めるって問題 for (w = 0; w < 256; w++) { for (b = 0; b < 256; b++) { if ((b & w) == 0) { if (++a[base[b | w] + b] > 1) printf ("err\n"); } } } これをエラーが出ないように通す配列 景気付けにどうぞ お題:以下の数列を出力するプログラム [0, 10, 1110, 110, 2110, 122110, 11222110, 2122110, 1211222110, 11122122110,...] >>9 ・法則見つけた瞬間までがピーク ・実際書くと何一つスッキリ書けなくて悔しい https://ideone.com/n0RoNr ↓ [ >>9 ruby ・法則見つけた瞬間までがピーク ・実際書くと何一つスッキリ書けなくて悔しい https://ideone.com/n0RoNr ↓ ["0", "10", "1110", "110", "2110", "122110", "11222110", "2122110", "1211222110", "11122122110", "12211222110", "11222122110"] ・前項の数字の1の位から順に見てって、数字が連続する数を数えていく。 ・数字とその連続数を1の位から順に埋める ・3の数字は削除する お題: 文字列に含まれる複数のURLをHTMLのaタグで囲って出力してください。詳細な仕様はないです。 例: http://ideone.com/NY2ooA 例に出されたURLも不正だし >詳細な仕様はないです。 となると判別不能では >>9 Nim あまりに不細工だったので書き直し https://ideone.com/9q80v4 正規表現使うバージョン(ただしideoneは古すぎてコンパイルできない) https://ideone.com/01ktu2 ideone.comをフィルターしてるのかと思ったらURL全般だめっぽい >>9 Perl use feature qw{:5.16}; sub { $_ = join'', @_; exit if length > 12; say; @_ = (); while (/((.)\2*)$/) { $len = length($1); $len = '' if $len > 2; unshift @_, $len . $2; $_ = $` } goto __SUB__; }->(0); 無名関数の末尾再帰を使って記述してみました。 お題:C言語に関する質問に答えられる人工知能を作れ。 案1 Amazon Mechanical Turk を使う。 案2 知恵袋に投げて、回答を転記する。 案3 IBM Watson 使う。 入力音声を2chのスレに書き込む レスがあったら音声出力する 処理時間→数分〜数日 お題:ペントミノパズルの12種類のピースを表示する 瞬速年忘れ問題 2017は素数か?素数なら何番目か? ああ、2017ぐらいなら何の工夫もせず力技でごり押ししても大丈夫なのか。 そりゃそうだなw しかし俺は大みそかに何でこんなスレ覗いてるんだw >>31 Emacs Lisp (require 'cl-lib) (defun a (x) (cl-assert (and (integerp x) (> x 1))) (let ((l (let ((max-lisp-eval-depth most-positive-fixnum) (max-specpdl-size most-positive-fixnum)) (b (cl-loop for i from 2 to x collect i))))) (when (= (car (last l)) x) (length l)))) (defun b (l) (when l (cons (car l) (b (cl-remove-if (lambda (x) (= (% x (car l)) 0)) (cdr l)))))) (mapcar (lambda (x) (cons x (a x))) '(2 3 4 5 2017)) ((2 . 1) (3 . 2) (4) (5 . 3) (2017 . 306)) >>32 で9999991(664579番目の素数)を計算させたら 14.708sかかった >>34 では0.391s (Athron X2 1.8GHz) >>31 Squeak/Pharo Smalltalk (Integer primesUpTo: 2017+1) indexOf: 2017 "=> 306 " >>31 ruby2.0.0 require 'prime' def f9031(n) Prime.prime?(n) && Prime.each_with_index.find {|p, _| p == n} end p f9031(4), f9031(2), f9031(2017) ↓ false [2, 0] [2017, 305] >>31 Bash seq 2017 | factor | awk '{happy = $1;new=0}NF==2{year++;new=1} END{ print happy,new?year "th":"no","prime"}' お題:与えられたクレジットカードの番号が正しいかどうか判定するプログラム。 お題:個人情報(氏名、年齢、住所、電話番号)のダミーデータ(偽物のデータ)を大量に作成するプログラムを作れ。 >>42 wget -r -l 0 URL で適当なサイトから住所のデータを持ってきてシャッフルしダミーデータを生成 正しいかどうかはクレカ会社でないとわからない Luhnアルゴリズムの計算だけでいいならわりと楽だけど >>45 正論だね。じゃあルーンのアルゴリズムだけにしましょう。 >>44 住所と電話番号の関係についてもっとよく考えて下さい。 ダミーだから、実在する住所、通話可能な番号は許可しないんだよな? >>48 それはちょっと難しいだろう。実在するかどうやって確認するのかい? 住所や電話番号の一部を伏せ字にすれば迷惑が掛からないとは思うが。。。 ダミーデータの用途によるんだよね。データベースのテスト用とか、●●●●用とか。 ヒント:住所テキストデータの意味の定義は郵便局が行っている。 お題:□に自然数を入れて式を成立させる。^は、べき乗。 □^□+□^□=2017 1^X+2016^1=2017 という形の解が無数に存在する。 これに対する制限がなければ面白くない。 では□に入れるのを2以上の自然数に変更させてください >>57 C++ 自然数nがa^b (a>=2,b>=2)で表せるかどうか判定する関数(isFact)の キャストが糞だから誰かいい書き方教えてください… http://ideone.com/cB1Ncw >>57 http://ideone.com/uxu5Bl C++。頑張って最適化。これ以上はアルゴリズム変えないと大変。 >>57 Java http://ideone.com/hNhAMC >>63 の ArrayList<String>[] list = new ArrayList[n]; がすんげぇメモリの無駄に思えたので >>57 C++ Σ_i=1~m □^□ = nに拡張してみた http://ideone.com/KKHS6o >>66 12^3 + 17^2 = 2017 17^2 + 12^3 = 2017 AB入れ替わりのこれはあるのに 3^4 + 44^2 = 2017 9^2 + 44^2 = 2017 がないのはなんでなんだぜ? ループ2が43で十分ってことになってるからかな?? >>57 Squeak/Pharo Smalltalk | ans | ans := OrderedCollection new. (2 to: 2017 sqrt) asDigitsToPower: 4 do: [:digits | ((digits first: 2) raisedTo: (digits last: 2)) sum = 2017 ifTrue: [ans add: ('{1}^{3}+{2}^{4}' format: digits)] ]. ^ans asStringWithCr >>66 コメントアウトで書いた議論をそのままコードにすればいいのに、そんなにマジックナンバー埋め込んでどうすんだ 画面に並んでいるコントロールに左上から右下にタブ順を割り振るアルゴリズムってどう書きますか? 要するに矩形のソート方法です 綺麗に並んでるとは限りませんし重なっているものもあります 目で見た感覚的に正しくなるようにできますかね? >>72 (1) 重心の座標を求めて、 (2) Yでソート後Xでソート とか。 まあ「感覚的に正しい」なんて要件はこの手の問題じゃ曖昧以外の何でもないし どうやっても厳密な定義は無理だから、普通に左上座標で妥協してもいいんじゃないの >>72 要件が曖昧すぎる どこを左上として、どこを右下とするのかで結果が変わるだろうし、あなたの感覚とズレが生じることもありえる 円形や一直線に並んでいる場合どこを左上とするのか、 画面右上、左下、右下を結んだ三角形(凾フような形)に並んでいるとき、左上と呼べるようなコントロールが存在しないけど、どうするのか >>76 いや,逆にあいまいな要件のみ提示されていて,それに感覚的に適合する実装を示せ,というお題だろう 客は自分のしたいことを本当には知っていない >>77 こういう営業さんがいる会社は悲惨なことになるねw 冗談抜きで、IT業界の一部の労働環境が劣悪な理由はこういう安請け合いにある。 >>78 あいまいな要件に対して実装を提案することは問題ないだろう? 問題はその実装をちゃぶ台返しにされないようにすることだろう? 実装の提案ができないようだと仕事にならないのでは? >>79 甘いと思うよ。 それ、製品の完成後にこちらの提案が「やっぱり何か違う」ってちゃぶ台返しされるリスクを 考えてないでしょ。 まあスレ違いなんでこれ以上言わないけどさ。 これ業務じゃないんだし、自分だったらこう実装するっていうのを書いてけばええやん というかこの問題は順位付けに自明な定義がないところが肝です AIなどでもそうですけど最近は曖昧かつ感覚に矛盾しない答えを求められる事が増えてきています 左上と右下を結ぶ線が垂直軸となる座標系に変換して 上から順に拾っていくだけじゃないの? >>84 それだと(0, 80は(100, 0)より順番が若くなる気がするんだけどw >>85 何が言いたいのか分からないのでコメントしにくいけど 何かがおかしいとしたらあなたが考えた座標の変換が間違ってるんだろう >>86 自分で自分の言ってることが分かってないのかw A = (0, 80)、 B = (100, 0)とすると、お前さんが言ってる座標兼では AはBの「上」になる。 このぐらいのことそれを思いついた5秒後に分かれよほんと ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる