[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 11/28 03:01 / Filesize : 280 KB / Number-of Response : 1039
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2016/12/01(木) 16:58:30.97 ID:gTkHDluD.net]
プログラミングのお題スレです。

前スレ
プログラミングのお題スレ Part8©2ch.net
echo.2ch.net/test/read.cgi/tech/1444216746/

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

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

【ソースコードが長くなったら】 (オンラインでコードを実行できる)
ideone.com/
codepad.org/
compileonline.com/
rextester.com/runcode
runnable.com/
code.hackerearth.com/
melpon.org/wandbox
https://paiza.io/

宿題は宿題スレがあるのでそちらへ。

367 名前: ◆QZaw55cn4c mailto:sage [2017/07/11(火) 16:35:18.57 ID:ZfeFayuI.net]
>>358
ん、考え直した
10進に変換した結果にて 99999 とかが末尾にあるようでは、余分の計算はしないと

368 名前:いけないね []
[ここ壊れてます]

369 名前:デフォルトの名無しさん mailto:sage [2017/07/11(火) 18:55:08.87 ID:dSS1j36W.net]
[][Tebla][]

}

000-"Yob*RtStrike"[%Kil\]MO,fla>%$9999VLTS

001-GYORLith"0\R"/"ESUBA"%$%

HADO-"EM","L","O","NU"###END

370 名前:デフォルトの名無しさん mailto:sage [2017/07/14(金) 06:57:35.22 ID:PYQ8V1MO.net]
>>296
ideone.com/VzYVY9
C++。解けた気がする。
状態をメモ化してみた。
何で動いてるのか自分でもよくわからない。
暇だったので解いてみた。

371 名前:デフォルトの名無しさん mailto:sage [2017/07/14(金) 07:42:51.88 ID:PYQ8V1MO.net]
あー多倍長精度演算ほしー。もちろん標準で。

372 名前: ◆QZaw55cn4c mailto:sage [2017/07/14(金) 07:55:58.80 ID:TDGI45F0.net]
>>362
私も欲しかったので作ってしまった、今 >>334 を奮闘中

373 名前:デフォルトの名無しさん mailto:sage [2017/07/14(金) 07:56:52.78 ID:PYQ8V1MO.net]
>>363
それはすごいな。
後々破棄するようなものを作るモチベーションが出てこないよ。

374 名前:デフォルトの名無しさん mailto:sage [2017/07/14(金) 07:57:44.37 ID:TDGI45F0.net]
>>364
書き捨てに慣れてしまったんだ‥

375 名前:デフォルトの名無しさん mailto:sage [2017/07/14(金) 07:59:21.83 ID:PYQ8V1MO.net]
>>365
あはは・・・。
コード書き捨てるのは良いけど、道具書き捨てるのは俺には向いてないわ。
なので、標準待ち。



376 名前:デフォルトの名無しさん mailto:sage [2017/07/14(金) 09:33:33.04 ID:gEZu1299.net]
boostという任意倍長の計算Libraryがあります。
C++では使えるそうです。

377 名前:デフォルトの名無しさん mailto:sage [2017/07/14(金) 09:38:45.73 ID:PYQ8V1MO.net]
>>367
Boostも良いんだけどね。残念なことにあれは実験環境で準標準って扱いなんだよなぁ。
あれから取り入れられるライブラリも多いんだけど、標準じゃないからね。
残念なことに。

378 名前:デフォルトの名無しさん mailto:sage [2017/07/14(金) 12:49:16.12 ID:gnKUWanp.net]
まあ標準ライブラリしか使わない縛りをしたければ好きにすればいいんじゃない?

379 名前:デフォルトの名無しさん mailto:sage [2017/07/14(金) 14:27:07.19 ID:JyiCltLg.net]
車輪の再発明

380 名前:デフォルトの名無しさん mailto:sage [2017/07/14(金) 14:31:43.15 ID:DwybRUfK.net]
競プロみたいな相手方の環境使う物だと標準と準標準の差はでかい
自分の環境なら導入すればいいだけだが

381 名前: ◆QZaw55cn4c mailto:sage [2017/07/14(金) 18:52:31.62 ID:TDGI45F0.net]
>>370
個体発生は系統発生を繰り返す

382 名前:デフォルトの名無しさん mailto:sage [2017/07/15(土) 12:42:06.98 ID:odVkuNfb.net]
>>361
厳密解を出しているのなら、チャレンジ
(わかって近似値解狙いなら気にしないで)

"14432" と "887654329"

両方とも既出の"貪欲つぶし"(?)数列

"14432"は 20秒 (ゼロインデック順で02341)
"887654329"は 80秒(同123456708)でいける。

383 名前:デフォルトの名無しさん mailto:sage [2017/07/15(土) 14:59:21.20 ID:OEoVgGO0.net]
>>373
ideone.com/cBzPSj
C++。それ解くとほかの問題が解けなくなる。
厳密解のつもりだったが、ちょっと自分の領分超えてるなぁ。
うまくいかないものだ。
真実が奥の方にあると貪欲法は弱いな。Orz

384 名前:デフォルトの名無しさん [2017/07/16(日) 16:33:07.01 ID:8ZBD9z9c.net]
お題:
自分用多倍長整数演算関数

…って思ったけど、処理系の標準ではないとか、仕事でGNU MP使っては駄目とかの
制約で、簡易的なもの(乗算くらいまでとか)を書いた事ある人は少なくないと見た。

385 名前:デフォルトの名無しさん mailto:sage [2017/07/16(日) 18:30:49.57 ID:8+Akms5T.net]
多倍長整数演算がサポートされている言語を使う

終わり



386 名前: ◆QZaw55cn4c mailto:sage [2017/07/16(日) 18:54:09.85 ID:eA1jggM5.net]
>>375
C++98 codepad.org/hUObVCsR
オートボクシング等はなく便利にはできていない.

387 名前:デフォルトの名無しさん [2017/07/16(日) 2 ]
[ここ壊れてます]

388 名前:0:34:05.63 ID:yctBkD01.net mailto: 掛け算の実装がキモだろう。
ここがボトルネックになるはず。
ここができると円周率とか、ルート計算も高速化できるはず。
[]
[ここ壊れてます]

389 名前: ◆QZaw55cn4c mailto:sage [2017/07/16(日) 20:36:24.09 ID:eA1jggM5.net]
>>378
うん,FFTを使うそうだが‥いまいちよくわからない

390 名前:375 mailto:sage [2017/07/16(日) 20:41:46.81 ID:8ZBD9z9c.net]
>>376
仕事で言語を選べる立場になってみたいものだわ。
この言語でやってってののは多々あるけど…orz

>>377
Karatsuba-Ofman法を目指してごーごー

391 名前:デフォルトの名無しさん mailto:sage [2017/07/17(月) 22:48:25.95 ID:5edeqhg+.net]
>>296
手計算で計算出来るレベルにまで計算量を減らせた
もちろん数学的な裏付け付きで
ある条件を見たせば一瞬で求まる

"123456789123456789" > 98秒
残念ながら、これだけはその条件を満たしてない

392 名前:デフォルトの名無しさん mailto:sage [2017/07/18(火) 06:37:17.84 ID:nFCFlf58.net]
>>381
22とか2323もその条件を満たしてない感じ?

393 名前:デフォルトの名無しさん mailto:sage [2017/07/18(火) 07:37:05.09 ID:Ew0RSScO.net]
22 は微妙
2323 は大丈夫

394 名前:デフォルトの名無しさん mailto:sage [2017/07/18(火) 07:41:44.22 ID:Ew0RSScO.net]
まだコードになってないんで、
コードになったらアップします

寿司を食べる時間 < レーンの回転周期
という前提をつけちゃおうと思ったけど、
つけない方が良さそうですね

寿司を食べる時間がレーンの回転周期の整数倍の寿司は
ちょっと特別な処理が必要

395 名前:デフォルトの名無しさん mailto:sage [2017/07/18(火) 08:01:32.43 ID:Ew0RSScO.net]
整数倍の寿司が無いもので
条件に当てはまらない最小は
2222
かな



396 名前:デフォルトの名無しさん mailto:sage [2017/07/18(火) 08:49:51.93 ID:YLlwVFMJ.net]
>>334 SageMath
ttps://sagecell.sagemath.org/?q=brdclf

普通に(?)多桁のisqrt()なので何の捻りも無し。

397 名前:386 mailto:sage [2017/07/18(火) 09:39:56.20 ID:YLlwVFMJ.net]
>>339
つ mpz_sqrt()

398 名前:デフォルトの名無しさん mailto:sage [2017/07/19(水) 18:12:29.37 ID:Np9hKHT2.net]
>>296
>>373
ideone.com/B9vl8l
C++。結局、i7-6700のmem2G使って7分で解けた。
どうしようもない位遅いな。
でも一応題意には添えたと思う。
もう見たくない・・・。Orz

高速化するにはインラインアセンブリ使うか、スレッド分割できるようなアルゴリズムかんがえるか。
よくわからんけど、数学で頑張ってる人に期待だ。

399 名前:386 mailto:sage [2017/07/20(木) 01:57:16.81 ID:Q7XnESC/.net]
100のべき乗に変更
ttp://sagecell.sagemath.org/?q=mciykc

400 名前:デフォルトの名無しさん mailto:sage [2017/07/21(金) 15:21:18.13.net]
>>296
ideone.com/mXPglY
C++。試しに再起化してみたら処理速度倍になった。
自分の環境では3分ちょいで解ける。
相変わらずメモリ馬鹿食いするけど。
もう俺には無理。

俺の中では終了でーす。Orz

401 名前:デフォルトの名無しさん mailto:sage [2017/07/22(土) 08:54:36.28 ID:OQXA8cUK.net]
>>388
数学で頑張ってる人だけど、
もうちょっとまって

>>296の問題だけなら簡単だけど、
まだ全体を解明できてない

というか、忙しくて>>381から進んでない

402 名前:デフォルトの名無しさん mailto:sage [2017/07/22(土) 08:55:28.19 ID:OQXA8cUK.net]
このスレが無くならないうちに解明します

403 名前:デフォルトの名無しさん mailto:sage [2017/07/22(土) 10:43:30.03 ID:apsnR2Z0.net]
>>391
wktkデス!
コード見るのが好きなのでぜひ完走していただけたらと思います。

404 名前:デフォルトの名無しさん mailto:sage [2017/07/23(日) 11:26:56.94 ID:ipiEUPYV.net]
>>375
のほかの実装はでてこないねぇ‥

405 名前:デフォルトの名無しさん mailto:sage [2017/07/23(日) 12:53:55.68 ID:7fREas1L.net]
>>394
使えるコードにするためには、規模がでかくなりすぎるから



406 名前:デフォルトの名無しさん mailto:sage [2017/07/23(日) 14:15:20.13 ID:ipiEUPYV.net]
C/C++ で最長1000行ぐらいとみて、2日ぐらいあれば、とりあ

407 名前:ヲず動く
土日で仕上がってくるんじゃないかと期待してたんだが
[]
[ここ壊れてます]

408 名前:デフォルトの名無しさん mailto:sage [2017/07/23(日) 14:18:11.58 ID:7fREas1L.net]
速度が考えられてないコードなんて実用にはならないよ

409 名前:デフォルトの名無しさん mailto:sage [2017/07/23(日) 14:21:31.79 ID:7fREas1L.net]
ていうか、
コードに対する条件とか
サポートする機能とか
条件が無さすぎる

410 名前:デフォルトの名無しさん mailto:sage [2017/07/23(日) 14:24:57.75 ID:ipiEUPYV.net]
速度‥か‥

どうしてもローテートとかキャリーフラグとかを使いたいから、これはアセンブラの領域になるね
よくみかけるアセンブラ中毒者が今頃爪を研いでいるのだろうか?

411 名前:デフォルトの名無しさん mailto:sage [2017/07/23(日) 14:25:42.29 ID:ipiEUPYV.net]
>>398
そこは「自分用」だから自由に決めていいんでないかい?

412 名前:デフォルトの名無しさん [2017/07/23(日) 14:49:34.77 ID:TcY6qE9r.net]
>>394

当日に >>305>>390 より10倍以上早いのがでているだろう。
しかも 計算量まで書いてある

413 名前:デフォルトの名無しさん mailto:sage [2017/07/23(日) 14:53:19.94 ID:ipiEUPYV.net]
>>401
お題が違うのでは?

414 名前:デフォルトの名無しさん [2017/07/23(日) 15:05:28.62 ID:TcY6qE9r.net]
>>402 >>394
確かに違った、すいません。

c++多倍長なら、karatsubaにも対応して300行くらいの以下をパクって使うのも一案

sites.google.com/site/indy256/algo_cpp/bigint

415 名前:デフォルトの名無しさん mailto:sage [2017/07/23(日) 15:09:21.91 ID:ipiEUPYV.net]
>>403
base 10進ならば、表示(operator<<) が楽でいいね、なるほど、それは思いつかなかった



416 名前:デフォルトの名無しさん mailto:sage [2017/07/23(日) 16:51:44.88 ID:7fREas1L.net]
>>399
通常、
処理時間のほとんどが乗算
乗算のほとんどがFFT
アセンブラの出番は当分先

417 名前:デフォルトの名無しさん mailto:sage [2017/07/23(日) 16:52:43.21 ID:7fREas1L.net]
FFTのライブラリをどこからか持ってくるのでもいいけど、
それなら素直に多倍長ライブラリを持ってくれば
ってことになる

418 名前:デフォルトの名無しさん mailto:sage [2017/07/23(日) 16:54:07.19 ID:7fREas1L.net]
今は浮動小数点演算が速いので、
カラツバの出番はあまりない

419 名前:デフォルトの名無しさん mailto:sage [2017/07/23(日) 18:50:17.74 ID:5CSy1R8t.net]
基数を10のべき乗にするとか(printf()的なものが簡単だから)、乗算はunsigned shortやintとの
乗算に限るとか、除算無しとかいうのは…

プログラムの本体に組み込まれてしまって、再利用可能なライブラリの形で括りだされてる事の
方が少ないかw

420 名前:デフォルトの名無しさん mailto:sage [2017/07/24(月) 00:48:44.80 ID:XgJeE+LA.net]
>>6-285 SageMath
ttp://sagecell.sagemath.org/?q=veftjc

421 名前:デフォルトの名無しさん mailto:sage [2017/07/24(月) 18:24:00.06 ID:UuUAOyUA.net]
>>408
裁定ラインとしては、乗算は Bigint×Bigint、および除算の実装ですかね、でも足し算の回数での乗算や引き算の回数での除算は嫌ですね

422 名前:デフォルトの名無しさん [2017/07/24(月) 18:58:12.05 ID:5ve8i6tz.net]
お題:お題スレ3の>>170をファレイ数列を使って解く。
peace.2ch.net/test/read.cgi/tech/1390525149/170

423 名前:デフォルトの名無しさん mailto:sage [2017/07/24(月) 19:10:35.21 ID:nJVItCRy.net]
>>411 Ruby
def farey_sequence(n)
(1..n-1).map{|i| 1r*i/n}
end

def ans_411(m)
(2..m).map{|i| farey_sequence(i)}.flatten.uniq.sort
end

ans_411 3 #=> [(1/3), (1/2), (2/3)]
ans_411 5 #=> [(1/5), (1/4), (1/3), (2/5), (1/2), (3/5), (2/3), (3/4), (4/5)]

424 名前:デフォルトの名無しさん mailto:sage [2017/07/24(月) 19:11:05.16 ID:7nQ6Z7f9.net]
>>296
超高速版が出来ました!
ideone.com/FrRkof

一皿9秒が上限であれば、計算オーダーはn
関数自体は何秒でも大丈夫です

コードだけじゃ意味がわからないでしょうけど、とりあえずコードだけ
あまりテストしてないので、バグって

425 名前:スらごめんなさい []
[ここ壊れてます]



426 名前:デフォルトの名無しさん [2017/07/24(月) 23:00:47.69 ID:fjGi9Yh0.net]
オーダーnは凄いな

427 名前:デフォルトの名無しさん mailto:sage [2017/07/25(火) 05:40:32.49 ID:ubbfnjuS.net]
>>413
うーんわからん。
俺の思考とは別系統かな。
ホントに0秒で解けてるし、素晴らしい。
素直に賞賛。

428 名前:デフォルトの名無しさん mailto:sage [2017/07/25(火) 11:52:16.57 ID:bLUUDw7G.net]
回転寿しの問題は、部分的な最短経路が全体の最短経路にならないんだよな
だが最短時間はレーン長の2倍程度の再帰回数で出る
そのあと数十億回再帰して総当たりしてもそれより短くならない
最後の皿から逆方向に探索してもおそらく同じ状況

429 名前:デフォルトの名無しさん mailto:sage [2017/07/25(火) 11:56:47.84 ID:bLUUDw7G.net]
例えば、”122” は最短時間6だが、1周目で2番目の要素”2”をパスしないとそうならない

430 名前:411 mailto:sage [2017/07/26(水) 19:54:35.63 ID:6H34MdHA.net]
>>412
ファレイ数列の中間数(mediant)を再帰的に生成すると、uniqもsortも要らないのだけど、
mが3や5だと大差無いかw

431 名前:デフォルトの名無しさん mailto:sage [2017/07/26(水) 20:50:49.45 ID:s8dUUqTb.net]
>>411
リンク先が見えません
問題文をもう一回書いてください

432 名前:デフォルトの名無しさん mailto:sage [2017/07/26(水) 20:52:34.29 ID:s8dUUqTb.net]
と思ったら見れました

ファレイ数列を使って何かを解くわけじゃなくて、
ファレイ数列を求める問題?

433 名前:411 mailto:sage [2017/07/26(水) 23:20:07.89 ID:6H34MdHA.net]
>>420
元の問題はそういうもの(=ファレイ数列の両端(0/1と1/1)無し版を求める問題)と
解釈してますです。

434 名前:デフォルトの名無しさん mailto:sage [2017/07/26(水) 23:26:01.52 ID:lPM9zwS7.net]
#include <list>
#include <iostream>
const int N_MAX = 10;
struct RATIONAL {
int num;
int den;
};
int main() {
std::list < RATIONAL > farey;
RATIONAL zero = {0, 1};
RATIONAL one = {1, 1};
farey.push_back(zero);
farey.push_back(one);
for (int n = 1; n <= N_MAX; n++){
for (std::list < RATIONAL > ::iterator i1 = farey.begin(), i0 = i1++; i1 != farey.end(); i0 = i1, i1++) {
if (i0->den + i1->den <= n) {
RATIONAL m = {i0->num + i1->num, i0->den + i1->den};
farey.insert(i1, m);
}
}
std::cout << n << " : ";
for (std::list < RATIONAL > ::iterator i = farey.begin(); i != farey.end(); i++) {
std::cout << i->num << "/" << i->den << " ";
}
std::cout << "\n";
}
return 0;
}

435 名前:デフォルトの名無しさん mailto:sage [2017/07/26(水) 23:29:22.49 ID:lPM9zwS7.net]
これから0と1を除けば良いって問題であれば、
表示のループに以下を加えれば
if (i->den != 1)



436 名前:デフォルトの名無しさん mailto:sage [2017/07/26(水) 23:31:57.11 ID:lPM9zwS7.net]
問題の意味も意図も良くわからん

出題者が「そういうものと解釈しています」とか
出題者が >>418 みたいな回答をバカにする発言とか

なんか非常に感じが悪い

437 名前:412 mailto:sage [2017/07/27(木) 00:12:38.86 ID:qteH6K3e.net]
そもそも>>412のfarey_sequenceは定義が間違ってたわ
んでもって再帰にすると>>412より遅くなるという
Ruby

class Farey
def self.[](m)
if m == 1
[0r, 1r]
else
succ(m - 1)
end
end

def self.succ(m)
self[m].each_cons(2).inject([0r]){|s, (a, b)|
x = a.denominator + b.denominator
s << 1r*(a.numerator + b.numerator)/x if x == m + 1
s << b
}
end
end

Farey[3] # => [(0/1), (1/3), (1/2), (2/3), (1/1)]
Farey[5] # => [(0/1), (1/5), (1/4), (1/3), (2/5), (1/2), (3/5), (2/3), (3/4), (4/5), (1/1)]

438 名前:デフォルトの名無しさん mailto:sage [2017/07/27(木) 01:59:46.61 ID:GuEy9AL1.net]
>>411 Java
https://ideone.com/w0q7cN

439 名前:デフォルトの名無しさん mailto:sage [2017/07/28(金) 18:51:16.80 ID:XBSdfIgC.net]
>>375
のほかの実装はでてこないねぇ‥

440 名前:デフォルトの名無しさん mailto:sage [2017/07/28(金) 19:19:26.77 ID:mqZJq6H+.net]
昔brainf**kで実装したのあるけどちょっとなぁ

441 名前:デフォルトの名無しさん mailto:sage [2017/07/28(金) 19:24:55.65 ID:WViVOgsq.net]
また懐かしい言語を

442 名前:デフォルトの名無しさん mailto:sage [2017/07/28(金) 19:26:36.86 ID:WViVOgsq.net]
どうせならチューリングマシンで作ってよ

443 名前:デフォルトの名無しさん [2017/07/30(日) 10:59:37.37 ID:A7gIx2b1.net]
お題:MathematicaのFareySequence[n,k](引数2つ)に相当するものの実装
ttp://reference.wolfram.com/language/ref/FareySequence.html

444 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 11:53:03.31 ID:EQKnHSgY.net]
>>431
ideone.com/m7BnJN
C++。一瞬計算が合わなくてビビったけど、空目だった。
インデックス概念がベーシックなんだな。

445 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 12:00:36.94 ID:EQKnHSgY.net]
っていうか、この関数インデックスに0与えたら何が出力されるんだろう・・・。
早速バグってる気がする。



446 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 12:15:40.85 ID:EQKnHSgY.net]
>>432
バグってた。のでエディトしてFIXした。
所持する数の概念勘違いしてた。

447 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 12:25:59.30 ID:B3p9Yl5S.net]
>>422の微妙な変更でいいよね

448 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 12:26:41.34 ID:B3p9Yl5S.net]
1個だけ求めるなら、もっといい方法がある?

449 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 12:27:22.69 ID:B3p9Yl5S.net]
ていうか、いい加減Fareyはもういいでしょ
他の課題の方が

450 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 12:30:15.15 ID:EQKnHSgY.net]
フィボナッチって素数何だっけ?

451 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 12:44:33.08 ID:B3p9Yl5S.net]
1, 1, 2, 3, 5, 8, ...
違うよね

452 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 12:47:15.18 ID:EQKnHSgY.net]
だよねー。>>422ってフィボナッチ使ってない?
あんまり深く考えてないだけど。Orz

453 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 12:47:30.85 ID:B3p9Yl5S.net]
じゃあ、任意の二個の数からはじまるフィボナッチ数列で、はじめから連続する素数の数が多い物を探す
って課題で

454 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 12:48:36.68 ID:B3p9Yl5S.net]
>>440
フィボナッチではない
wikipediaにのってるレベルの知識で作った

455 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 12:49:05.29 ID:EQKnHSgY.net]
あれ?俺とんちんかんなこと言ってるか?
>>422が数列としてあってるのかよくわからない。Orz
どう考えればいいんだろう。



456 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 12:53:04.00 ID:EQKnHSgY.net]
まぁ、俺のもあってるかどうかはしらんけど。><;

457 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 12:56:43.60 ID:EQKnHSgY.net]
頭悪くてゴメン。爆発しそう。。。

458 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 13:01:05.96 ID:EQKnHSgY.net]
引っ込む。すまんかった。

459 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 14:17:22.65 ID:t+CfDp82.net]
>>431 Java
ideone.com/9AXdRV

460 名前:デフォルトの名無しさん mailto:sage [2017/07/30(日) 19:16:10.29 ID:LizATlBz.net]
>>431 Ruby

def farey(n, k)
return [0r, 1r][k] if n == 1
farey(n - 1, 0..-1).each_cons(2).inject([0r]){|s, (a, b)|
x = a.denominator + b.denominator
s << 1r*(a.numerator + b.numerator)/x if x == n
s << b
}[k]
end

461 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 07:36:01.80 ID:cLWzUq7C.net]
お題:ミンコフスキーの疑問符関数の実装
ttps://en.wikipedia.org/wiki/Minkowski%27s_question_mark_function
ttp://reference.wolfram.com/language/ref/MinkowskiQuestionMark.html

462 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 10:39:36.15 ID:ONmyLPuf.net]
WIKIぺにコード乗ってますが。

463 名前:デフォルトの名無しさん mailto:sage [2017/08/03(木) 10:48:34.50 ID:ONmyLPuf.net]
>>449のWIKIより。
/* Minkowski's question mark function */
double minkowski(double x) {
long p=x; if ((double)p>x) --p; /* p=floor(x) */
long q=1, r=p+1, s=1, m, n;
double d=1, y=p;
if (x<(double)p||(p<0)^(r<=0)) return x; /* out of range ?(x) =~ x */
for (;;) /* invariants: q*r-p*s==1 && (double)p/q <= x && x < (double)r/s */
{
d/=2; if (y+d==y) b

464 名前:reak; /* reached max possible precision */
m=p+r; if ((m<0)^(p<0)) break; /* sum overflowed */
n=q+s; if (n<0) break; /* sum overflowed */

if (x<(double)m/n) r=m, s=n;
else y+=d, p=m, q=n;
}
return y+d; /* final round-off */
}
[]
[ここ壊れてます]

465 名前:デフォルトの名無しさん mailto:sage [2017/08/05(土) 17:44:11.83 ID:40G0sflG.net]
>>375
のほかの実装はでてこないねぇ‥



466 名前:デフォルトの名無しさん [2017/08/12(土) 18:46:00.57 ID:953va2dM.net]
寿司のオーダーNのやつを理解しようとしたけどまだやってない。
その仕組みと、ほんとに正解してるのかとか。いたら誰が解説して。

467 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 19:04:22.18 ID:Bi4KH0eW.net]
>>413です

もちろん合っているつもりのコードです
作者が言っても何の説得力もありませんが

468 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 19:07:04.34 ID:4r/z/Qd5.net]
会社に帰ってこない巡回セールスマンだよね
寿司の乗った皿がノード、計算量はO(n!)

469 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 19:10:18.10 ID:Bi4KH0eW.net]
それぞれの寿司を食べている期間をレーン上の線分で表します

この線の重なり具合をpileで表しました

効率良く食べられた場合はレーンがpile_max周するまでの間に食べきることが出来ます

170行目の判定がそれで、trueの場合は効率良く食べられない場合です

470 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 19:12:06.32 ID:4r/z/Qd5.net]
>>456
もしそれで最適解が得られるなら巡回セールスマンも可能じゃないかな?

471 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 19:17:11.73 ID:6XNTCj+p.net]
巡回セールスマン問題とけたら色々応用範囲アルヨ。
マジでどっかに売り込んでもいいくらい。
天才か。

472 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 19:18:34.85 ID:6XNTCj+p.net]
社会的に言うと交通統制とかもそれじゃないかな?
信号の待ち時間問題。よくしらんけど。

473 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 19:19:17.76 ID:Bi4KH0eW.net]
効率良く食べられない方が簡単なのでその場合から

お寿司を以下のグループに分けます
----
各グループのお寿司は、レーンの特定の位置から食べ始めた場合、pile[グループ]周以内で食べ終わることが出来る
このとき、pile_max = Σ pile[グループ]
となる
---
このようなグループの分け方の最小の物が存在します

474 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 19:22:56.16 ID:Bi4KH0eW.net]
同じグループのお寿司は連続して食べます
開始時と、各グループのお寿司を食べ終わった後、最初に来るお寿司から食べはじめ、pile[グループ]以内で食べられる食べ方でそのグループを食べ終える
ということを繰り返せば最小の時間で食べ終えることが出来ます

475 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 19:26:29.79 ID:Bi4KH0eW.net]
グループ分けした時に1個のグループになった場合は、
効率良く食べられることになります
つまり、pile_max周以下で食べ終えることが出来ます

この時は、コード上にあるダミーのお寿司を追加してから最小時間を求め、ダミーのお寿司を食べてる時間を引けば求められます



476 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 19:28:18.79 ID:4r/z/Qd5.net]
うーん、よくわからん
セールスマンの巡回先を一次元にマッピングできれば同じことできそうな
無理か

477 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 19:30:27.01 ID:Bi4KH0eW.net]
グループの分け方は少し難しいです

レーンの各整数位置に対して、
お寿司の線の両端にあたる点同士
線の重なりがpile_max未満である区間の点(両端を含む)
を同じグループの点とし、
これらを続けることで最小のグループ分けが出来ます
線の両端の点のグループが、そのお寿司のグループになります

478 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 19:31:42.19 ID:Bi4KH0eW.net]
それぞれ、証明は出来ているつもりです

479 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 19:32:49.51 ID:Bi4KH0eW.net]
もちろん、一般の巡回問題はこの方法では無理です

480 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 19:37:29.23 ID:4r/z/Qd5.net]
全ノードを巡回する最短時間の問題だから、できそうな気がするけどね

481 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 19:39:44.61 ID:2Yw2XYfL.net]
372仕様書無しさん2017/08/11(金) 10:31:43.41
フリーランスで検索すると引っかかる零細ITがやっている

482 名前:フリーランスのサイトはだめだ。
高額に見せているけど実際は50万前後
JIET加入した方がいいよ。案件は毎日千件以上末端価格は60万円 平凡な稼働時間の80万円の案件もある。
ユー子も求人をだしてる。名刺も渡せる。ユー子に名刺が渡せるんだぞ。夢のようだ

それらの案件まさぐってHPで転売していたのが零細ITがやるフリーランスサイト

473非決定性名無しさん2017/08/03(木) 15:21:30.71

JIETに加入すれば誰でも3次60万からスタートだ。フリーランスのサイトをやってる
自称エージェントもそこから案件情報を取得しきてる。サイトで60万で釣って40万から55万の
間でやらしている。

446非決定性名無しさん2017/08/02(水) 22:12:48.95

JIETに毎月5千円払えば3次から入場できるだろ?
高額をうたうフリーランスのサイトはだいたい5次から45万円
JIETで閲覧応募できる末端価格からさらに搾取するのが高額をみせつけるフリーランスサイトでした
高額案件をみせつけるフリーランスサイトも案件の取得はJIETでした

自称エージェントはJIETから流れてくる案件を転売してるだけだった。
JIETに加入すれば誰でも案件に応募することができた。収入が40万50万台にならなくて済む
[]
[ここ壊れてます]

483 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 19:40:20.63 ID:Bi4KH0eW.net]
pile_maxとその位置から下限が得られますが、
>>296 の例では98秒の物以外はすべてその下限になっています
一個その下限になるような例を見つければ答えがわかるのですが、
自力で検索してみればわかると思いますがそのような例はあっさり見つかります

98秒の例は効率良く食べられない場合になります

効率良く食べられる側のなかでも、pileから得られる下限値より大きくなる場合もあります

484 名前:デフォルトの名無しさん mailto:sage [2017/08/12(土) 19:43:06.99 ID:Bi4KH0eW.net]
いずれの場合も、PCを使わなくても手計算で十分可能です

485 名前:デフォルトの名無しさん mailto:sage [2017/09/15(金) 10:14:33.05 ID:lRMsxOf0.net]
お題:
N次元で1辺のマス目がM個の魔法陣を作る
N>3(任意)、M>=3(任意)の超立方体



486 名前:デフォルトの名無しさん mailto:sage [2017/09/15(金) 10:20:33.77 ID:lRMsxOf0.net]
参考
magcube.la.coocan.jp/magcube/jp/
nadamath2012.web.fc2.com/bushi/2004_mas2.pdf

487 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 16:38:38.03 ID:DSKC3zx4.net]
魔方陣は1個作ればいいの?

Mが奇数か4の倍数は簡単
4で割って2余るのは検索するしかないのかな?

488 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 16:55:04.37 ID:fthJj6jv.net]
バックトラックで組もうかと思ったけど、重そうだったからやめた。
数独より重そう。
それに一列合計をどの数字にするのかちょっとわからなかった。

489 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 23:20:36.13 ID:DSKC3zx4.net]
一列合計は、M*[数字の平均]
になる

つまり
M*(M^N+1)/2

490 名前:片山博文MZ mailto:sage [2017/09/18(月) 21:53:54.06 ID:iMidYxoH.net]
お題: URLから適当なサムネイルを生成するWebプログラム。

491 名前:デフォルトの名無しさん [2017/09/18(月) 23:06:01.10 ID:FC5+Wne9.net]
お題
0以上90未満の整数nを入力として
タンジェントn°の値が有理数ならば真
そうでなければ偽を返す

492 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 23:29:46.49 ID:45aelXxs.net]
bool f(int n){return n==0 || n == 45;}

493 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 23:33:52.62 ID:ILsR+BHw.net]
sed -r -e "s/^(0|45)\$/True/" -e "s/[1-8][0-9]*/False/"

494 名前:デフォルトの名無しさん mailto:sage [2017/09/19(火) 01:13:30.78 ID:zMNLdsjY.net]
tanの計算しないのはどうかと

495 名前:デフォルトの名無しさん mailto:sage [2017/09/19(火) 01:57:23.24 ID:Ten4kOds.net]
計算で有理数かどうか確



496 名前:F?
それは非常に難しいな

by 東大数学科卒
[]
[ここ壊れてます]

497 名前:デフォルトの名無しさん mailto:sage [2017/09/19(火) 02:28:36.10 ID:SyuGyzWY.net]
>>480
そう思うなら他者を批判するより行動で示せばいいと思うよ

498 名前:デフォルトの名無しさん mailto:sage [2017/09/19(火) 03:58:59.82 ID:KVkpgN/c.net]
tan1°が無理数であることの証明すら面倒くせえのに一体どんな回答を求めているんだ

499 名前:デフォルトの名無しさん mailto:sage [2017/09/19(火) 06:37:25.45 ID:Ten4kOds.net]
>>483
面倒くさい?
てことは出来るの?
やってみて

500 名前:デフォルトの名無しさん mailto:sage [2017/09/19(火) 07:41:26.64 ID:KVkpgN/c.net]
>>484
確か京大の過去問にあったでしょう
説明めんどいからは解法は自分で調べて

501 名前:デフォルトの名無しさん mailto:sage [2017/09/19(火) 08:13:59.26 ID:Ten4kOds.net]
いや、おれは出来るよ

>>483の実力で出来るのか?と疑問に思っただけ
実力じゃなくてカンニングね

502 名前:デフォルトの名無しさん mailto:sage [2017/09/19(火) 08:21:42.19 ID:KVkpgN/c.net]
何言ってんだこいつ

503 名前:デフォルトの名無しさん mailto:sage [2017/09/19(火) 08:49:35.38 ID:q1kL6yRz.net]
問題が悪いな

与えられた有理数rに対し、
tan(πr)が有理数かどうか判別するプログラムを書け

ならテーブルは使えない

504 名前:デフォルトの名無しさん mailto:sage [2017/09/19(火) 09:06:24.19 ID:emxMAzY1.net]
また、多倍長精度演算のないC++にはきつい問題を・・・。

505 名前:デフォルトの名無しさん mailto:sage [2017/09/19(火) 11:09:01.37 ID:q1kL6yRz.net]
>>488
すいません
結果を知っていたらこれでも簡単でした



506 名前:デフォルトの名無しさん mailto:sage [2017/09/19(火) 11:10:19.22 ID:q1kL6yRz.net]
>>489
多倍長を使っても解決しないでしょ

507 名前:デフォルトの名無しさん mailto:sage [2017/09/19(火) 12:53:02.28 ID:RSOddfRB.net]
そもそも出題者はどういう回答を期待してるんだ?
数学の知識無しでは作れないし、数学の知識を使えば>>478になる

508 名前:デフォルトの名無しさん [2017/09/19(火) 14:38:36.12 ID:LvSRuVZD.net]
tan()の加法定理
 tan(α+β)=(tanα+tanβ)/(1-tanαtanβ)
により

もしtan(α)が有理数なら
tan(nα) (n = 1,2,3,4・・・)
も全て有理数

このため
整数nにより
tan(n)が無理数なら
nの約数全てによるtan()が無理数

ここで
tan(60)=√3
が無理数なのは簡単に証明されるため、
tan(1)
も無理数

証明終わり

509 名前:デフォルトの名無しさん mailto:sage [2017/09/19(火) 14:54:56.80 ID:RSOddfRB.net]
>>476を解くにはあとtan(18度)が無理数であることを証明しないと

510 名前:デフォルトの名無しさん mailto:sage [2017/09/19(火) 14:55:28.25 ID:RSOddfRB.net]
>>476じゃなくて>>477

511 名前:デフォルトの名無しさん mailto:sage [2017/09/19(火) 16:11:41.85 ID:HSXd4/vW.net]
>>493
なるほど面白いねw

512 名前:デフォルトの名無しさん mailto:sage [2017/09/19(火) 19:41:00.46 ID:Ten4kOds.net]
>>493
tan(π/4)は有理数だけど
tan(π/2)は有理数じゃない

513 名前:デフォルトの名無しさん mailto:sage [2017/09/19(火) 20:13:34.35 ID:KVkpgN/c.net]
tan1(rad)が超越数であることを証明せよ

514 名前:デフォルトの名無しさん [2017/09/19(火) 22:25:08.25 ID:FbLYus+p.net]
>>492
WolframAlphaが
is tan(pi * 1 / 180) a rational number?
→ not a rational number
と返す仕組みを知りたかった

515 名前:デフォルトの名無しさん mailto:sage [2017/09/19(火) 22:57:34.84 ID:Ten4kOds.net]
xが有理数、tan(πx)が有理数 ====> xは1/4の倍数

って覚えてるだけかと



516 名前:デフォルトの名無しさん [2017/09/20(水) 14:48:00.57 ID:jgmli1ek.net]
>>493
は加法定理で(1-tanαtanβ)が0になってはまずいので
0度以上90未満の範囲内に限定しないといけないな。


tan()の加法定理
 tan(α+β)=(tanα+tanβ)/(1-tanαtanβ)
により

もしtan(α)が有理数で、かつ 0 <= nα < 90なら
tan(nα) (n = 1,2,3,4・・・)
も全て有理数

このため
整数 n ( 0 <= n < 90 ) により
tan(n)が無理数なら
nの約数全てによるtan()が無理数

ここで
tan(60)=√3
が無理数なのは簡単に証明されるため、
tan(1)
も無理数

517 名前:デフォルトの名無しさん [2017/09/20(水) 14:51:06.46 ID:jgmli1ek.net]
tan(1)だけじゃなくて
>>477 >>478 も証明できるかな???

つまり整数 n ( 0 <= n < 90 ) において
tan(n)が有理数になるのはn=0,45に限ることの証明

tan(90-n) = 1/tan(n) なので
n ( 0 <= n < 45 ) の範囲で証明されればOK

またtan(45)が有理数で加法定理で減算し
 tan(45-n):有理数 ⇔ tan(n):有理数 ( 0 <= n < 45 )
も成立

518 名前:デフォルトの名無しさん [2017/09/20(水) 14:51:42.84 ID:jgmli1ek.net]
60の約数 はtan(n)無理数
1,2,3,4,5,6,10,12,15,20,30

519 名前:

これの45-n もtan(n)無理数
44,43,42,41,40,39,35,33,25,15

この約数で、まだ含まれていないもの
11,22,21,8,13,7

45-nにより
34,23,24,37,32,38

この約数で、まだ含まれていないもの
17,16,19

45-nにより
28,29,26

この約数で、まだ含まれていないもの
14

45-nにより
31

ここまでの数を並べると
01,02,03,04,05,06,07,08,**,10,
11,12,13,14,15,16,17,**,19,20,
21,22,23,24,25,26,**,28,29,30,
31,32,33,34,35,**,37,38,39,40,
41,42,43,44

9度の倍数の証明のみが残された
[]
[ここ壊れてます]

520 名前:デフォルトの名無しさん mailto:sage [2017/09/20(水) 16:48:28.32 ID:UU/UGcdT.net]
だから>>494と書いたんだけど

521 名前:デフォルトの名無しさん mailto:sage [2017/09/20(水) 21:20:48.49 ID:8kWE0pQL.net]
tan(1 rad)が超越数であることは誰も証明できないの

522 名前:デフォルトの名無しさん mailto:sage [2017/09/20(水) 21:27:13.08 ID:UU/UGcdT.net]
プログラムに証明させる問題?

523 名前:デフォルトの名無しさん mailto:sage [2017/09/20(水) 22:23:37.78 ID:vEoThqNS.net]
なぜラジアン?
話の流れ的にはtan(1度)だろ

524 名前:デフォルトの名無しさん mailto:sage [2017/09/20(水) 22:25:37.42 ID:vEoThqNS.net]
と思ったけど、簡単すぎた

525 名前:デフォルトの名無しさん mailto:sage [2017/09/21(木) 16:21:06.33 ID:na02B6ss.net]
[1] 授業単元名:FizzBuzzクイズ
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)特に問わない
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)特に問わない
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)特に問わない

kohada.2ch.net/test/read.cgi/prog/1209467166/401
FizzBuzzクイズ

1.fizz.buzz #=> 1
3.fizz.buzz #=> "Fizz"
5.fizz.buzz #=> "Buzz"
15.fizz.buzz #=> "FizzBuzz"
999.fizz.buzz #=> 999

となるようなメソッドfizz、buzzは定義可能か?
可能である場合、同様にgizzを追加定義し、
7.fizz.buzz.gizz #=> "Gizz"
21.fizz.buzz.gizz #=> "FizzGizz"
35.fizz.buzz.gizz #=> "BuzzGizz"
105.fizz.buzz.gizz #=> "FizzBuzzGizz"
105.fizz.gizz.buzz #=> "FizzGizzBuzz" と拡張・応用ができるか?

メソッドのコールに()が必須の言語では 3.fizz().buzz() 形式でも構わない。
オープンクラス機構やメソッドのない言語では関数(buzz(fizz(3)) #=> "Fizz" など)で。



526 名前:デフォルトの名無しさん mailto:sage [2017/09/21(木) 19:58:51.31 ID:+ykHPOb/.net]
まともに仕様を書けない出題者

527 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 07:02:49.79 ID:aD9oWCn2.net]
これ普通の発想では無理

528 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 07:14:29.33 ID:eEMHecr4.net]
>>509
修正
×999.fizz.buzz #=> 999
○997.fizz.buzz #=> 997

529 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 07:55:33.84 ID:FtjqsiSd.net]
>>509
C++版
https://ideone.com/JdTeeD

530 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 08:00:39.43 ID:pX6TouLp.net]
仕様が謎

531 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 08:13:32.67 ID:FtjqsiSd.net]
>>509
C言語
https://ideone.com/eWR8Pl

532 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 09:43:07.90 ID:eeRMTLx0.net]
外部出力を伴う関数(あるいはメソッド)なら簡単
たぶん関数(あるいはメソッド)の返値がそうなるようにって意味かと
(じゃないと普通に書けてクイズにならない)
たしか数理学的にはこういう関数は書けないことになっていたはず

533 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 12:43:18.77 ID:qmG6L9xB.net]
>>509>>516 みたいなのとは絶対に一緒に仕事をしたくない

534 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 12:43:56.86 ID:qmG6L9xB.net]
別に戻り値にしても大して変わらんけど

535 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 12:51:02.25 ID:qmG6L9xB.net]
C言語だとトリッキーな技を使わないと出来ない
同じ関数名で複数関数を作れないから
2段や3段重ねて、intを受けて文字列を返すのは普通には無理

C++だと簡単
大きく分けて2つの方法がある

C++でも数値によって戻り値の型を変えるのは無理
数値がconstexprで



536 名前:良いなら出来るだろうけど []
[ここ壊れてます]

537 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 14:57:30.68 ID:eEMHecr4.net]
>>513
>int l_ = 3
これ、なんとかならないか?

538 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 16:30:21.56 ID:W1Y66+yK.net]
>>520
関数インターフェース的にはその値を与えることが出来ない

別の関数か何かで変えるかインターフェースを変えるしか

539 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 16:41:43.04 ID:W1Y66+yK.net]
>>516
戻り値を文字列にする方法

方法1
段階によって引数と戻り値の型を変える
S1 fizz(int n);
S2 fizz(S1 s);
std::string fizz(S2 s);
※テンプレートを使うと楽

方法2
戻り値をstd::string固定にしてなんとかする

方法2-1
戻り値は常に結果の文字列にし、パラメーター以外で情報を渡す
方法2-2
文字列に情報をエンコードして入れる
最終型段だけ結果を返すようにする

方法3
戻り値を結果文字列そのままではなく、文字列情報を含む情報とする
(これは反則かな?)

540 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 16:44:03.80 ID:W1Y66+yK.net]
方法2-1であれば >>520の問題は解決する
ただし、そのままだとスレッドセーフじゃなくて気持ち悪い

541 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 16:48:22.63 ID:eEMHecr4.net]
>>509
#=>
これって ruby の記法だったかな?評価値を変えたいようだ

542 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 18:17:47.82 ID:eeRMTLx0.net]
例えばRubyだと文字列を含め組み込み型にインスタンス変数を仕込めるので
たぶんそれで次のメソッドに情報を渡せる

543 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 19:04:29.86 ID:FtjqsiSd.net]
>>522 の方法2-1
C++版
https://ideone.com/ZavKGg

外部情報は「n」のみ
複数スレッドや割り込みハンドラからコールする時はこのnが問題になるんで
なんとかしてstd::stringに埋め込めれば良いんだけど

>>525
問題を変えちゃダメだよね
> [3.3] 言語: (C/C++/どちらでも可 のいずれか)特に問わない

544 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 19:08:43.22 ID:FtjqsiSd.net]
8行目、なんとなく文字列から判別してみたけど、
素直にnと同じように外部にフラグを持てば条件が減る
(文字列の最後が数字にならないとか文字コードが連続してるとか)

545 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 19:09:11.03 ID:pX6TouLp.net]
「(C/C++/どちらでも可 のいずれか)特に問わない」って日本語がまず謎
有限個の具体例しか与えられていないので仕様も謎



546 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 19:26:24.34 ID:FtjqsiSd.net]
出題者の選択枝が [C/C++/どちらでも可] の3個あって、出題者がその「いずれか」を選ぶ
というフォーマットを使った出題
出題者は回答者に対し『その3個のどれでも良いよ』という意味で「特に問わない」と

と私は解釈した
つまり、回答者の選択枝はCかC++のどちらかだと

出力する文字列のルールはリンク先を見れば大体わかる
gizzが7の倍数かどうかは実際には不明で、実は14で割ると7余る数かもしれないが...

リンク先に「プリントする」とあるので
printfなどで標準出力に出せば良いのかと思ったが、
>>516の解釈は違うらしい

数値の場合だけ""でくくってないので、
文字列の場合は""をくっつける必要があるのか、
型を変えろと言っているのかはよくわからん
いずれにしろ、CやC++では値によって戻り値の型を変えるのは不可能

547 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 19:32:11.08 ID:FtjqsiSd.net]
いずれにしろ、
>>510 >>514 >>517

548 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 19:33:47.07 ID:eEMHecr4.net]
>>529
>回答者の選択枝はCかC++のどちらかだと
いや、そうじゃなくて、本当に「特に問わない」、どういったらいいかな、このテンプレはC宿題スレのものを、そのまま頂戴しただけじゃない?

549 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 19:36:43.23 ID:FtjqsiSd.net]
>>531
君は出題者なのか?違うのか?
立場をはっきりと

550 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 19:39:18.64 ID:FtjqsiSd.net]
出題者なら0点

551 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 19:43:00.43 ID:pX6TouLp.net]
>>529
なるほど
.gizzは、与えられた数字に対してfizzbuzzが数字になるなら"Gizz"、
それ以外の場合は所定の位置(説明省くけど)に"Gizz"を挿入するものなのかと思ってたわ

552 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 19:51:22.72 ID:FtjqsiSd.net]
確かに
7の倍数じゃなくて1の倍数でも良いよな
たまたま >>509 の例がすべて7の倍数になってただけで

この場合、上にあげた3個のコードいずれも
7 を 1 に変えてくださいな

553 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 19:54:43.95 ID:FtjqsiSd.net]
そろそろ
出題者の模範解答
よろしくね

554 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 20:00:08.36 ID:eEMHecr4.net]
え゛
0点の出題だしー模範解答の質も推して知るべし、なんじゃないでしょうか……:−)

555 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 20:35:12.69 ID:aD9oWCn2.net]
>>526
↓この但し書きがあるってことは、問題作成者(≠出題者)としてはC/C++限定とは考えてはいないだろう

> メソッドのコールに()が必須の言語では 3.fizz().buzz() 形式でも構わない。
> オープンクラス機構やメソッドのない言語では関数(buzz(fizz(3)) #=> "Fizz" など)で。

そもそもここで出題する時点で [3] の縛りは意味をなさないよ



556 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 20:43:54.80 ID:W1Y66+yK.net]
>>509に書いてある以上は、それに従うのが基本

557 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 20:47:11.96 ID:W1Y66+yK.net]
と思って私は回答しましたが、
他の人が他の解釈で回答することまで否定はしません

558 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 20:47:48.19 ID:W1Y66+yK.net]
ということで、
>>538 よろしく!

559 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 03:26:09.79 ID:nBwtcNcI.net]
>>509 Ruby >>525の方針で
https://ideone.com/B6E8ig

560 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 05:00:15.00 ID:FxaWa0db.net]
>>509 F#
https://ideone.com/svYTTM

561 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 09:40:19.02 ID:9eQI4Qct.net]
>>509
@Mathematica

https://ideone.com/oC0nu7

入力値(n)をリストにして次の関数に渡さないとダメポ

562 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 11:10:41.17 ID:koNmB6po.net]
PerlやPythonは?

563 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 11:25:56.13 ID:7PRDVMsP.net]
ネタバレになるけど
このクイズはグローバル変数を使えばそれで済んでしまうシンプルな話なんだけど、それをあえて
- 各言語の機能を熟知・駆使して、面白くしたりひと工夫したりする(たとえばスレッドセーフとか)
- 前者のしくみと、7の倍数のgizzの拡張に必要な追加を最小限にすることを両立させる
というポイントが楽しみどころなんじゃないかな

564 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 11:29:36.36 ID:w6RxEhSu.net]
>>509
https://ideone.com/4p67HE
C++。題意は満たしてないけど、自分が書くとこんな感じだな。
末尾判定難しい。

565 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 17:45:33.07 ID:tyQvRaHd.net]
>>509
>>536

>>524>>547 の方法を想定
Java: https://ideone.com/i8wMea



566 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 17:47:47.85 ID:tyQvRaHd.net]
× >>524 >>547
>>524 >>542

567 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 18:26:18.44 ID:80k6Tqnu.net]
関数の入出力の型が同一である必要がある
Cならintをchar*と解釈するわけにいかないから構造体だろう

568 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 22:30:47.29 ID:PEiEI8OX.net]
スレッドローカル変数で
書いてみている

569 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 22:51:39.70 ID:PEiEI8OX.net]
>>509 Squeak Smalltalk だけどなんとか >>547 っぽい方法で

| FizzBuzzQuiz |
FizzBuzzQuiz := Trait named: #FizzBuzzQuiz uses: #() category: 'FizzBuzz-Quiz'.
FizzBuzzQuiz compile: 'isDivisibleBy: m
  ^(Processor activeProcess environmentAt: #

570 名前:fbValue) isDivisibleBy: m'.
FizzBuzzQuiz compile: ', str Processor activeProcess environmentAt: #fbValue put: self. ^str'.

FizzBuzzQuiz compile: 'fizz ^(self isDivisibleBy: 3) ifTrue: [self, ''Fizz''] ifFalse: [self]'.
FizzBuzzQuiz compile: 'buzz ^(self isDivisibleBy: 5) ifTrue: [self, ''Buzz''] ifFalse: [self]'.

{Number. String} do: [:each | each uses: FizzBuzzQuiz].

1 fizz buzz. "=> 1 "
3 fizz buzz. "=> 'Fizz' "
5 fizz buzz. "=> 'Buzz' "
15 fizz buzz. "=> 'FizzBuzz' "
14 fizz buzz. "=> 14 "

FizzBuzzQuiz compile: 'gizz ^(self isDivisibleBy: 7) ifTrue: [self, ''Gizz''] ifFalse: [self]'.

7 fizz buzz gizz. "=> 'Gizz' "
21 fizz buzz gizz. "=> 'FizzGizz' "
35 fizz buzz gizz. "=> 'BuzzGizz' "
105 fizz buzz gizz. "=> 'FizzBuzzGizz' "
105 fizz gizz buzz. "=> 'FizzGizzBuzz' "
[]
[ここ壊れてます]

571 名前:デフォルトの名無しさん mailto:sage [2017/09/24(日) 08:25:43.37 ID:wOaJDXIV.net]
>>552
×>>547 っぽい方法で → ○>>542 っぽい方法で

572 名前:デフォルトの名無しさん mailto:sage [2017/09/24(日) 08:49:01.13 ID:wOaJDXIV.net]
>>509 Ruby >>542>>552 と同様の手法でリファイン
https://ideone.com/2EsoeT

573 名前:デフォルトの名無しさん mailto:sage [2017/09/25(月) 19:17:51.82 ID:WU5gUeBt.net]
>>509 c
https://ideone.com/oAsiG2
・構造体つこうた
・gizzの「追加定義」については簡易解釈

574 名前:デフォルトの名無しさん mailto:sage [2017/10/15(日) 20:26:14.16 ID:12RNBD+4.net]
過去問を眺めていたが、もっとお気楽な問題が多かったようですね
肩慣らし問題を一つ

問題
循環小数を有理数に直せ。
循環節は括弧をつかって表現する。


0.[555] = 5/9
0.3[33] = 1/3
12.[345] = 4111/333
1.2[34] = 611/495

575 名前:デフォルトの名無しさん mailto:sage [2017/10/15(日) 21:45:12.25 ID:IPnwHMWa.net]
連分数を使うのかね



576 名前:デフォルトの名無しさん mailto:sage [2017/10/15(日) 23:12:59.97 ID:Y75uJW9z.net]
>>556 Java
https://ideone.com/QkUwMu

577 名前:デフォルトの名無しさん mailto:sage [2017/10/17(火) 15:01:04.33 ID:qd6dTZ1I.net]
循環小数は有理数な訳だが

578 名前:デフォルトの名無しさん mailto:sage [2017/10/17(火) 16:22:17.58 ID:kN20YVKE.net]
0.[555] = 0.[5] = 5/9
0.3[33] = 0.[3] = 3/9
12.[345] = 12+345/999
1.2[34] = 1.2+34/990

579 名前:デフォルトの名無しさん mailto:sage [2017/10/17(火) 18:47:49.98 ID:ELG/Hivs.net]
てすと

580 名前:デフォルトの名無しさん [2017/10/18(水) 11:15:59.21 ID:xwRaz5Kx.net]
>>560
おお。そういう法則で行けるのか。
きっと数学では大昔に証明されてるんだろうけど知らなかった。(または忘れたのかなあ?)

581 名前:デフォルトの名無しさん [2017/10/18(水) 11:35:57.38 ID:bG8m3FQp.net]
ああ。なんとなくわかった。10の桁数乗の値で割るとそっくりそのまま小数点以下になるが
1足りないから循環するのか。ああ、しかし、数学的にどう表現したらいいかわからない。w

582 名前:デフォルトの名無しさん mailto:sage [2017/10/18(水) 15:51:59.37 ID:+Osy4cjh.net]
お題:顔文字(^o^)があります。この(^o^)を左右に動かしながら出力します。(^o^)は左から右へ一文字ずつ動き、端に到達した瞬間だけ(^o^)から(>_<)に変化し、また(^o^)に戻って左端へ行き、同じように繰り返します。
端から端までは最初80文字分の幅がありますが、(^o^)が端に達した回数だけ1文字ずつ狭くなっていき、最終的に(^o^)の端まで狭くなり、(^o^)が動けなくなります。(^o^)が動けなくなったらプログラムを終了してください。

583 名前:デフォルトの名無しさん [2017/10/18(水) 17:36:32.86 ID:jSYDae9q.net]
>>564 Bash (builtins)
https://ideone.com/KFko4s

幅80文字だと出力が長くなりすぎて途中で切られるので50文字にしました。

584 名前:デフォルトの名無しさん mailto:sage [2017/10/18(水) 19:53:42.77 ID:4F2aMcKp.net]
ウインドウズでエスケープシーケンス扱うのにおまじないいるからメンドクセー。

585 名前:デフォルトの名無しさん [2017/10/18(水) 21:05:28.73 ID:xwRaz5Kx.net]
>>564
改行せずにカーソルを先頭に戻すのは CR (13) の出力で良いのか?
それとも curses ライブラリを使うべき



586 名前:ゥ? []
[ここ壊れてます]

587 名前:デフォルトの名無しさん mailto:sage [2017/10/19(木) 01:56:08.11 ID:Lj1i7npR.net]
>>567
好きな方をどうぞ
curses使うのはいいですね
こちらからは見れませんが

588 名前:デフォルトの名無しさん [2017/10/19(木) 03:35:28.31 ID:CNJYIyj0.net]
じゃ、とりあえず CR 出力版。Perl プログラム。
但し、待ち時間入れないと速すぎて見えないので適当に usleep を入れた。
テストした環境は Linux で端末は Windows の TeraTerm。
TERM=xterm の状態。

但し、プログラムを貼り付けたサイト(paiza.io)での出力はおかしくなる。
何故なら端末として動いてないから。
試したい場合はプログラムをコピーして自分の環境のエディタ等にペーストして保存後に実行して。

https://paiza.io/projects/rQDCQizcsrydlcrkxylR1w

589 名前:デフォルトの名無しさん mailto:sage [2017/10/19(木) 05:11:39.88 ID:sgSfn4oM.net]
>>564
https://ideone.com/dakfBb
C++。改行でやってみた。ちょっと汚い。

590 名前:名無しさん@そうだ選挙に行こう! Go to vote! mailto:sage [2017/10/22(日) 11:49:54.00 ID:/Umsqxkx.net]
お題:A〜Z、1〜9で出来たランダムな文字列がある(文字列はプログラム開始時に自動的に決めてよい)
キーを2つ決めて(←→キーが自然かも)例えば→キーを押すと、文字列のうち2〜9があるか
どうかを調べ、あればそのうち一つをランダムに選び、数字を一つ減らし(9なら8へ)、左右ランダムに
1を置く
つまり2以上の数字文字があればそこがゴムのような役目をして文字列が伸びる
全部の数字文字が1になったら何もしない

逆に例えば←キーを押すと、文字列のうち1〜8があるかどうかを調べ、そのうちランダムに一つを
選び、その左右どちらかに数字文字がないかを調べ、足した合計が9を超えないようなら足し合わせて
数字文字をその合計値にし、文字列を1つ縮める
足し合わせた合計が9を超えるようなら他の数字文字もランダムに同様に一つ選び、足し合わせて
9を超えない数字文字の部分が見つかったらそれを一つだけ足し合わせて縮める

全部の数字文字が9になるか、9に満たないが足し合わせると9を超えるようになったら何もしない

591 名前:デフォルトの名無しさん mailto:sage [2017/10/23(月) 04:21:48.29 ID:sHZ1Pe4U.net]
>>571
https://ideone.com/pjZbOc
C++。デバッグ難しくてやる気がしないのでバグってるかも。
カーソルキー取るの面倒だからASキーにしておいた。
こんな感じでいいのか?

何のシミュレータかしらんけどめんどくせーな。

592 名前:デフォルトの名無しさん mailto:sage [2017/10/23(月) 04:35:24.25 ID:sHZ1Pe4U.net]
あ、それと、文字列で計算するのめんどくさかったから、数字でやった。
そっち事情なんか知ったこっちゃない。

593 名前:デフォルトの名無しさん [2017/10/23(月) 05:46:30.69 ID:iFI38Dlw.net]
%%%%1000%%%%

000-[HUM%58*73.1\%]/2I/3NM/61.3SNMK%?%3%51.22222222222221%
001-[[[%6/4$17.6135412α3]]]]+DOM+SIL+7%
002-UML7%[61.2[31.5[!%32∂LM17.36%!16.3!%<<<%!HSTOL7%!Q!S!=3m=<2TOL<3Q9A<2.1GHz%,DOK,HAOARA,
003-[[[HEMLOT47[<\41.2%Q,===>[MLS<DPNO<\2.3>#ESOLA!5%!3MLA!>LTOSA>7TONSA>%>%end

594 名前:デフォルトの名無しさん mailto:sage [2017/10/23(月) 17:28:50.67 ID:f/2PkHQ/.net]
>>574
全く読めねぇw

595 名前:デフォルトの名無しさん mailto:sage [2017/10/23(月) 20:53:32.54 ID:burVCZw1.net]
ランダムの分布は指定なし?



596 名前:デフォルトの名無しさん mailto:sage [2017/10/23(月) 23:01:59.68 ID:sHZ1Pe4U.net]
いろ

597 名前:んなところでたまに見かけるけど、>>547 ってPGなの? []
[ここ壊れてます]

598 名前:デフォルトの名無しさん mailto:sage [2017/10/24(火) 06:49:36.20 ID:kt50Dt6N.net]
PGとは?

599 名前:デフォルトの名無しさん mailto:sage [2017/10/24(火) 07:14:59.91 ID:Ohc+APnW.net]
プロパンガス

600 名前:デフォルトの名無しさん mailto:sage [2017/10/24(火) 08:55:25.49 ID:TzjXrYm3.net]
パーフェクトグレイド

601 名前:デフォルトの名無しさん mailto:sage [2017/10/24(火) 11:04:02.33 ID:2qWQgTrR.net]
>>575>>577
>>574はvbsウィルスの一部だよ
つまりワクチンソフトに引っかかるとこのログが検疫されるので注意

602 名前:デフォルトの名無しさん mailto:sage [2017/10/24(火) 21:14:43.61 ID:6ceRFBNE.net]
>>581
さんくす。

603 名前:デフォルトの名無しさん [2017/10/25(水) 20:13:14.36 ID:gieh1Z5o.net]
お題
())())のように括弧のみからなる文字列が与えられるので
すべての括弧が正しく対応付けされるためには
最低で何箇所の括弧を逆向きに変更すればよいか求めよ
例えば上の例では2文字目か3文字目を変更すればよいので1を出力せよ
何文字変更しても正しく対応付けできない場合は-1を出力せよ

) -> -1
())()) -> 1
)()()( -> 2
)))((( -> 4
(())())((())(()( -> 3
())((())()))()(((()))()((((((((()()(())) -> ?

604 名前:デフォルトの名無しさん mailto:sage [2017/10/25(水) 21:21:26.00 ID:/TQ9iqwZ.net]
>>583 Java
https://ideone.com/Oca2HR

605 名前:デフォルトの名無しさん [2017/10/26(木) 00:42:38.67 ID:0Gn/TXrF.net]
>>583
Ruby
https://ideone.com/wQA5TN



606 名前:デフォルトの名無しさん mailto:sage [2017/10/26(木) 07:09:40.17 ID:vEkFybta.net]
>>583
https://ideone.com/OkCwgQ
C++。効率とかショートコーディングとかそういうものをかなぐり捨ててべた書き。
あってるかな?

607 名前:デフォルトの名無しさん mailto:sage [2017/10/26(木) 08:33:36.44 ID:8oLfrbud.net]
おむ

608 名前:デフォルトの名無しさん mailto:sage [2017/10/26(木) 08:35:57.56 ID:8oLfrbud.net]
誤爆
>>583 Ruby

def calc str
return -1 if str.size.odd?
ary = optimise str.scan(/(?=.)(\(*)(\)*)/).map{|a, b| a.size - b.size}
(-ary[0] + ary[1].to_i).abs/2 + ary[0]%2
end

def optimise ary
a = ary.reject(&:zero?).chunk(&:positive?).to_a.transpose[1].map(&:sum)
return a if a.size < 3
a.unshift(0) if a[0] < 0
optimise a.each_slice(2).map(&:sum)
end

STR = %w{
)
())())
)()()(
)))(((
(())())((())(()(
())((())()))()(((()))()((((((((()()(()))
}

STR.each{|s| puts "%s -> %d"%[s, calc(s)]} #=>
) -> -1
())()) -> 1
)()()( -> 2
)))((( -> 4
(())())((())(()( -> 3
())((())()))()(((()))()((((((((()()(())) -> 5

609 名前:デフォルトの名無しさん mailto:sage [2017/10/26(木) 19:12:02.71 ID:MqWL4ZqL.net]
>>583 ruby
https://ideone.com/jGTfL3

610 名前:デフォルトの名無しさん mailto:sage [2017/10/27(金) 22:31:59.57 ID:sfTuRN3o.net]
>>583
@Mathematica

https://ideone.com/19n4r2

611 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 00:05:20.36 ID:4+O3ouw4.net]
Quineの派生ということで、コードそれ自身を反転させたものを出力せよ
反転とは文字列"abc\ndef"を"fed\ncba"にすること

612 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 01:52:41.37 ID:P09Vk2Mx.net]
数列 6,66,666,6666,66666.....
これをダミアン数列と呼ぶことにしましょう

nを自然数としたときn^n(^はべき乗)の桁数(10進数で)が
ダミアン数列のどれかになることはあるか?
初歩的な計算で7^7=823543が6桁になることがわかります

問 このような不吉な数は
    7のみである
    有限個存在する
    無限に存在する

ここまで書いてみたけどこの問題だとプログラミングのお題じゃないね
数論で解けるのかなあ?

改めてお題
ダミアン数列の最初の10項につながる不吉な自然数はあるか、あるとすれば
その数はいくつ

613 名前:

力技では時間が掛かりすぎると思うので工夫してみてください
[]
[ここ壊れてます]

614 名前:デフォルトの名無しさん [2017/11/04(土) 03:18:31.96 ID:RXqoYVvx.net]
意味不明

615 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 03:39:51.41 ID:pxF/c+yt.net]
>>591
https://ideone.com/1bQnxO
C++。VCオンリー。
ウニコード対応しようと思って色々やってたけど、なんかうまくいかねー。
一応VCではうまくいってるっぽいけど、GCCと共通のコードはまだ規格的にきつそうだ。
うへー。大変だったわ。やっぱ、文字列は鬼門。



616 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 04:34:35.38 ID:tUO6oLmA.net]
>>592 Java
https://ideone.com/furdsD

617 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 08:04:59.76 ID:bqd73Ayh.net]
>>591 Squeak/Pharo Smalltalk

thisContext method getSource reversed allButLast: 8

"=> '8 :tsaLtuBlla desrever ecruoSteg dohtem txetnoCsiht' "

618 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 10:09:48.41 ID:VZ1zDZPp.net]
>>591 ruby
https://ideone.com/k9nGSp

619 名前:デフォルトの名無しさん mailto:sage [2017/11/05(日) 14:54:08.02 ID:rWIlHQ+T.net]
>>597 ruby
d="]esrever.d,d[%'d=p%;s%' stup";puts '%s;%p=d'%[d,d.reverse]
#=> ]esrever.d,d[%'d=p%;s%' stup;"puts '%s;%p=d'%[d,d.reverse]"=d

620 名前:デフォルトの名無しさん mailto:sage [2017/11/05(日) 14:54:35.06 ID:rWIlHQ+T.net]
安価ミスったorz

621 名前:デフォルトの名無しさん mailto:sage [2017/11/05(日) 22:47:04.05 ID:Pt23fyK7.net]
>>595
2で割らずにシフトしてたり芸が細かいですな

622 名前:片山博文MZ mailto:sage [2017/11/07(火) 23:38:24.35 ID:BS6pey7a.net]
お題。ツイッターのフォロワーを使ってお金を稼ぐ具体的な方法を思い付く限り列挙せよ。

623 名前:デフォルトの名無しさん mailto:sage [2017/11/07(火) 23:48:06.18 ID:aP9yM4om.net]
やだ。

624 名前:デフォルトの名無しさん mailto:sage [2017/11/08(水) 00:39:27.61 ID:z/y1zyUv.net]
プログラミングに関係ないお題は却下

625 名前:デフォルトの名無しさん [2017/11/08(水) 20:48:53.00 ID:XbOytUUT.net]
片山博文MZってコジキなのか?



626 名前:デフォルトの名無しさん mailto:sage [2017/11/13(月) 00:48:07.30 ID:PHmyYrtX.net]
コジキっていうか、頭の弱い子

627 名前:デフォルトの名無しさん mailto:sage [2017/11/14(火) 21:49:31.73 ID:yEmE0LhS.net]
コード中でa-zA-Z0-9の文字を一切使わずに
Hello World!!
と出力せよ。
"!"の後ろの改行の有無は問わない。

628 名前:デフォルトの名無しさん mailto:sage [2017/11/14(火) 22:13:39.71 ID:1d5ZohBo.net]
>>606 whitespace

629 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 00:12:32.03 ID:ckRbh5hb.net]
前にも見たなぁ。

630 名前:デフォルトの名無しさん [2017/11/15(水) 00:21:09.60 ID:edbITJRa.net]
>>606
それじゃプログラム組めないと思うんだが、記号だけの言語みたいなの使えってこと?

631 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 00:30:14.08 ID:au/IFdC5.net]
>>606 bhnjdsbkjdsb
_

632 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 00:31:44.60 ID:ckRbh5hb.net]
iostreamがすでにアウト。

633 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 01:21:11.75 ID:f03ykBDy.net]
>>606

634 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 01:21:50.26 ID:f03ykBDy.net]
>>606 Ruby
https://ideone.com/z4vm4F
perlとjavascriptでも殆ど同じことができる

635 名前:デフォルトの名無しさん [2017/11/15(水) 01:23:33.97 ID:0AqsUHvD.net]
今日は七五三ということで
7,5,3,+,-,×,÷,(),^2を使った式(ただし7,5,3は一個しか使えない)で1から連続でいくつまで数を作れるか

1=3+5-7
2=5-3
3=3
4=(5-3)^2
5=5
6=(7-5)×3




636 名前:デフォルトの名無しさん [2017/11/15(水) 06:25:11.32 ID:21MTGrxx.net]
^2 もありですか

637 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 11:19:06.80 ID:+wQkBp8E.net]
>>613
回答見てもわからない
どういうこと?

638 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 11:36:08.43 ID:cnBo ]
[ここ壊れてます]

639 名前:JhFE.net mailto: >>606
Ruby で、

unpacked = "Hello World!!".unpack("c*")
p unpacked
#=> [72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33, 33]

packed = unpacked.pack('c*')
puts packed
#=> Hello World!!
[]
[ここ壊れてます]

640 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 11:46:46.76 ID:f03ykBDy.net]
>>616
特殊変数$$から1を作ってそれをもとに2, 4, 8, 16などを作る
"%c"を繰り返したものをあらかじめ作っておき
そこに上記の数字で作った"Hello World!!"の文字コードをsprintフォーマットする
標準出力を表す特殊変数$>に<<メソッドでできた文字列を出力する

あとは 「"" << 文字コード」で「文字コード.chr」と同様の結果が得られるので適宜利用すると便利

641 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 12:14:35.50 ID:GYwcr8MQ.net]
>>617の間抜けさ加減に草

642 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 13:25:57.72 ID:YypYHZ3m.net]
>>614
^2 は
int sqr(int n){return n*n;}
みたいな関数が使えるって意味だよね

つまり、
x^2^2 とかは (x^2)^2 の意味で使うなら可能ってことだよね

643 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 13:32:50.33 ID:+wQkBp8E.net]
>>618
記号で1を作って、数値、文字コード、文字列としてくのか
いろんな省略記法も知らないとできないな
解説ありがとう

644 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 19:03:12.96 ID:vzgZy9E8.net]
>>614
5と3を繋げて53にするようなこともしていいの?

645 名前:デフォルトの名無しさん mailto:sage [2017/11/16(木) 00:18:43.09 ID:/xRbPsNU.net]
計算部は書いたけど、元の表記で何算してるか表記するのが面倒だ。
あと、遅い・・・。



646 名前:デフォルトの名無しさん [2017/11/16(木) 00:24:47.24 ID:IIofg8Am.net]
73/5=14とかは駄目だよね?

647 名前:デフォルトの名無しさん mailto:sage [2017/11/16(木) 01:59:04.45 ID:/xRbPsNU.net]
>>614
https://ideone.com/k7hAtB
C++。
それとなく書いてみたけど、誤差でまくり。割り算鬼門すぎる。
多分バグってる。あと、題意理解してない可能性が微レ存。

648 名前:デフォルトの名無しさん mailto:sage [2017/11/16(木) 02:00:39.12 ID:/xRbPsNU.net]
あ、そうだ。
カッコの処理がバグバグだったからカッコ使わなかった。

649 名前:デフォルトの名無しさん mailto:sage [2017/11/16(木) 02:11:42.94 ID:/xRbPsNU.net]
うーむ・・・。なんていうか。。。
ギブアップだ。Orz

650 名前:デフォルトの名無しさん mailto:sage [2017/11/16(木) 11:38:12.54 ID:clS3oGAP.net]
>>625
「題意理解してない可能性が微レ存」どころじゃねえだろこれww

651 名前:デフォルトの名無しさん mailto:sage [2017/11/16(木) 14:11:34.74 ID:9+S8V57k.net]
整数の範囲でも有理数の範囲でも答えが変わらないからつまらん

一旦非整数を経由しないと作れないのがないとやっぱり...

652 名前:デフォルトの名無しさん mailto:sage [2017/11/16(木) 15:03:27.99 ID:/xRbPsNU.net]
>>628
可笑しいところ教えて!

653 名前:デフォルトの名無しさん mailto:sage [2017/11/16(木) 15:46:11.61 ID:9+S8V57k.net]
(3^2)^2 = 3^4
((3^2)^2)^2 = 3^8
だから、3^(2*3) とかやっちゃダメだろ

あと、
3×5÷7 = 15÷7 ≠ 2

654 名前:デフォルトの名無しさん mailto:sage [2017/11/16(木) 15:59:11.96 ID:/xRbPsNU.net]
>>631
あー、俺がタコでした。
まぁ、前段は表示系の問題だと思うお。
後者は割り算が全部悪い。
浮動小数で比較したくないんだよなぁ。悩ましい。

655 名前:デフォルトの名無しさん mailto:sage [2017/11/16(木) 16:39:35.92 ID:9+S8V57k.net]
有理数クラスを作るのだ



656 名前:デフォルトの名無しさん mailto:sage [2017/11/16(木) 17:43:36.30 ID:/xRbPsNU.net]
有理数の法則がよくわかってないし、デカイ。
ままならんなー。

657 名前:デフォルトの名無しさん mailto:sage [2017/11/16(木) 18:03:35.37 ID:9+S8V57k.net]
(a/b) + (c/d) = (ad + bc) / bd
(a/b) - (c/d) = (ad - bc) / bd
(a/b) * (c/d) = ac / bd
(a/b) / (c/d) = ad / bc
(a/b) = (c/d) <===> ad = bc

分子 : 整数
分母 : 0以外の整数

658 名前:デフォルトの名無しさん mailto:sage [2017/11/16(木) 21:25:39.77 ID:/xRbPsNU.net]
数学ムズイ。。。
PGも算数で解いてるからな。

659 名前:デフォルトの名無しさん mailto:sage [2017/11/17(金) 00:16:40.63 ID:5DUWZGJy.net]
紙とペ

660 名前:ンで考えてみたところ
0以外の任意の整数なら3,5,7で表わせるから問題として不適なのでは?
[]
[ここ壊れてます]

661 名前:デフォルトの名無しさん mailto:sage [2017/11/17(金) 00:20:03.76 ID:M2EFWWXH.net]
17

662 名前:デフォルトの名無しさん [2017/11/17(金) 10:03:52.61 ID:oe8UBfUe.net]
>>637
3,5,7は1回までって回数制限があるから
表せる数は限られるよ。

663 名前:デフォルトの名無しさん mailto:sage [2017/11/17(金) 10:44:12.02 ID:a6b9gyRQ.net]
17が出来ない

664 名前:デフォルトの名無しさん mailto:sage [2017/11/17(金) 19:35:00.15 ID:5DUWZGJy.net]
ああ、本当だ。17はどうやっても作れないね
しかしこれをどうやってコードで計算すんだろう
^2があるから全探査はできないし
自分は「+または-」をいくつ使うかで場合分けして一個一個可能性を消していったんだけれども

665 名前:デフォルトの名無しさん mailto:sage [2017/11/17(金) 20:04:40.56 ID:M2EFWWXH.net]
コードはアップしないけど出来たよ



666 名前:デフォルトの名無しさん mailto:sage [2017/11/17(金) 20:07:16.14 ID:M2EFWWXH.net]
独自有理数クラス

演算回数を1回ずつ増やしていって、
出来た値に対応するフラグをセット

667 名前:デフォルトの名無しさん mailto:sage [2017/11/17(金) 20:09:06.68 ID:M2EFWWXH.net]
数値をstd::multisetで保持
演算n回目のmultisetをstd::setで保持

668 名前:デフォルトの名無しさん [2017/11/18(土) 17:51:34.79 ID:6foiYhRZ.net]
ABC4D
-E3FG
-----
77777

A〜G は、1〜9 の異なる数字。
ただし、3, 4 ではない

669 名前:デフォルトの名無しさん mailto:sage [2017/11/18(土) 17:56:36.72 ID:R4dFDjUs.net]
はい、そうですか。

670 名前:デフォルトの名無しさん mailto:sage [2017/11/18(土) 19:08:28.21 ID:8fhXEikQ.net]
>>645 Java
2年前の問題と俺の回答
peace.2ch.net/test/read.cgi/tech/1429195275/451

を改造したもの (50-54行目と標準入力)
https://ideone.com/2chU62

671 名前:デフォルトの名無しさん mailto:sage [2017/11/18(土) 19:44:36.57 ID:oFg54zrO.net]
>>645 Ruby
f = ->a, b, c, d, e, f, g{10000*a + 1000*b + 100*c + d - (1000*e + 10*f + g) == 78037}
[1, 2, 5, 6, 7, 8, 9].permutation{|a| puts "%d%d%d4%d - %d3%d%d == 77777" % a if f[*a]}
#=>87142 - 9365 == 77777

672 名前:デフォルトの名無しさん mailto:sage [2017/11/18(土) 20:40:01.77 ID:6foiYhRZ.net]
>>647
何も、そこまで作り込まなくても良いだろw

色々な覆面算に対応するため、汎用的に書いたのか

673 名前:デフォルトの名無しさん [2017/11/19(日) 22:39:02.74 ID:oda4btU4.net]
500, 100, 50, 10, 5, 1円のすべての種類の硬貨を、1枚以上使って、
合計15枚で750円にする時、10円硬貨は何枚になるか?


A〜E の5人のランナーが走った結果、
完走したのは、1着とべべの2人で、残りの3人は、途中で棄権した

ここで、完走した2人は、必ず真実を言い、
棄権した3人は、必ず嘘をつくものとする
(つまり、事実に対して、真偽値を取る)

A: D は棄権した
B: A は、べべだった
C: E は棄権した
D: C は、べべだった
E: B は完走した

A〜Eがこのように答えた時、1着は誰か?

674 名前:デフォルトの名無しさん mailto:sage [2017/11/20(月) 01:25:03.39 ID:Z32/GYkn.net]
先に答えやそれに至る式がわかっててコードに書き直すだけになっちゃうから
数学的に道筋立てて答えが出せるものはあんまりおもしろくないんだよな

675 名前:デフォルトの名無しさん mailto:sage [2017/11/20(月) 03:34:46.27 ID:GkhyFhEh.net]
アルゴリズムとは、数式の完全コピー

最初に、数式を考えて、その数式が間違っていれば、
撃墜モードでは、そこを突かれて撃墜される

結局、数式の証明が大事。
証明に、勘違いが無いかどうか



676 名前:デフォルトの名無しさん mailto:sage [2017/11/20(月) 11:24:27.08 ID:7i/OQPcC.net]
べべってなんぞ?

677 名前:デフォルトの名無しさん mailto:sage [2017/11/20(月) 11:38:36.82 ID:OJcNabXy.net]
>>653
たぶんこの場合は大阪の方言

678 名前:デフォルトの名無しさん mailto:sage [2017/11/20(月) 11:45:30.45 ID:7i/OQPcC.net]
俺地方の人間だからわかんない。

679 名前:デフォルトの名無しさん mailto:sage [2017/11/20(月) 18:24:16.80 ID:Slkhafwt.net]
べべって最下位のことじゃないか
どべ

680 名前:デフォルトの名無しさん [2017/11/21(火) 23:50:05.58 ID:zUV8sDjk.net]
>>645
こんなのどうかな。Kotlin で作った。
https://paiza.io/projects/ObrsYN_Z7G44yy-pOlZh_Q

681 名前:デフォルトの名無しさん [2017/11/23(木) 10:05:44.85 ID:zWeuVerg.net]
お題
1から99を表示する
お題:1から999を出力する

ただし0を含む数は除く

682 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 10:11:40.40 ID:TrZHjzbP.net]
>>658
1000.times{|i|p i unless i.to_s[?0]}

683 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 12:15:31.91 ID:6AL/1aep.net]
>>658 GNU Smalltalk

1 to: 999 do: [:n | (n asString includes: $0) ifFalse: [n displayNl]]

684 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 12:38:42.26 ID:KUvGqrz8.net]
>>658 F#

let () = seq { 1..999 } |> Seq.iter (printfn "%d")

685 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 12:40:24.86 ID:KUvGqrz8.net]
>>661
すまん、問題よく読んでなかった・・・



686 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 13:30:23.43 ID:jBvfUrCY.net]
>>658
https://ideone.com/unKY2z
C++。ほかの言語だと一行で書けるんだけどなぁ。
まぁ過去に比べれば大分短くなったけど。

687 名前:デフォルトの名無しさん [2017/11/23(木) 15:45:02.09 ID:ys+VuKpG.net]
>>658
文字も数もその場に合わせて適当に解釈してくれる言語だと楽だね。
perl だとこれでできる。

for(1..999){print"$_\n"unless(/0/)}

688 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 16:16:10.88 ID:JcpJJmmU.net]
>>658
@Mathematica

nListWithoutZero[n_]:=n//
 Range[1,#]&//
 Map[ToString,#]&//
 StringCases[#,RegularExpression["^(?!.*0).*$"]]&//
 Flatten;

In[1] := nListWithoutZero[999]
Out[1] = (略)

689 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 16:34:54.15 ID:2sNCCDGP.net]
>>658
ダメだお題の意味がわからん
降参

690 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 16:42:00.54 ID:QTAUjuBR.net]
>>658 rust
https://ideone.com/NFrvi7
fn main() {
println!("{:?}", (1..1000).filter(|i| !i.to_string().contains("0")).collect::<Vec<_>>())
}

691 名前:デフォルトの名無しさん [2017/11/23(木) 16:46:25.38 ID:ys+VuKpG.net]
>>658
Kotlin で文字列変換してやる場合

fun main(args: Array<String>) {
 for (i in 1..999)
  if (! i.toString().contains('0', false))
   println(i)
}

数値のままやる場合

fun main(args: Array<String>) {
 for (i in 1..999)
  if (i % 10 != 0
     && (i < 10 || i / 10 % 10 != 0)
     && (i < 100 || i / 100 % 10 != 0))
    println(i)
}

692 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 17:05:13.53 ID:fGVRHt7J.net]
>>658
>>668 同じく数値のままやる場合
https://ideone.com/xySZgM

693 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 17:08:37.18 ID:fGVRHt7J.net]
rio2016.2ch.net/test/read.cgi/math/1510671832/722
お題:
n^2-1 = m^5
を満たす自然数 n, m は存在するか?

存在するという人と存在しないという人の両方が存在します

694 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 17:18:38.32 ID:TrZHjzbP.net]
>>670
(n, m) = (1, 0)
揚げ足取りはおいておいて、プログラミングで説く問題じゃないよね

695 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 18:35:09.23 ID:zveldNvP.net]
>>658
python

今回は必要ないかもだけど桁数増えた場合を考え再帰で
https://ideone.com/WC8Ksm



696 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 19:09:48.15 ID:fGVRHt7J.net]
>>671
まあ自明な解はさておき、その他は見つからないのが不思議です

697 名前: []
[ここ壊れてます]

698 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 20:21:54.46 ID:/mQ4CZGQ.net]
>>673
カタラン予想ですでに存在しないことが証明されているのに何が不思議なのかね

699 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 20:24:10.50 ID:hjkeK8jf.net]
>>673
その問題は数学的に解くものではないかな?
まあ、コンピュータなら力業でかなりの値を n, m に入れて計算して確認できるけどさ。

700 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 20:56:22.87 ID:fGVRHt7J.net]
>>674
カタラン予想というのがあるんですね、ありがとうございます!
https://en.wikipedia.org/wiki/Catalan%27s_conjecture

701 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 21:05:28.66 ID:uF7hi9HH.net]
>>658
#!/bin/sh
seq 999|grep -v 0

702 名前:668 [2017/11/24(金) 06:21:36.98 ID:8wyGH9pr.net]
>>658
Kotlin数値判定版。こんな風にも書けるなと後で気づいた。

fun f(n: Int): Boolean {
 var m = n;
 while (m != 0) {
  if (m % 10 == 0)
   return false
  m = m / 10
 }
 return true
}

fun main(args: Array<String>) {
 (1..999).filter(::f).forEach(::println)
}

703 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 07:42:25.55 ID:MEHEP0+e.net]
存在するしないをプログラミングで証明するのはお題として良くない

704 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 20:42:02.54 ID:G34PGfZh.net]
log 2 を2進数表記した時の小数点第 n 位から n + 9 位までを求めよ. (1 ≦ n ≦ 10^10)
cf. log 2 = 0.10110001...

*Sample input*
1
11
10000
31415926
314159265

*Sample output*
1011000101
1100100001
0010110110
1001010110
0111101001

705 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 23:31:00.22 ID:r53+zpq0.net]
>>680
c++で書いたけど小数第100億位を計算するのに5時間くらいかかりそうorz



706 名前: mailto:sage [2017/11/25(土) 00:04:03.20 ID:ROI3Hzdd.net]
>>681
もう初手に届くとは劇速ですね

707 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 06:53:37.62 ID:Uo3oYb2P.net]
無条件でlogって書いたら普通自然対数だろ

708 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 07:01:13.88 ID:Uo3oYb2P.net]
ライブラリを使えばほとんど何も書かなくて良いけど
どこから書くことを求められてるの?

709 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 07:03:54.53 ID:Uo3oYb2P.net]
>>679
「良くない」じゃなくて「出来ない」でしょ

710 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 07:16:55.64 ID:Uo3oYb2P.net]
>>684
と思ったけど、普通に全桁計算したら終わらないな

711 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 07:34:12.57 ID:Uo3oYb2P.net]
Σ { 1 / (2^i × i) }
を使って10^10項位までを42bitくらいだけ計算すれば出来るかな?
1/nの周期性を考えないと計算量的に無理?
10^10が微妙に32bitを越えてるのがイヤだねえ

712 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 08:21:38.07 ID:Uo3oYb2P.net]
>>687
ダメだ
ざっと計算量を見積もったらとても5時間じゃ終わらない

713 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 13:10:34.24 ID:l6j6CjYT.net]
>>375
xxx@xxx-VirtualBox:~/casl$ casl -s -e -i stdlib.casl -i bigint.casl fact.casl
1
1
2
6
24
120
720
5040
40320
362880
          途 中 省 略
1405006117752879898543142606244511569936384000000000
60415263063373835637355132068513997507264512000000000
2658271574788448768043625811014615890319638528000000000
119622220865480194561963161495657715064383733760000000000
5502622159812088949850305428800254892961651752960000000000


714 名前:258623241511168180642964355153611979969197632389120000000000
12413915592536072670862289047373375038521486354677760000000000
608281864034267560872252163321295376887552831379210240000000000
30414093201713378043612608166064768844377641568960512000000000000

暇つぶしに書いてみたけど足算掛算割算しかできない
引算は難しすぎるんで諦めた
[]
[ここ壊れてます]

715 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 16:35:37.76 ID:J1zvm3XW.net]
バイナリ法で最適化した結果なんとか1時間あれば10^10位は計算できるようになったがまだ縮められるかな



716 名前: mailto:sage [2017/11/25(土) 16:41:37.19 ID:ROI3Hzdd.net]
備忘メモ
rio2016.2ch.net/test/read.cgi/math/1510671832/890
ちゃんとお題にして出題しなおします

717 名前: mailto:sage [2017/11/25(土) 21:49:51.82 ID:ROI3Hzdd.net]
>>680
指数関数のマクローリン展開で試してみたのですが、これは収束が遅すぎますね、それに収束半径を超えてるし…
なにか収束の早いよい方法はないものか…

718 名前: mailto:sage [2017/11/25(土) 21:54:37.24 ID:ROI3Hzdd.net]
>>692
×指数関数
○対数関数

719 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 22:58:19.91 ID:yyAYDlfh.net]
対数関数のマクローリン展開?
そりゃ無理だ
log 0 が定義されてない

720 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 23:12:41.85 ID:FRsJtlII.net]
>>689
CASLで書いたの?
ソースコードは?

721 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 23:38:41.06 ID:yyAYDlfh.net]
>>680
log 2 = Σ_[i=1, 2, ...] { 1 / (2^i × i) }
冪剰余

でいける気がしてきた

しばらく暇がない
時間が空いたら
アセンブラ & C++ & OpenMP
でやってみる

722 名前:デフォルトの名無しさん [2017/11/26(日) 02:33:02.82 ID:T275kIwU.net]
>>650
(setq aaa '(1 5 10 50 100 500))
(setq ddd 750)
(setq jjj 15)

(defun bbb (ccc iii)
(if (= iii 0)
ccc
(let (eee)
(dolist (fff ccc)
(dolist (ggg aaa)
(when (<= (+ (apply #'+ fff) ggg) ddd)
(push (cons ggg fff) eee))))
(bbb (remove-duplicates (mapcar (lambda (x) (sort (copy-seq x) #'<)) eee) :test 'equal) (1- iii)))))

(let* ((kkk (bbb '((0)) jjj))
(lll (mapcar (lambda (x) (remove 0 x)) kkk)))
(remove-if-not (lambda (x) (and
(= (apply #'+ x) ddd)
(= (length x) jjj)
(= (length (remove-duplicates x)) (length aaa))
)) lll))
((1 1 1 1 1 5 5 5 10 10 10 50 50 100 500))

723 名前:デフォルトの名無しさん [2017/11/26(日) 02:34:12.86 ID:T275kIwU.net]
>>650
(setq aaa '(A B C D E))

(defun fff (ddd)
(if (null (cdar ddd))
ddd
(let (eee)
(dolist (jjj ddd)
(let ((bbb (car jjj))
(ccc (cdr jjj)))
(setq eee (append (mapcar (lambda (x) (cons (cons x bbb) (remove x ccc))) ccc) eee))))
(fff eee))))

(defun iii (kkk)
(if (< kkk 2) #'identity #'not))

(let* ((ggg (fff (list (cons nil aaa))))
(hhh (mapcar (lambda (x) (car x)) ggg)))
(remove-if-not (lambda (x) (and (funcall (iii (position 'A x)) (> (position 'D x) 1))
(funcall (iii (position 'B x)) (= (position 'A x) 1))
(funcall (iii (position 'C x)) (> (position 'E x) 1))
(funcall (iii (position 'D x)) (= (position 'C x) 1))
(funcall (iii (position 'E x)) (< (position 'B x) 2)))) hhh))
((D C B E A) (D C E B A) (D C A E B) (D C E A B) (D C A B E) (D C B A E))

724 名前: mailto:sage [2017/11/26(日) 11:18:11.00 ID:rNgJnhxq.net]
>>694
いやいや
https://ja.wikipedia.org/wiki/%E5%AF%BE%E6%95%B0
log(1-x) = - Σ((1/n)x^n) に x = -1 を機械的に代入しました、収束半径外ですが、この値は正しいらしい。

725 名前:デフォルトの名無しさん [2017/11/26(日) 12:12:20.72 ID:ffy1o2uq.net]
お題
ASCIIコード表が載っている



726 名前:{をあげよ []
[ここ壊れてます]

727 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 12:35:31.87 ID:tJzac9f2.net]
>>695
うんCASL
全部で1200行かあ
xxx@xxx-VirtualBox:~/casl$ wc -l stdlib.casl bigint.casl fact.casl
274 stdlib.casl
851 bigint.casl
76 fact.casl
1201 合計

ソースはこういうのが延々続いててずっと眺めてるとゲシュタルト崩壊起こして
何が何だか分からなくなるよ
ld gr5,0,gr1
ld gr6,1,gr1
lad gr4,4,gr1
addl gr4,gr0
st gr4,0,gr1
st gr6,1,gr1
ld gr4,=1
st gr4,2,gr1
st gr0,3,gr1
ld gr6,gr1
ld gr1,0,gr1
st gr5,0,gr1
st gr6,1,gr1
xor gr4,gr4
st gr4,2,gr1
lad gr2,-4,gr2
subl gr2,gr0
st gr2,3,gr1
ld gr0,gr3

728 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 12:35:43.37 ID:WgExDItE.net]
>>699
他だ単に対数って言えば
log x のこと
これをマクローリン展開は無理

log (1-x) のマクローリン展開ならそう書かないと通じない
収束半径の外じゃなくて、収束半径丁度でしょ

729 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 12:49:31.90 ID:WgExDItE.net]
-log (1-x) のマクローリン展開に、
x = 1/2 を入れると
>>696 になる

730 名前:デフォルトの名無しさん [2017/11/26(日) 13:21:30.43 ID:jiBTwXK4.net]
理解はしてないが、出てきたので貼っとく。



指数対数関数等の超越関数の多倍精度計算

本論文では、 指数対数関数の高精度計算として Taylor 展開に BSA 法を使って高速化する方法提案する。
約 1000 桁以下の精度の計算では、 Taylor 展開を使った計算が Sasaki and Kanada[5] によって、様々な計算
法を比較して最も高速であることが示されているので、 計算時間が問題となるのは、 1000 桁以上の精度の
計算である。 ここで提案した Taylor 展開に BSA 法を適用して高速化した方法と Sasaki and Kanda によっ
て提案された方法を 1000 桁を超えた精度で比較し、 その高速性を示した。

211 階乗計算例
10000! の計算を行う。 この計算では、 BSA 法を使うだけでなく、 1600 桁以上の数値に対しては FFT を利用して乗算を行っている。
計算方法 計算時間(msec)
BSA 47
従来の方法 3578

このほか、 三角関数、逆三角関数、双曲線関数など簡単な規則で各項の係数が表現でき、 多くの関数がこの
行列の乗算形式に変形できます。Taylor 展開の係数が簡単な規則で表現できない $\tan x$ が例外的に表現できないだけである。

3 まとめ
指数関数や対数関数の Taylor 展開に BSA 法を適用することによって、 BSA を使わない従来の方法に比べ40 %程度の高速化ができた。
対数関数に対しては、 5000 桁程度の精度で最も高速な計算方法として知られた Sasaki and Kanada の方法を超えることを示した。

www.kurims.kyoto-u.ac.jp/~kyodo/kokyuroku/contents/pdf/1456-24.pdf

731 名前: mailto:sage [2017/11/26(日) 13:37:36.96 ID:rNgJnhxq.net]
>>702
たしかに

収束半径は |x < 1| なのでは?

732 名前:デフォルトの名無しさん [2017/11/26(日) 13:44:48.59 ID:jiBTwXK4.net]
とりあえず理解はできた計算方法として、logxの近似値などをaとおいたとき、
logx = a + log(x/e^a)という変形を用いる方法だ。
aが近似値だと、x≒e^aなので良いらしい。

733 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 13:58:53.69 ID:WgExDItE.net]
>>705
収束半径は1
収束半径は、収束するエリアと収束しないエリアの境目となる円の半径
収束半径丁度の時は収束する場合もあるししない場合もある

734 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 14:20:52.91 ID:WgExDItE.net]
>>706
計算する項が少なければ良いわけではなく、
各項の計算時間も重要

735 名前:デフォルトの名無しさん [2017/11/26(日) 15:04:05.33 ID:jiBTwXK4.net]
exp(x)は、(exp(x/k))^k (kは2ベキ)、とするといいらしい。
k=2なら、括弧内を計算したやつ同士



736 名前:の掛け算。 []
[ここ壊れてます]

737 名前:695 mailto:sage [2017/11/26(日) 18:33:11.28 ID:XHzckn9a.net]
>>701
なるほどありがとう
怖いもの見たさがあった

738 名前: mailto:sage [2017/11/26(日) 20:54:13.61 ID:rNgJnhxq.net]
>>689
えへへ、調べさせてもらったよw
後半は 42! から 50! までの値だね
この範囲なら、多数桁×ワンレジスタの計算で済みますね

多数桁×多数桁を実装すれば思いっきり褒めてあげるよ、えへへ:−)

739 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 21:11:54.45 ID:tJzac9f2.net]
>>711
ほい
xxx@xxx-VirtualBox:~/casl$ casl -s -e -i stdlib.casl -i bigint.casl bimul.casl
350306543997676425792
153864088327713953064
53899597027434699691252340823058767026688

740 名前: mailto:sage [2017/11/26(日) 21:47:36.23 ID:rNgJnhxq.net]
>>712
おお、すごい、gmp で確認したがあってるぞ
私はまだ 10進文字列から多数桁型への変換は実装できていない、また仕事ができてしまったなあ

741 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 23:01:31.48 ID:tJzac9f2.net]
>>713
gmpで確かめてるのかあ
俺は確認はclispかrubyでやってるよ
10進文字列からの変換は10倍しながら足しこんでいくだけだから
そんなに難しくないでしょ
掛算なしでも(n<<3)+(n<<1)でできるし
逆の10進文字列への変換は割算が必要だから実装するの大変だったなあ
これができあがるまではメモリを16進ダンプして計算が合ってるか確かめてた

742 名前:デフォルトの名無しさん [2017/11/27(月) 06:49:43.60 ID:qqP20rnw.net]
>>696がよさげだな
こういうことだろ?

Σ(1/n) >> n
小数にもシフトを適用するとして。

和の誤差がかわかれば、どこまで計算したらいいかわかるがどうやるんだ?

743 名前:デフォルトの名無しさん [2017/11/27(月) 07:17:24.36 ID:qqP20rnw.net]
誤差しらべたら、テイラー展開は平均値の定理一般化だったか


数値計算とテイラー展開
ある区間において,関数 f(x)がn 回微分可能であるとし,定数aはこの区間に含まれるものとする.x もこの区間内に含まれるとき,
math-lab.main.jp/taylor07a.jpg
をみたすa とx の間の実数c (a <c <x または x <c <a)が存在する
math-lab.main.jp/taylor7.html

744 名前:デフォルトの名無しさん [2017/11/27(月) 07:40:30.25 ID:qqP20rnw.net]
log(1+x)の誤差項、剰余項は、(-1)^(n-1)/n * (x/(1+c))^n らしいので、
-log(1-x)では、1/n * (x/(1+c))^n か。
x=1/2で考えると、この項をなるべく大きくするならc=0で、誤差は(1/n) >> n以下か。ふたたびシフト使用。

745 名前:デフォルトの名無しさん [2017/11/27(月) 07:44:14.48 ID:qqP20rnw.net]
まとめると、
log2 - (Σ(1/k) >> k) < (1/n) >> n  (級数はn-1までの和)



746 名前:デフォルトの名無しさん [2017/11/27(月) 08:54:49.81 ID:qqP20rnw.net]
どこか間違えてる 次数か?

747 名前:デフォルトの名無しさん [2017/11/27(月) 08:59:59.63 ID:qqP20rnw.net]
いやあってるか。
A(k) = (1/k)>>kと置くと、
log2 - ΣA(k) < A(n) (級数はn-1までの和) で
ΣA(k) (n+1以上の和) < A(n) が成立するのか。

748 名前:デフォルトの名無しさん [2017/11/27(月) 10:11:23.24 ID:qqP20rnw.net]
やはり、どこか間違ってるな。
上のとおりだと、log2 - ΣA(k) (級数はn-1までの和)は、
A(n) を含むので、A(n)より小さいはずがない。

749 名前: mailto:sage [2017/11/27(月) 23:07:50.22 ID:b0u4s5jJ.net]
>>701
>ソースはこういうのが延々続いててずっと眺めてるとゲシュタルト崩壊起こして何が何だか分からなくなるよ
対象のコード書いてるときの「感覚」をハードディスクかどこかに貯めておいて、
必要に応じてまた脳みそに搭載できるようにならないものか…

そのマシン語の一行一行にも、もともとはなんらかの意味的構造があったのに、それが消えてしまうなんて損失以外のなにものでもないよね

750 名前:デフォルトの名無しさん mailto:sage [2017/11/27(月) 23:36:53.65 ID:bwTh4Bk9.net]
>>680

>>696の方法で作ってみました
n=10^10の時に48.3秒くらいです

751 名前:デフォルトの名無しさん mailto:sage [2017/11/28(火) 13:09:45.40 ID:IU/PYwM1.net]
>>723 はHaswell (4770) 3.4GHz固定での結果で
Skylake (6700K) 定格だと38.4秒でした

ちゃんとCPUも進化してるんですね

752 名前:デフォルトの名無しさん mailto:sage [2017/11/28(火) 13:17:18.48 ID:IU/PYwM1.net]
>>681
>>690
C++だとどうやって計算してるかが非常に気になります
32bitを越える値同士の乗算(結果が64bitを越える)部分

アセンブラだと
64bit x 64bit ===> 128bit
128bit / 64bit ===> 64bit
等があるのでそれを使っちゃってますが

753 名前:デフォルトの名無しさん mailto:sage [2017/11/28(火) 13:20:30.03 ID:IU/PYwM1.net]
冪剰余を求めるのに
(a * b) % c
みたいなのがたくさん出てきませんか?
aもbもcも32bitの範囲を微妙に越えてて

754 名前:デフォルトの名無しさん [2017/11/28(火) 14:44:32.26 ID:jzUFRHpN.net]
誤差部分の間違いが判った。これでよさげだ。
ただし誤差評価を荒くやってはダメそうだが。一番最後の行のところ。



誤差項ありのマクローリン展開は、0<=c<=xが存在して

f(x) = Σ x^k * f(k)(0)/k! (kは0からn-1まで) +  x^n * f(n)(c)/n!

f(x) = -log(1-x)のn次導関数は、(n-1)!/(1-x)^n。
このときマクローリン展開は誤差項は x^n / (n*(1-c)^n)

x=1/2ならば、c=1/2のとき最大で、1/n

755 名前:デフォルトの名無しさん [2017/11/28(火) 19:45:30.22 ID:jzUFRHpN.net]
これが収束速いようだ。


log(2) = 3log(81/80) + 5log(25/24) + 7log(16/15)

log((x+1)/(x-1))
= log((1+1/x)/(1-1/x))
= 2 Σ 1/((2n+1)*x^(2n+1))



756 名前:デフォルトの名無しさん mailto:sage [2017/11/28(火) 22:18:22.38 ID:7WoPw74F.net]
>>728
1/log(2) ≒ 3.32
1/2log(161)+1/2log(49)+1/2log(31) ≒ 0.85

なので、計算に必要な項数は1/4程度
でも、1つの項の計算には時間がかかる

log(1-x)のマクローリン展開に0.5を入れた物は
分母が i * 2^i だから速く計算できるのだ

757 名前:デフォルトの名無しさん mailto:sage [2017/11/28(火) 22:20:46.48 ID:7WoPw74F.net]
>>727
残りの項を等比数列と見なせば
簡単に誤差の上限が出ます

758 名前:デフォルトの名無しさん mailto:sage [2017/11/28(火) 22:47:09.33 ID:7WoPw74F.net]
>>724
Haswellで33.96秒に縮まりました
シングルスレッドだと182.54秒で5.3倍
HTTが効くということは、
まだ多少改善の余地がありそう

一番内側のループは
vmulpd
vmulpd
vroundpd
vfmsub213pd
vfmsub132pd
vsubpd
なんと浮動小数点で計算してます

759 名前:デフォルトの名無しさん mailto:sage [2017/11/28(火) 22:53:54.93 ID:7WoPw74F.net]
n=10000000000の時は
0000010101 でした
出題者さま、合ってます?


また、たまたまですが

n=10000000004では
0101010101

n=10000000005では
1010101010

になります

760 名前:デフォルトの名無しさん mailto:sage [2017/11/28(火) 23:30:15.70 ID:9HoDrqB3.net]
一番内側のループのコード
fast-uploader.com/file/7067434368942/

PORT5がガラ空きで、処理のほとんどがPORT0,PORT1
こんなんでもHTTが効く
やっぱり浮動小数点はレイテンシがデカい

AVX512になれば
レジスタの数が倍になるので
8パラにしてレイテンシを隠蔽出来るんだけど
もちろんレジスタ長が倍になる方が大きい

761 名前:デフォルトの名無しさん [2017/11/29(水) 13:17:33.09 ID:mHyZby47.net]
>>728は後半部分が間違ってるか。log((x+1)/x) = log(1+1/x) の展開を用いるのが正解で。

log(・)の中身を1に近づけた方が収束が早くなるが、
こういった分解 log(2) = 3log(81/80) + 5log(25/24) + 7log(16/15)はどうみつけるのか。
これは数値が(x+1)/x の形だけど、(x+1)/(x-1)の分解もあるのか。こっちだと計算するベキ項が一つ飛ばしにできる。>>728のように。

762 名前:デフォルトの名無しさん mailto:sage [2017/11/29(水) 13:34:57.75 ID:8/kTvoZy.net]
2 = (81/80)^3 * (25/24)^5 * (16/15)^7

3 と 5 の指数の合計が0になる組み合わせを検索すれば良い

763 名前:デフォルトの名無しさん mailto:sage [2017/11/29(水) 13:37:30.83 ID:8/kTvoZy.net]
log(81/80) = log(162/160) = log((161+1)/(161-1))

わかってて書いてるんだと思ったが
>>729のlogの中身はこの値

764 名前:デフォルトの名無しさん [2017/11/29(水) 13:42:05.17 ID:mHyZby47.net]
>>728はそういうことか。みつけたやつのコピペで、そのとき考慮はしてなかった。

765 名前:デフォルトの名無しさん [2017/11/29(水) 13:45:31.51 ID:mHyZby47.net]
指数も固定でなくていいはずで、
16/15よりかはたとえば1001/1000のほうが1に近いからそういうのはいくらでも見つけられるのかとおもった。



766 名前:デフォルトの名無しさん mailto:sage [2017/11/29(水) 14:44:26.09 ID:8/kTvoZy.net]
分母分子の素因数の数と同じ項数が必要

例えば素因数が 2, 3, 5, 7 の4種類の場合、
1個差もしくは2個差のペアを4個探す

例えば
126/125
225/224
2401/2400
4375/4374

これらを適当に掛け算して2^nになるようにすると
項が4個の式がみつかる

767 名前:デフォルトの名無しさん mailto:sage [2017/11/30(木) 00:31:43.08 ID:H4qIjcIH.net]
分母、分子とも 2, 3, 5, 7, 11, 13, 17 のみしか素因数を持たない形の場合、
以下が一番計算する項の数が少ないようです

log(2) = 72*log(126/125)+27*log(225/224)-19*log(2401/2400)+31*log(4375/4374)

768 名前:デフォルトの名無しさん [2017/11/30(木) 05:07:54.11 ID:fMs2N0Mh.net]
>>740
その数値を検索すると、音楽のコンマというのが出てくる。関係あったり理論があったりするのか。


A.D. Fokker: Unison Vectors and Periodicity Blocks
www.huygens-fokker.org/docs/fokkerpb.html

List of 7-prime limit accidentals - The?Sagittal?forum
forum.sagittal.org/viewtopic.php?f=6&t=252

769 名前:デフォルトの名無しさん [2017/11/30(木) 05:28:17.43 ID:fMs2N0Mh.net]
log(2)とは無関係で、単に一個差のやつで適当な素因数分解できるやつに名前がついてるだけ?



An Investigation into the Extraction of Melodic and Harmonic Features from Digital Audio

unit interval name
4375/4374 Ragisma
2401/2400 Breedsma
225/224 Septimal Kleisma
145/144 Difference between 29:16 and 9:5
126/125 Small Septimal Semicomma
121/120 Undecimal Seconds Comma
81/80 Syntonic Comma

scholar.sun.ac.za/handle/10019.1/100826

770 名前:デフォルトの名無しさん [2017/11/30(木) 11:02:35.16 ID:fMs2N0Mh.net]
log2のほうは、分子・分母の素因数分解が似通ってないと成立しないってことで、
音楽のほうは小さい素数に限定して一個差ペアを求めたと理解。
log2のほうは、共通の素数で大きいやつを最初に固定すれば考えれば、よさげかと。

771 名前:片山博文MZ mailto:sage [2017/11/30(木) 12:12:48.85 ID:NsMGt5if.net]
お題。横x[cm]、縦y[cm]の長方形のステンレスの1枚の板がある。この板からm枚の複数の長方形の部材を切り出す。
部材のサイズは配列で与えられる。
部材のサイズ(縦×横)はそれぞれだいたい決まっているが、1cm程度変わってもよい。
ただし、部材の縦または横が変わるとそれぞれ一点減点となる。
すべての部材を切り出すことができれば、減点がなるべく少ない方法の切り出し方法を出力せよ。
すべての部材を切り出すことができなければ、面積が広い順になるべくたくさん部材を切り出せ。

772 名前:片山博文MZ mailto:sage [2017/11/30(木) 12:19:33.84 ID:NsMGt5if.net]
テストデータ。

x=10, y=10,
{
{5, 10}, {2, 2}, {2, 2}, {4, 3}, {6, 5}
}

x=5, y=12
{
{2, 5}, {3, 3}, {2,9}, {3, 2}, {4,3}
}

773 名前:片山博文MZ mailto:sage [2017/11/30(木) 12:28:07.36 ID:NsMGt5if.net]
部材の縦と横は入れ替わってもよい。
可能ならば、切り出し方法をSVG形式で出力せよ。

774 名前:片山博文MZ mailto:sage [2017/11/30(木) 12:51:59.04 ID:NsMGt5if.net]
切り出し方法は、

切り出す部材のx座標、y座標、幅、高さ

のリストとして出力せよ。

775 名前:片山博文MZ mailto:sage [2017/11/30(木) 12:56:57.25 ID:NsMGt5if.net]
切り出しに余裕があるときは、なるべくx座標の大きい方、y座標の大きい方を残すようにせよ。



776 名前:デフォルトの名無しさん mailto:sage [2017/11/30(木) 13:08:21.37 ID:tkxPMdZc.net]
斜めもOK?

777 名前:デフォルトの名無しさん mailto:sage [2017/11/30(木) 13:08:55.87 ID:tkxPMdZc.net]
人間用のパズルで、斜めにしないと解けないのとかありそう

778 名前:デフォルトの名無しさん [2017/11/30(木) 14:23:24.17 ID:SHLZLl2M.net]
問題文の条件が“だいたい”“なるべく”なんて
あいまい表現だらけ

これでプログラミングの問題かよ

779 名前:片山博文MZ mailto:sage [2017/11/30(木) 16:18:01.24 ID:NsMGt5if.net]
斜めは考えなくてもよい。

訂正。
すべての部材を切り出すことができれば、減点が最小である切り出し方法を出力せよ。
すべての部材を切り出すことができなければ、面積が広い順に切り出せる部材の面積が最大になるよう部材を切り出せ。
切り出しに余裕があるときは、x座標の大きい方、y座標の大きい方を残すようにせよ。

780 名前:680 mailto:sage [2017/11/30(木) 17:10:37.24 ID:8ZVWPbH7.net]
>>732
そこにある3つとも正解です
当初は L = Σ1/(k*2^k) として
2^n * L の小数部分を愚直に求める方法を想定していました

781 名前:デフォルトの名無しさん mailto:sage [2017/11/30(木) 17:26:52.63 ID:r8WkgLop.net]
普通に多倍長で計算したら計算量的に終わらないですよね?
n=314159265を求めるのに
冪剰余は使ってますよね?

おそらく私も同じような方法と思います
FMA3命令とOpenMPで高速化してるだけで

782 名前:デフォルトの名無しさん mailto:sage [2017/11/30(木) 22:49:50.18 ID:TklDiPhy.net]
愚直という言い方は良く割りませんでしたね
仰る通り冪剰余は用います

783 名前:片山博文MZ mailto:sage [2017/12/01(金) 14:26:32.50 ID:fw1UFg83.net]
再出題。横cx[cm]、縦cy[cm]の長方形または正方形のステンレスの1枚の板がある。この板からm枚の複数の長方形または正方形の部材を切り出す。
m枚の部材のサイズは(縦, 横)の配列で与えられる。
すべての部材を切り出すことができれば、切り出し方法を出力せよ。切り出しが不可能ならば「impossible」と出力せよ。
切り出し方法は、
(部材インデックス、部材の一番左のx座標、部材の一番上のy座標、幅、高さ)
のリストとして出力せよ。斜めの方向の切り出しは考えなくてもよい。
切り出しに余裕があるときは、x座標の大きい方、y座標の大きい方を残すようにせよ。ただし、x軸は右の向き、y軸は下向きとする。

テストデータ。

cx=10, cy=10, m=5, {5, 10}, {2, 2}, {2, 2}, {4, 3}, {6, 5}

cx=5, cy=12, m=5, {2, 5}, {3, 3}, {2, 8}, {3, 2}, {4, 3}

784 名前:デフォルトの名無しさん mailto:sage [2017/12/01(金) 17:01:28.13 ID:BqJQPTjH.net]
頭の悪そうな文章だな

正方形⊂長方形
ステンレスの板の座標上の位置指定が無い
余裕がある場合の条件の意味が曖昧

785 名前:片山博文MZ mailto:sage [2017/12/01(金) 18:41:36.20 ID:fw1UFg83.net]
ステンレスの板の左上座標は原点にあるものとする。
切り出しは、可能な限り、座標の小さい方を優先する(「余裕」の意味)。



786 名前:デフォルトの名無しさん mailto:sage [2017/12/01(金) 20:32:10.86 ID:9YSaSAW0.net]
>>758
相変わらず曖昧な表現

全ての長方形の上辺と左辺がどこかに接していれば良いのか?
そうじゃないのか?

このような条件のを1個だけ見つければ良いのか
すべて見つけるのか

787 名前:片山博文MZ mailto:sage [2017/12/01(金) 20:41:14.79 ID:fw1UFg83.net]
全ての部材の上辺と左辺が別の部材の辺、もしくは、元の板の端に接していること。
このような条件のをすべて見つけること。

788 名前:片山博文MZ mailto:sage [2017/12/01(金) 20:43:57.24 ID:fw1UFg83.net]
なんか、工学関係でこのような問題があるらしいが、まだ解決策があるかどうかわからん。これが解ければ、実用化待ったなし。

789 名前:デフォルトの名無しさん mailto:sage [2017/12/01(金) 21:15:23.73 ID:9YSaSAW0.net]
お題じゃなくて依頼かよ

790 名前:デフォルトの名無しさん mailto:sage [2017/12/01(金) 21:19:54.38 ID:9YSaSAW0.net]
実用性なら
切り

791 名前:やすさとか余り素材の形状とか
そういうのが重要だろうに

問題として中途半端過ぎる
[]
[ここ壊れてます]

792 名前:デフォルトの名無しさん [2017/12/01(金) 21:20:21.36 ID:qVeescqP.net]
また片山博文MZ が乞食をやってるのか

793 名前:デフォルトの名無しさん mailto:sage [2017/12/01(金) 21:23:07.33 ID:9YSaSAW0.net]
普通に考えて、NP問題だろう

794 名前:デフォルトの名無しさん [2017/12/01(金) 21:48:16.44 ID:8H4JUlF5.net]
なにやら揉めてますね
そろそろうんざりなので次のお題どうぞ

795 名前:デフォルトの名無しさん [2017/12/01(金) 23:36:29.58 ID:N1IVcYDB.net]
スポーツスケジューリング問題。



796 名前:デフォルトの名無しさん mailto:sage [2017/12/03(日) 02:47:12.16 ID:QazTjKaA.net]
お題ってこういうのでもいいのかな
a[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
このように10個の整数を要素に持つ配列がある(整数の値は不定)
b = エントリーポイント
c = 移動する数量
d = 移動する距離
を与えることにより、配列の要素を移動させるプログラムを作りなさい
ただし配列の右端の要素を一つ移動させると、配列の左端に移動するものとする


a = 3, b = 1, c = 5, a = 0124567839
b = 1, c = 3, d = 1, a = 0412356789
b = 7, c = 1, d = 5, a = 1273456890
b = 0, c = 8, d = 1, a = 8012345679
b = 4, c = 5, d = 4, a = 6783901245
b = 9, c = 5, d = 4, a = 5679012384
b = 7, c = 3, d = 1, a = 9123456078

797 名前:デフォルトの名無しさん mailto:sage [2017/12/03(日) 02:49:08.83 ID:QazTjKaA.net]
>>768
一番上の例は
b = 3, c = 1, d = 5, a = 0124567839
の間違いです

798 名前:デフォルトの名無しさん mailto:sage [2017/12/03(日) 09:00:27.20 ID:ucQfMVKf.net]
>>768
https://ideone.com/zZdIlU
C++。なかなか素直な問題なのに邪悪な思念で見ていたため手間取った。
マニュアルを熟知していると簡単かもしれない。

799 名前:デフォルトの名無しさん mailto:sage [2017/12/03(日) 09:04:48.71 ID:b0AFqm0g.net]
>>768 Ruby
https://ideone.com/0l4cEo

800 名前:デフォルトの名無しさん mailto:sage [2017/12/03(日) 10:14:55.69 ID:ZeeZWfzn.net]
>>768
@Mathematica

https://ideone.com/z4q1Nk

801 名前:デフォルトの名無しさん mailto:sage [2017/12/03(日) 12:12:41.56 ID:jbLAlLAh.net]
>>768
b + c が10を超えることはありますか?

802 名前:デフォルトの名無しさん mailto:sage [2017/12/03(日) 12:55:22.10 ID:sC6phLBS.net]
>>773訂正
b,c,dが10を越えることはありますか?

803 名前:デフォルトの名無しさん mailto:sage [2017/12/03(日) 13:05:23.73 ID:b0AFqm0g.net]
>>771はb,c,dが任意の自然数でも大丈夫なようにしておいた

804 名前:デフォルトの名無しさん mailto:sage [2017/12/03(日) 13:08:19.92 ID:QazTjKaA.net]
みなさんプログラム作るの早いですね

>>774
一応a、b、cの条件は、このようになると思います。
0 <= a <= 9
0 <= b <= 8
0 <= c <= 10 - b - 1

bとcは0では意味がないので、こっちのほうがいいのかな
0 <= a <= 9
1 <= b <= 8
1 <= c <= 10 - b - 1

805 名前:デフォルトの名無しさん mailto:sage [2017/12/03(日) 13:12:58.80 ID:QazTjKaA.net]
>>776
すみません、間違えました、abcじゃなくてbcdですね
0 <= b <= 9
1 <= c <= 8
1 <= d <= 10 - b - 1



806 名前:デフォルトの名無しさん mailto:sage [2017/12/03(日) 13:34:35.32 ID:QazTjKaA.net]
>>777
すみません、訂正の訂正です。dは10-c-1ですorz
0 <= b <= 9
1 <= c <= 8
1 <= d <= 10 - c - 1

807 名前:デフォルトの名無しさん [2017/12/03(日) 17:47:25.64 ID:Gq7SJlPX.net]
Linked list 使うと楽そうな感じするな

808 名前:デフォルトの名無しさん mailto:sage [2017/12/03(日) 18:26:21.27 ID:QazTjKaA.net]
>>770,771
せっかくなのでこのテストデータを作って検証してみましたが、全部合っていました、さすがですね
それにしても他人のプログラムって動かすことはできても、理解するのは困難ですね
>>772
Mathematicaは残念ながら持っていないので検証できませんでした

b = 8 c = 6 d = 2 a = 8901236745
b = 4 c = 3 d = 2 a = 0123784569
b = 4 c = 5 d = 2 a = 8123904567
b = 2 c = 5 d = 2 a = 0178234569
b = 0 c = 5 d = 3 a = 5670123489
b = 9 c = 3 d = 4 a = 3459016782
b = 5 c = 1 d = 7 a = 1253467890
b = 4 c = 6 d = 2 a = 8923014567
b = 6 c = 7 d = 2 a = 8901253467
b = 7 c = 5 d = 4 a = 5789016234
b = 4 c = 2 d = 2 a = 0123674589
b = 6 c = 4 d = 5 a = 4678950123
b = 7 c = 4 d = 4 a = 4789056123
b = 4 c = 5 d = 4 a = 6783901245
b = 8 c = 1 d = 5 a = 1238456790
b = 0 c = 2 d = 6 a = 2345670189
b = 3 c = 7 d = 1 a = 9120345678
b = 9 c = 4 d = 2 a = 4901256783
b = 8 c = 3 d = 6 a = 3456890712
b = 2 c = 5 d = 3 a = 0178923456

809 名前:デフォルトの名無しさん mailto:sage [2017/12/03(日) 20:16:05.68 ID:hV+xPFYR.net]
>>768
ruby ワンライナー
https://ideone.com/sXGhCG

810 名前:デフォルトの名無しさん mailto:sage [2017/12/03(日) 20:37:58.61 ID:ucQfMVKf.net]
>>780
お、あんた偉いな。
出題者でちゃんと答え合わせやってくれる人が稀でレスポンス薄いことが多いんだよ。
ちゃんと動いてよかったよ。

811 名前:デフォルトの名無しさん mailto:sage [2017/12/03(日) 20:51:48.60 ID:ucQfMVKf.net]
>>774
自分は10超えてもらったら困るなぁ。
10っていうか、配列の要素数だな。
修正はそんなに難しくないけど。

812 名前:デフォルトの名無しさん mailto:sage [2017/12/03(日) 23:00:23.32 ID:QazTjKaA.net]
>>781
1行プログラムすごいですね
さすがスクリプト言語

>>782
そうなんですか、でもいろいろな言語で回答されるから、出題者も大変かもしれないですね
私は問題の意味すらよく分からないことが多いので、もっぱら見る専ですが

813 名前:デフォルトの名無しさん [2017/12/04(月) 02:36:11.06 ID:iGjrIGoV.net]
>>768
これでいいのかなあ?
Perl で書いた。
https://paiza.io/projects/ncIY4LljeBahWZPJpd8ZPQ

814 名前:デフォルトの名無しさん mailto:sage [2017/12/04(月) 06:47:18.44 ID:Rc7ie/2s.net]
>>785
b = 6、 c = 6、 d = 2
のときの動作がおかしいようです
8901452367
となるはずが
0167892345
となっており、移動する"678901"の並びが崩れてしまっています

815 名前:785 [2017/12/05(火) 02:32:35.27 ID:LDxS5CId.net]
>>786
問題勘違いしてました。素直にぐるぐる回すように修正しました。
https://paiza.io/projects/ncIY4LljeBahWZPJpd8ZPQ
下の「入力」タブの方にスペース区切りで b, c, d の値を1行づつ並べて入れてから実行させると「出力」に結果が出ます。
とりあえず >>768 に書いてある値を入力にセットしたところ出力は同じになりました。



816 名前:デフォルトの名無しさん mailto:sage [2017/12/05(火) 20:55:13.95 ID:vy+ohhoY.net]
>>787
入出力の確認をしただけですが、今回は問題ないようです
paiza使うと簡単に確認できて便利ですね

817 名前:デフォルトの名無しさん mailto:sage [2017/12/05(火) 21:48:50.31 ID:32LsMTj+.net]
>>768
僕の頭だとどうしても右端から左端に行くときの動きがイメージできないので、解答締め切ったあとでもいいのでちょろっと教えてもらえると嬉しいです
上3つまではわかるけどそこから先がそもそも答えにたどり着けない……

818 名前:デフォルトの名無しさん mailto:sage [2017/12/05(火) 23:47:14.24 ID:ynbcQBXQ.net]
>>789
ヒント。
(インデックス++)%配列の長さ
を繰り返すとどうなりますか?%は余剰デス。

819 名前:デフォルトの名無しさん mailto:sage [2017/12/06(水) 00:25:49.49 ID:gvvJf1Ph.net]
>>789
上の3つまでは分かるということなので、3つめのcの値を一つずつ増やしてみると、こんな感じになります
"7"、"78"、"789"、"7890"と並ぶ数値が増えていっているのが分かると思います
c+d の合計は9が最高なので、これ以上cを増やすにはdを減らさなくてはなりません
b = 7 c = 1 d = 5 a = 1273456890
b = 7 c = 2 d = 5 a = 2378456901
b = 7 c = 3 d = 5 a = 3478956012
b = 7 c = 4 d = 5 a = 4578906123

今度はcを2に固定して、dの値を一つずつ増やすと、こんな感じになります
"78"の並びが一つずつ右へずれていっているのが分かると思います
c+d の合計は9が最高なので、これ以上dを増やすにはcを減らさなくてはなりません
b = 7 c = 2 d = 1 a = 0123456978
b = 7 c = 2 d = 2 a = 8123456907
b = 7 c = 2 d = 3 a = 7823456901
b = 7 c = 2 d = 4 a = 2783456901
b = 7 c = 2 d = 5 a = 2378456901
b = 7 c = 2 d = 6 a = 2347856901
b = 7 c = 2 d = 7 a = 2345786901

こんな感じで分かるでしょうか?私も自分の頭で考えると混乱しますw

820 名前:デフォルトの名無しさん mailto:sage [2017/12/06(水) 00:31:57.65 ID:+0bHqE6f.net]


821 名前:ゥ分の考え方は、配列の一部を切り取ってパッディングするんだけど、
まず配列を回転させて切り取る第0インデックスを配列の最初に持って来る。
すると、配列の後ろにはすでにパディングが終わった数列のができてる。
で切り取って削除して尻尾にくっつける。
で、さっき回した分を戻してやると完成。

という方法で、>>770を解いた。
[]
[ここ壊れてます]

822 名前:デフォルトの名無しさん mailto:sage [2017/12/06(水) 00:32:05.18 ID:+0bHqE6f.net]
自分の考え方は、配列の一部を切り取ってパッディングするんだけど、
まず配列を回転させて切り取る第0インデックスを配列の最初に持って来る。
すると、配列の後ろにはすでにパディングが終わった数列のができてる。
で切り取って削除して尻尾にくっつける。
で、さっき回した分を戻してやると完成。

という方法で、>>770を解いた。

823 名前:デフォルトの名無しさん mailto:sage [2017/12/06(水) 00:32:32.42 ID:+0bHqE6f.net]
あちゃー
二重投稿になったある。
そんなに大事でもないのだけど。

824 名前:デフォルトの名無しさん mailto:sage [2017/12/06(水) 00:38:22.54 ID:+0bHqE6f.net]
C++は比較的不自由な言語なので頭使うのは鍛えられるよ。
パーツが少ないのでほとんど自作しないといけない。

825 名前:デフォルトの名無しさん [2017/12/06(水) 00:46:18.89 ID:DokUEpLm.net]
コンパイルが必要とかでスクリプト系の言語より
使うことに不便があるかもしれないが、
できるアプリが自由で高速・軽量!

ライブラリもSTLやboost以外にも、探せば便利なのがいっぱい。



826 名前:デフォルトの名無しさん mailto:sage [2017/12/06(水) 01:07:01.76 ID:+0bHqE6f.net]
よそのライブラリ使うとイデオンで動かないからなぁ。
まぁ、業務ではライセンスに合ったものを使えばいいよ。

827 名前:デフォルトの名無しさん [2017/12/06(水) 02:01:03.49 ID:QVT4XBLu.net]
>>789
塊が移動すると考えれば良い。
例えば 7, 4, 2 だとすると、 789 と先頭の 0 が移動する塊だ。
で、ちょっと分かり易くするためにこの塊を伏せて * で書くとするとこうなる。

*123456***

それでこの塊を右に一つずらす。その時に1は食われて尻尾から吐き出される。

**234561**

移動量2なのでもう一回右にずらす。すると2が食われて尻尾から吐き出される。

***345612*

それでは * から 7890 に戻してみよう。

8903456127

できあがり。

828 名前:デフォルトの名無しさん mailto:sage [2017/12/06(水) 02:58:25.26 ID:+0bHqE6f.net]
>>793
これ間違ってるな。
最後尻尾にくっつけるんじゃなくて、適所にインサートだった。
で戻す。
書いた日から時間たってるからすまん。

829 名前:デフォルトの名無しさん mailto:sage [2017/12/06(水) 08:41:18.93 ID:obBhCrma.net]
>>790
>>791
>>798
ありがとうございます
やっと理解できました
がんばって解いてみます

830 名前:デフォルトの名無しさん [2017/12/06(水) 17:48:37.81 ID:T95E7suL.net]
log2だけど、これ使うといいらしいよ。分割統治法のBSA法というやつらしい。
2個ずつの積を繰り返すことで計算回数が減らせる。


{{1, a0}, {0, r}}*{{1, a1}, {0, r}}を[ [○,P], [○,Q] ]とおくと
r*P/Qはa0 + a1/rであり、

{{1, a0}, {0, r}}*{{1, a1}, {0, r}}*{{1, a2}, {0, r}}を[ [○,P], [○,Q] ]とおくと
r*P/Qはa0 + a1/r + a2/r^2。

上の式を実際に計算してみる。
www.wolframalpha.com/input/?i=%7B%7B1,+a0%7D,+%7B0,+r%7D%7D*%7B%7B1,+a1%7D,+%7B0,+r%7D%7D*%7B%7B1,+a2%7D,+%7B0,+r%7D%7D

831 名前:デフォルトの名無しさん mailto:sage [2017/12/06(水) 21:09:44.45 ID:N+lgs3o9.net]
>>801
普通のlog 2の計算には使えても
>>680 には使えないかと

832 名前:デフォルトの名無しさん mailto:sage [2017/12/07(木) 00:07:53.25 ID:YC8MWngg.net]
>>731 から更に縮まりました
もう誰も興味が無いかも知れませんが

コードいる?

833 名前:デフォルトの名無しさん [2017/12/07(木) 09:24:10.80 ID:XIHsqoOR.net]
>>801でできるはずだ。やってみる

834 名前:デフォルトの名無しさん mailto:sage [2017/12/07(木) 10:09:03.65 ID:DjN/Fbox.net]
n=10^10で19.28秒にまで縮めた
n=10^13くらいまでなら

835 名前:髏Qてる間に終わる

>>804
期待してます!
[]
[ここ壊れてます]



836 名前:デフォルトの名無しさん [2017/12/07(木) 15:54:52.13 ID:XIHsqoOR.net]
804だけど考えてみたら面倒なんだな。
有理数(整数)で完全に求めてから割り算するのは時間かかりそうだから、
展開も、割り算も、有限で打ち切って求める精度がでるようにするのが普通?

837 名前:デフォルトの名無しさん [2017/12/07(木) 18:15:20.36 ID:wGY0QmnN.net]
お題
辺の長さが10,000以下の整数である直方体について
すべての面の対角線も整数となるものを全て求める

838 名前:デフォルトの名無しさん mailto:sage [2017/12/07(木) 19:52:07.65 ID:5gbe7aWB.net]
対角線を出す式を忘れたのだ〜。
数学って難しい。

839 名前:デフォルトの名無しさん mailto:sage [2017/12/07(木) 20:10:49.23 ID:bwV7uU+3.net]
>>807
答えは浮かんだけど、
手元にインタプリタがないので書けない。

840 名前:デフォルトの名無しさん mailto:sage [2017/12/07(木) 20:38:16.84 ID:fmQCcJGl.net]
>>808
えーと、ほら、三角形の三角形のアレ

841 名前:デフォルトの名無しさん mailto:sage [2017/12/07(木) 21:23:21.04 ID:BdlZ1dXv.net]
>>805 のソース一式とexeです。
>>680 の回答となります。
fast-uploader.com/file/7068204781334/

実行ファイルは、拡張子をexe_からexeに変えてください。
OSはWindows 64bit Vista以降
CPUはHaswell以降
で動作します。

842 名前:デフォルトの名無しさん mailto:sage [2017/12/07(木) 21:26:37.34 ID:5gbe7aWB.net]
作ってみたけど、オッセ―。
なんか数学的にやらないとダメぽ。

>>810
検索したら出てきた。
ただのHYPODだった。

843 名前:デフォルトの名無しさん mailto:sage [2017/12/07(木) 21:34:41.35 ID:5gbe7aWB.net]
あ〜ん。足し算10兆回かかるとかむりげーじゃ。
どうしようかこれ。

844 名前:デフォルトの名無しさん mailto:sage [2017/12/07(木) 21:40:02.60 ID:5gbe7aWB.net]
>>807
https://ideone.com/5Tu6fx
C++。ギブアップ。遅すぎだ。
デバッグ不完全だからそこを忘れないで。
多分1日かけても終わらないと思う。

845 名前:デフォルトの名無しさん mailto:sage [2017/12/07(木) 21:40:16.73 ID:BdlZ1dXv.net]
>>807
特に大きな工夫もなく普通に3重ループで出来ましたよ
151個かな



846 名前:デフォルトの名無しさん mailto:sage [2017/12/07(木) 21:42:04.13 ID:BdlZ1dXv.net]
https://ideone.com/09jmll

847 名前:デフォルトの名無しさん mailto:sage [2017/12/07(木) 21:44:43.70 ID:8KQwIEWy.net]
>>807 Java
https://ideone.com/iYsIgq
こうでいいのけ?

848 名前:デフォルトの名無しさん mailto:sage [2017/12/07(木) 21:48:20.51 ID:5gbe7aWB.net]
ぶ。おれは・・・いったい・・・。
だめだなぁ。才能ないなぁ。

849 名前:デフォルトの名無しさん mailto:sage [2017/12/07(木) 22:07:39.64 ID:BdlZ1dXv.net]
>>817の意味がわからん
解説よろしく!

850 名前:デフォルトの名無しさん [2017/12/07(木) 22:27:00.87 ID:XIHsqoOR.net]
>>801のように積へ変換した場合、どれ位の精度・桁数が必要なのか簡単にわからないな。
>>801でやると、誤差ありの巨大な数同士の掛け算になって、その結果誤差が拡大する。
和のままやると、適当に2ベキをかければ、各項の整数部分だけ計算すればよさそうだけど。
>>801は桁を十分にとったとしても、2進10桁以上の部分も計算途中で無視はできないか。

851 名前:デフォルトの名無しさん mailto:sage [2017/12/07(木) 22:32:10.24 ID:5gbe7aWB.net]
グア。題意勘違いしてた。
直方体の対角線はいらんのか。うおー。
ばかばかー。

852 名前:デフォルトの名無しさん mailto:sage [2017/12/07(木) 22:57:05.97 ID:5gbe7aWB.net]
>>807
https://ideone.com/Uipgvw
C++。書き直したら、>>816のパクリ見たくなった。
そしてそれでも遅いとかあかんなー。
うーん。なんでなんだろう・・・。

853 名前:デフォルトの名無しさん mailto:sage [2017/12/07(木) 23:06:46.33 ID:BdlZ1dXv.net]
>>820
普通に、求めたい精度+α の精度を保てば十分かと
演算回数はlog(n)のオーダーなので
普通にlog(2)を求める時には使える手法

854 名前:デフォルトの名無しさん mailto:sage [2017/12/07(木) 23:06:47.69 ID:8KQwIEWy.net]
>>819
https://ideone.com/ZCINKa
適当にコメント付けた

855 名前:デフォルトの名無しさん mailto:sage [2017/12/07(木) 23:18:28.32 ID:8ACt5G91.net]
物体は表面だけでなく無



856 名前:数の内面を有するという考えは絶対に存在する
一方で全てを表面でしかとらえない人の存在も否定できない
[]
[ここ壊れてます]

857 名前:デフォルトの名無しさん mailto:sage [2017/12/07(木) 23:24:59.96 ID:BdlZ1dXv.net]
このポエムをどうプログラミングしろと?

858 名前:デフォルトの名無しさん mailto:sage [2017/12/08(金) 03:20:08.11 ID:JkPU7Xcj.net]
>>807 Ruby
https://ideone.com/3BPK13
20秒程かかってしまう

859 名前:デフォルトの名無しさん [2017/12/08(金) 12:45:22.72 ID:lX5lg0SB.net]
log2は>>801でもできそうだ。
積の先頭ほど精度が必要で、無視できる上限・下限を積の位置で可変にするか、
最初の積の計算で必要な精度をすべてに適用するかでいけそう。

860 名前:デフォルトの名無しさん mailto:sage [2017/12/08(金) 14:42:05.63 ID:3hyL4NRS.net]
>>817
これパクってstd::bitset<10001>でやったら動かないかな
nextSetBitだけ作れば動きそう

861 名前:デフォルトの名無しさん mailto:sage [2017/12/08(金) 17:20:05.13 ID:qoqqt6pE.net]
>>829
やってみた
いろいろ怪しいが速度は強烈に速いな

https://ideone.com/d4dU1Q

862 名前:デフォルトの名無しさん mailto:sage [2017/12/09(土) 00:08:31.54 ID:NdkcUgXa.net]
>>828
時間的に無理だろって話

863 名前:デフォルトの名無しさん [2017/12/09(土) 02:59:25.21 ID:C21Kkp0z.net]
>>807
これでいいかな?
Kotlin で書いた。しかしpaiza.ioの制限なのか、何故か import kotlin.math.* がエラーだったので java.lang.Math の関数を使っている。
https://paiza.io/projects/ImbYdf3NSWgW-zj8Ke6cDw

864 名前:デフォルトの名無しさん [2017/12/09(土) 09:05:25.04 ID:WAlxvB4a.net]
お題
10,000以下の三角形数をもとめる

865 名前:デフォルトの名無しさん mailto:sage [2017/12/09(土) 09:42:44.72 ID:HfcuYzyJ.net]
>>833
三角数だよね?
.js
https://ideone.com/WZBIFF



866 名前:デフォルトの名無しさん mailto:sage [2017/12/09(土) 10:35:24.71 ID:PLdtTEIG.net]
>>833 ruby
i,j=0,-1;p i while(i+=j+=1)<10000

867 名前:デフォルトの名無しさん mailto:sage [2017/12/09(土) 21:40:06.26 ID:PLdtTEIG.net]
>>833 Brainf**k ワンライナー(笑)
https://ideone.com/TyMeco
遅すぎて8bitまでしか計算できなかった

868 名前:デフォルトの名無しさん mailto:sage [2017/12/09(土) 23:46:47.87 ID:3TNSAl29.net]
ideone.comはたいして最適化しないBrainf**k処理系だからな

869 名前:デフォルトの名無しさん [2017/12/10(日) 00:50:34.10 ID:J0bkBqjd.net]
>>833
1+2+3+... だよね? じゃあこうだ。
perl -e '$i=0;$n=1;while(($i+=$n)<=10000){print"$i\n";++$n}'

870 名前:デフォルトの名無しさん [2017/12/10(日) 00:52:24.37 ID:J0bkBqjd.net]
>>833
while じゃなくて for にするとこう。
perl -e 'for($i=0,$n=1;($i+=$n)<=10000;++$n){print"$i\n"}'

871 名前:デフォルトの名無しさん [2017/12/10(日) 08:00:18.20 ID:uc7Ht429.net]
>833 R
cat(cumsum(0:140))

872 名前:デフォルトの名無しさん [2017/12/10(日) 09:05:44.08 ID:gZDGKqrG.net]
>>801は精度管理の手間を考えたら、そのまま級数計算するのと大差ないと諦めたが。
こうすれば割り算の小数計算がほぼでないからいいのでは? 既に実装済?


an = 1/n、r = 2として、Σ an/r^n を定数C倍したやつの整数部分の取り出し。
C*anを再びanとおく。
Σ an/r^n
= a2/r^2 + a4/r^4 +・・・+ aN(2)/r^N(2) (添え字は2の倍数を動く)
+ a3/r^3 + a9/r^9 + a15/r^15 + ・・・+ aN(3)/r^N(3)
+ ap/r^p + ・・・+ aq/r^q + ・・・ (pは素数、qはp未満の数で割り切れないpの倍数)

= 1/N(2)r^N(2) * ( N(2)*a2*r^(N(2)-2) + ・・・ + N(2)*aN(2) ) + ・・

この分子部分は、各項、整数でそのまま計算しても>>801でも速くなるはず。

873 名前:デフォルトの名無しさん [2017/12/10(日) 21:52:17.18 ID:gZDGKqrG.net]
>>841は添え字に被りが出ていて間違えてた。

874 名前:デフォルトの名無しさん mailto:sage [2017/12/10(日) 22:07:36.99 ID:XvO3Mos9.net]
やってみて時間教えて

875 名前: []
[ここ壊れてます]



876 名前:デフォルトの名無しさん mailto:sage [2017/12/10(日) 22:08:42.09 ID:XvO3Mos9.net]
>>805 >>811 を抜ける?

877 名前:デフォルトの名無しさん [2017/12/10(日) 22:22:45.57 ID:gZDGKqrG.net]
秒数ではCPU依存するから正確に比較できない。
掛ける2だけのループを10^10回するだけでも19秒では終わらない。
無料のideone codepadなどの実行可能時間以内にできる範囲とか、
ベースとなる簡単なコード、関数の何倍時間がかかるかなどだと比較できるけど。

878 名前:デフォルトの名無しさん mailto:sage [2017/12/10(日) 22:36:08.95 ID:3sNoocWL.net]
演算回数の見積りは?

879 名前:35歳 mailto:age [2017/12/11(月) 02:10:45.96 ID:OsSLt9Cy.net]
Bronze取りました

880 名前:35歳 mailto:age [2017/12/11(月) 02:11:34.08 ID:OsSLt9Cy.net]
Bronze取りました

881 名前:デフォルトの名無しさん mailto:sage [2017/12/11(月) 04:58:28.24 ID:zs4BBX0s.net]
くだらん話かも知れんけど
竹内関数のメモ化

https://ideone.com/sVhke1

これはC++によるものだけど、C++や他の言語でもっと高速に書く方法はあるか?

882 名前:デフォルトの名無しさん mailto:sage [2017/12/11(月) 05:19:34.19 ID:zs4BBX0s.net]
あ、ちなみにideoneの結果は間違っている
多分スタックオーバーフローしている
100, 50, 0の場合は答えは100

883 名前:デフォルトの名無しさん mailto:sage [2017/12/11(月) 05:38:23.74 ID:pBTqvDfH.net]
>>849
constexprにすれば実行時はほぼ計算無しにできると思う。
コンパイル時間半端ないけど。

884 名前:デフォルトの名無しさん mailto:sage [2017/12/11(月) 05:45:19.55 ID:pBTqvDfH.net]
ところで、いくらメモ化してても5回しか呼ばれないってことがあるのか?って気はする。

885 名前:デフォルトの名無しさん mailto:sage [2017/12/11(月) 07:04:34.34 ID:pBTqvDfH.net]
https://ideone.com/Y9WhRz
竹内関数constexprにしてみた。
ウチの環境だとこの辺のパラメータが限界っぽいかな。
100,50,0だとメモリ使い切るらしい。



886 名前:デフォルトの名無しさん mailto:sage [2017/12/11(月) 07:09:30.00 ID:pBTqvDfH.net]
あら、コンパイルエラーになっちゃった。
VCだと通ったんだけど。もちろんステップ数とか設定はいじってるが。

887 名前:デフォルトの名無しさん [2017/12/11(月) 08:32:22.37 ID:gAGFZ0s2.net]
>>849
こんなのとか?

たらいを回すならHaskella
2006年04月07日 22:09
blog.livedoor.jp/dankogai/archives/50447103.html

888 名前:デフォルトの名無しさん [2017/12/11(月) 12:03:51.37 ID:uZdMj4Ux.net]
お題
6つの辺の長さが 与えられた4面体の体積を求める

889 名前:デフォルトの名無しさん mailto:sage [2017/12/11(月) 13:07:53.63 ID:iSg/oyC4.net]
お題
8つの辺の長さが与えられた超5面体の体積を求める

890 名前:デフォルトの名無しさん mailto:sage [2017/12/11(月) 14:29:31.82 ID:hKbhSguL.net]
お題
与えられた自然数を高々四個の四角数(平方数)の和で表せ

891 名前:デフォルトの名無しさん mailto:sage [2017/12/11(月) 14:35:19.85 ID:k7Z6O4lr.net]
>>856 Ruby
https://ideone.com/qbHExm
ただし四面体ABC-Dに対して入力の順序は
AB BC CA CD DA BD とする

892 名前:デフォルトの名無しさん mailto:sage [2017/12/11(月) 16:06:12.32 ID:k7Z6O4lr.net]
>>857
8つだと多胞体が一意に定まらないと思うんだが

893 名前:デフォルトの名無しさん mailto:sage [2017/12/11(月) 16:48:32.53 ID:qWzXCzKk.net]
>>853
64bit環境でやったらスラッシング起きて\(^o^)/

894 名前:デフォルトの名無しさん mailto:sage [2017/12/11(月) 16:53:24.07 ID:iSg/oyC4.net]
>>860
じゃあ10個で

895 名前:デフォルトの名無しさん mailto:sage [2017/12/11(月) 17:03:18.77 ID:k7Z6O4lr.net]
>>862
10でも足りないと思うんだけどひょっとして超五面体って五胞体のつもりで言ってる?



896 名前:デフォルトの名無しさん mailto:sage [2017/12/11(月) 17:31:58.31 ID:iSg/oyC4.net]
4次元の5胞体

897 名前:デフォルトの名無しさん mailto:sage [2017/12/11(月) 17:32:53.55 ID:iSg/oyC4.net]
5C2=10

898 名前:デフォルトの名無しさん mailto:sage [2017/12/11(月) 22:30:10.81 ID:pBTqvDfH.net]
>>861
ウチはi6700メモリ8Gだな。20秒くらいボケーっとしてたらコンパイル完了する。
実実行より全然早い。

899 名前:デフォルトの名無しさん mailto:sage [2017/12/11(月) 23:43:41.01 ID:jF/PrBtV.net]
>>866
んー32bitでコンパイルしてみるかな
64bitはマジ卍ヤバい

900 名前:デフォルトの名無しさん mailto:sage [2017/12/12(火) 00:19:40.23 ID:JpJzeAvs.net]
>>866
悪い
VCで /constexpr:steps 1000000を付けてコンパイルしたら4秒ほどでコンパイルが終わった
多分/MPも付けてるからだと思う
実行結果は25になった

gcc 7.2.0 64bitだとどんどんメモリを食って行って最後にスラッシングが起きる
馬鹿正直な実装をしているからかも知れないね

VCの方がいろいろとメモリを食わないように工夫されてるのかも

Clangでも/constexpr:steps は -fconstexpr-steps という形でサポートされてるようだから
多分行けると思う
メモリ64G積んでるし

901 名前:デフォルトの名無しさん mailto:sage [2017/12/12(火) 01:27:56.58 ID:qpuoD4bc.net]
>>868
いいマシーンだな。
まぁ、ウチはあれくらいで資源尽きちゃうけど、メモリ64Gもあったらもっと行けるな。
気が向いたらどうぞ。

902 名前:デフォルトの名無しさん mailto:sage [2017/12/12(火) 04:08:00.08 ID:SvlIPxM4.net]
>>858 Java
https://ideone.com/ND4D2n

903 名前:デフォルトの名無しさん mailto:sage [2017/12/12(火) 22:52:21.86 ID:38dJ/vud.net]
以下のURLのように、同じ色の点同士をつなぐゲームがある。
https://play.google.com/store/apps/details?id=com.bigduckgames.flow

N×Mの2次元配列が与えられる。配列の各要素は半角英字('a'-'z')または'*'である。
半角英字は色付きの点を表し、'*'は空のマスを表す。
'*'以外の文字は、配列中に必ず2個ずつ存在する。

このパズルの解を一つ出力せよ。
・'-'は左右のマスをつなぐ
・'|'は上下のマスをつなぐ
・'.'はマスをつながない

解がない場合は"No solution"と出力せよ。

[input]
***rg
**bg*
r****
ob*yo
****y

[output]
*-*-*-r.g
|.......|
*.*-b.g-*
|.|......
r.*.*-*-*
..|.|...|
o.b.*.y.o
|...|.|..
*-*-*.*-y

904 名前:デフォルトの名無しさん [2017/12/15(金) 09:30:54.91 ID:gDuLBiTf.net]
>>841
やってはないけど、そもそもこれ間違ってるのと、同じような発想でやるとしても
全ての素数での分類ではなく、3分割くらいのほうが効率がいいのと、
Σ (2の倍数) + Σ (3の倍数かつ2の倍数でない) + Σ (2と3で割り切れない) 
分割する事もなく、N項の和だとしたらNの階乗か分数をなくせる最小公倍数かけてもいい。それだと掛け算もしくは割り算がいくつも出てくるが。

905 名前:デフォルトの名無しさん [2017/12/16(土) 14:04:43.43 ID:+Cq6iaDY.net]
>>871
等幅フォントで表示しているエディタにコピペしてようやっと何を言わんとしているか分かった。
それってマスとマスの間に - または | を入れて繋ぐってことでいいんだよね? で、つながない所がピリオドだと。
(まあ等幅フォントのASCIIでやるならそれしか方法ないとは思うけど)。



906 名前:デフォルトの名無しさん [2017/12/16(土) 14:07:59.25 ID:+Cq6iaDY.net]
しかしピリオドは

**
**

の時に

*.*
...
*.*

のようになって中央のピリオドが本来なら不要なものになるわけだが、それはスペースでなくても良いのかな?
まあただの幅合わせだからどうでもいいものではあるが。

907 名前:デフォルトの名無しさん mailto:sage [2017/12/17(日) 12:04:31.10 ID:V69L7+t+.net]
>>801 の方法で出来ると書いてるけど
結局誰もやってないのか

個人的には(高速には)出来ないと思っている

908 名前:デフォルトの名無しさん mailto:sage [2017/12/17(日) 12:18:14.72 ID:V69L7+t+.net]
>>871
課題じゃなくて
単にソルバーの作成依頼でしょ

909 名前:デフォルトの名無しさん mailto:sage [2017/12/17(日) 17:50:05.54 ID:3PMrWzl3.net]
無理に線引かないでrだのgだので埋めた方がわかりやすいと思うがな
すべてのマスを埋めなければ

910 名前:ならないルールが抜け落ちてるみたいだから
実は別物のゲームで交差があるとかなったらそうはいかないが
[]
[ここ壊れてます]

911 名前:デフォルトの名無しさん [2017/12/17(日) 20:33:27.61 ID:0HU8GFa9.net]
ブレゼンハム的なやつって、始点と傾き(と区間や境界等で決まる明示されない終点)が
与えられた際に、終点座標を求めてから始点に向かうのってアリなんだろうか?

912 名前:デフォルトの名無しさん [2017/12/18(月) 08:21:39.40 ID:T+ClDj4W.net]
ここでやるには問題がでかすぎ
100分割してほしい

913 名前:デフォルトの名無しさん mailto:sage [2017/12/21(木) 14:37:42.61 ID:/SOyyWKP.net]
>>871 Ruby
https://ideone.com/EOj9mz
ただし解は1つでありかつ線が通らないマスは無いことを前提とする
問題はここから引用:→www.nikoli.com/ja/puzzles/numberlink

914 名前:デフォルトの名無しさん mailto:sage [2017/12/21(木) 14:38:13.66 ID:/SOyyWKP.net]
あ、あと出力方法は自分好みに適当にいじってる

915 名前:デフォルトの名無しさん mailto:sage [2017/12/21(木) 15:58:54.33 ID:jrnuCabF.net]
訂正
ただし解は1つでありかつ線が通らないマスは無いことを前提とする
ではなく
解が存在すればすべての解は全てのマスを通ることを前提とする



916 名前:デフォルトの名無しさん [2017/12/22(金) 19:30:58.88 ID:PPoMR9m8.net]
お題
22の分割(たとえば3+3+5+8)のうち
分割したそれぞれの数の逆数の和が1になるものを求める

917 名前:デフォルトの名無しさん [2017/12/22(金) 19:39:05.90 ID:PPoMR9m8.net]
早速間違えましたすみません
3 +5 +6 +8
でした

918 名前:デフォルトの名無しさん mailto:sage [2017/12/22(金) 20:06:25.02 ID:FRcsVGN9.net]
>>883 ruby
f=->n,k{n==1?[[k]]:(1..k/n).flat_map{|i|f[n-1,k-i].map{|j|[i,*j].sort}}.uniq}
(1..22).each{|i|f[i,22].each{|a|p a if a.map{|e|1r/e}.sum==1}}

#=>[2, 4, 8, 8]
[2, 5, 5, 10]
[3, 3, 4, 12]

919 名前:デフォルトの名無しさん mailto:sage [2017/12/22(金) 21:21:23.60 ID:Mb+deFNF.net]
C++で書いたけど、オセー。
デバッグ大変だ。
うーん。困ったなぁ。

920 名前:デフォルトの名無しさん mailto:sage [2017/12/22(金) 22:04:05.10 ID:Mb+deFNF.net]
https://ideone.com/3ZWKv1
C++。こんなコード書いてみたけど、無理ゲー。
ちょっと厳しいなぁ。最近解けてないなぁ。
ちなみにデバッグ不完全なのであしからず。

921 名前:デフォルトの名無しさん mailto:sage [2017/12/22(金) 22:16:42.15 ID:cfNB9eDL.net]
こういう数学的な問題を解くにはやっぱりプログラミング以前に数学を勉強した方がいいのでしょうか?

922 名前:デフォルトの名無しさん mailto:sage [2017/12/22(金) 22:23:25.38 ID:Mb+deFNF.net]
>>888
数学は大事だよー。
俺数学出来ないから、解けない問題がそれなりにある。
算数では限界だ〜〜。
まぁ、数学とプログラミングって習得時はオーバーラップするところが少ないから融合するまでちょっと大変かな。
でも数学は強力なツールです。

923 名前:デフォルトの名無しさん mailto:sage [2017/12/22(金) 22:40:51.06 ID:wxhiocJz.net]
一般論でいえば必要だろうけど>>883なんて全部列挙したところで計算量はたかが知れてるし
目下必要なのは論理学的思考能力なのでは

924 名前:デフォルトの名無しさん mailto:sage [2017/12/22(金) 22:51:38.40 ID:rSDEoHGj.net]
>>883 Java
https://ideone.com/WiMkNl

22くらいなら大丈夫だけど桁が増えると(´・ω・`)

925 名前:デフォルトの名無しさん mailto:sage [2017/12/23(土) 10:08:16.78 ID:t1pvAVGb.net]
お題
52をいくつかの自然数に分解して
それらの最小公倍数を最大化せよ



926 名前:デフォルトの名無しさん mailto:sage [2017/12/23(土) 10:30:51.64 ID:NDYwz7Jw.net]
分解って、積じゃなくて和で良いんだよね?
数学の知識を使うと一瞬だけど

927 名前:デフォルトの名無しさん [2017/12/23(土) 10:47:21.72 ID:xQ13BTQc.net]
>>892
2*3*5*7*11*23

928 名前:デフォルトの名無しさん mailto:sage [2017/12/23(土) 10:51:04.98 ID:NDYwz7Jw.net]
>>894
ダメだろ

929 名前:デフォルトの名無しさん mailto:sage [2017/12/23(土) 10:54:01.61 ID:NDYwz7Jw.net]
数学の知識が無いなら素直にコンピューターの力を借りなさ

930 名前: []
[ここ壊れてます]

931 名前:デフォルトの名無しさん mailto:sage [2017/12/23(土) 11:07:49.77 ID:afY4COyy.net]
そもそも数学で簡単にとけない問題を力わざでとくための計算機だろ

932 名前:デフォルトの名無しさん mailto:sage [2017/12/23(土) 11:20:55.96 ID:2Y/dvvuZ.net]
>>894
よくわからんが52の場合は
180180 [3, 4, 5, 7, 9, 11, 13]
ということらしいぞ

933 名前:デフォルトの名無しさん [2017/12/23(土) 11:22:52.27 ID:TLP4YLw7.net]
2+3+5+7+11+13+11=52

934 名前:デフォルトの名無しさん mailto:sage [2017/12/23(土) 11:23:44.11 ID:ZIVZRbx3.net]
C++17発行されたから開発環境がさっさと対応してGCDくらい使えるようになりたい。

935 名前:デフォルトの名無しさん mailto:sage [2017/12/23(土) 20:45:26.14 ID:PT43Bq9S.net]
>>768の問題で0<=b<10,0<c<10という制限がついた時
移動を何回か繰り返すと必ず元に戻るんだけど
その回数はbには無関係にc,10-c,10の最小公倍数で
okかな?



936 名前:デフォルトの名無しさん mailto:sage [2017/12/23(土) 23:54:31.73 ID:PT43Bq9S.net]
一回の移動ではd=1ね。
ま、その制限を付けなくともd,c,10-c,10の最小公倍数になるんだろうけど

937 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 06:15:12.28 ID:C5ELqEVz.net]
>>901-902
10-c,10の最小公倍数じゃね?

938 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 12:14:01.21 ID:PCWcyI8B.net]
>>899
>>896

939 名前:デフォルトの名無しさん [2017/12/24(日) 13:55:05.53 ID:aCkD6VOe.net]
数学云々言ってる奴って、何故かその成果見せないよな。
俺でも出来そうなFUD、いやマウントかな。

940 名前:デフォルトの名無しさん [2017/12/24(日) 16:16:06.49 ID:7ASFTRv4.net]
ていうか、計算機はどちらかというと算数だよな。
数学は公式とか証明とか、そういう手順みたいなものを考えるわけで、プログラミングに近い。
コンピュータは作られたプログラムに従って計算結果を出すだけ。
もちろんプログラムそのものをコンピュータに作らせることも可能だけどね。これは次元が違う話だよね。

941 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 20:21:20.17 ID:TJswah5E.net]
プログラムには算数と三角関数とかがあればいい
あとN進法

942 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 22:49:45.08 ID:ke4WkGne.net]
行列演算とか諸々の配列操作関数がないと無理だな

943 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 23:49:37.37 ID:HHMC0VFW.net]
では簡単なお題を
bを底とする値vを、2〜36進数に変換し表示してください。
なお、bは2〜36の整数、vは0以上の整数とし、不正な入力はないものとしてよい。
また、底と値の区切り文字は入出力ともに特に問わない。
[入力例]
16 deadbabe
[出力例]
2#11011110101011011011101010111110
3#100122100210210001200
4#3132223123222332
5#30122344134421
6#1414413520330
7#161402600604
8#33653335276
9#10570723050
10#3735927486
11#1647919685
(略)
27#9h9ll1i
28#7l225hi
29#6842o9l
30#53m7kg6
31#46f9hir
32#3farelu
33#2tf7mor
34#2e7m366
35#214kbpb
36#1ps9w3i

944 名前:デフォルトの名無しさん mailto:sage [2017/12/25(月) 00:09:45.09 ID:3pQBp6tI.net]
>>909 Java 手抜き実装二つ
https://ideone.com/jybq1N
https://ideone.com/Wm8OQ2

945 名前: mailto:sage [2017/12/25(月) 00:32:41.94 ID:LEWwY/wL.net]
>>909
c++old mevius.2ch.net/test/read.cgi/tech/1434079972/29



946 名前:デフォルトの名無しさん mailto:sage [2017/12/25(月) 02:44:06.33 ID:FXcNW9u1.net]
>>909 ruby
n=eval"%2$p.to_i %1$d"%"16 deadbabe".split
(2..36).each{|i|puts"%d#%s"%[i,n.to_s(i)]}

947 名前:デフォルトの名無しさん mailto:sage [2017/12/25(月) 04:27:01.50 ID:Cnt90MG5.net]
>>909
https://ideone.com/dxqIrP
C++。まぁこれくらいなら算数でも解ける範囲や

948 名前:な。
ただしコードがバグってないとは言ってない。へへ。
[]
[ここ壊れてます]

949 名前:デフォルトの名無しさん [2017/12/25(月) 06:21:01.65 ID:P1JMpVx5.net]
>>909 lisp
https://ideone.com/6D7LRp

950 名前:デフォルトの名無しさん [2017/12/25(月) 12:28:00.12 ID:Lg9qxqUa.net]
>>909
Kotlinらしくしてみようとはしたが、あまりにも短く、更に俺がまだよくKotlinを知らないためにこんな風になった。
https://paiza.io/projects/BpAXUQuDCaOSD6Q6GN4O8A
肝心な所はJavaとほぼ同じ。

951 名前:デフォルトの名無しさん mailto:sage [2017/12/25(月) 19:56:50.93 ID:IEH/2als.net]
>>909 F#
https://ideone.com/rRZ949

952 名前:デフォルトの名無しさん mailto:sage [2017/12/26(火) 10:23:38.85 ID:Hd2qVaf/.net]
>>909 Squeak/Pharo Smalltalk

| n |
n := '16 deadbabe' replaceAll: Character space with: $r; asNumber.
2 to: 36 do: [:i | Transcript cr; show: i; space; show: (n radix: i) asLowercase]

953 名前:デフォルトの名無しさん mailto:sage [2017/12/28(木) 04:53:27.57 ID:N8L362th.net]
お題を捏造してやるぜ。
アンサーが42になる式を捏造せよ。という数学パズル。
小難しい式をでっち上げた人が優勝。
算数から数学、物理まで式になってればすべての手法が使用可能。統計とかでもいいよ。
制約は答えが42になることのみ。
解けるものはいるか?

954 名前:デフォルトの名無しさん mailto:sage [2017/12/28(木) 04:55:12.31 ID:N8L362th.net]
あー、忘れてた。
ちゃんと検算して答えを確認できること。
俺、算数しかできないから、各種サービスにかけて検算できるのが望ましい。

955 名前:デフォルトの名無しさん mailto:sage [2017/12/28(木) 04:57:55.88 ID:8O6aNcDe.net]
ぷろぐらみんぐ・・・?



956 名前:デフォルトの名無しさん mailto:sage [2017/12/28(木) 05:01:29.85 ID:N8L362th.net]
ベンチマーク的な感じだな。
たまには本気を出したいだろ?お前ら。

957 名前:デフォルトの名無しさん mailto:sage [2017/12/28(木) 05:04:57.45 ID:N8L362th.net]
当たり前だが、必要な関数が標準ライブラリになかったら自作すること。

958 名前:デフォルトの名無しさん mailto:sage [2017/12/28(木) 07:10:57.10 ID:s+AqweGp.net]
>>918 ruby
require 'open-uri'

expr = "the Answer to the Ultimate Question of Life, the Universe, and Everything"

uri = "https://www.google.com/complete/search?output=toolbar&q=%s"
puts open(format(uri, expr.gsub(' ', '%20'))).string[/data="\K[^"]*/]
#=> 42

959 名前:デフォルトの名無しさん mailto:sage [2017/12/28(木) 07:34:31.76 ID:N8L362th.net]
>>923
元ネタはそれ。正解の一端。

960 名前:デフォルトの名無しさん mailto:sage [2017/12/28(木) 08:07:25.24 ID:i+4FV8XV.net]
>>918
brainfuck
https://ideone.com/eJSjws

961 名前:デフォルトの名無しさん mailto:sage [2017/12/28(木) 09:35:15.49 ID:wX0EFIYP.net]
>>918
難しさの判定を人間が気分でするしかないとなると死ぬまで気に入らないと
言い続けて終わらないようにもできてしまうわけで、少なくともお題の判定
方法としては適切ではないのではないか?

962 名前:デフォルトの名無しさん mailto:sage [2017/12/28(木) 11:19:23.23 ID:ZkyapKMq.net]
式を捏造せよと言ってんのに、検算して答えがあってることを確かめろとか矛盾してて草

963 名前:デフォルトの名無しさん mailto:sage [2017/12/28(木) 11:41:23.15 ID:N8L362th.net]
>>925
基本的かつ合理的。

>>926
投票制にする?

>>927
答えは42になることだけは決まってるんだから、検算できないのはどういう理由?
プログラミングやるんだから、イデオンとか使うんじゃだめなの?

964 名前:デフォルトの名無しさん mailto:sage [2017/12/28(木) 15:25:23.94 ID:0tvuK50P.net]
片山に次ぐ逸材かもしれないが出題者が馬鹿だとやる気が出ないという良い見本

965 名前:デフォルトの名無しさん mailto:sage [2017/12/28(木) 15:31:12.30 ID:N8L362th.net]
自由を泳げないって不便だね。
何やっても良いんだからなんかすればいいって話なんだけど。
定型の答えなんか求めてないのは出題見ればわかるだろ。
発想力が欠如してるんじゃないか?

基本的にベンチマークだと言ってるでしょ?
捏造っていう言葉が悪かったら謝るが。構成しろってことにすれば大体同じや。



966 名前:デフォルトの名無しさん mailto:sage [2017/12/28(木) 15:32:51.23 ID:N8L362th.net]
口だけのやつはぶっぶーですわ。

967 名前:デフォルトの名無しさん mailto:sage [2017/12/28(木) 16:00:26.20 ID:4ng0NpPh.net]
自由を泳げないって

968 名前:デフォルトの名無しさん mailto:sage [2017/12/28(木) 18:49:12.75 ID:Er3In3fn.net]
Cコ:彡

969 名前:デフォルトの名無しさん mailto:sage [2017/12/29(金) 00:30:23.43 ID:+gfutoXL.net]
>>909 rust
https://ideone.com/H6mdNM
・BigInt不使用
・n.to_s(b)の形にしたかったが素早く諦めた
・色んなところに迷いと妥協が見え隠れ

970 名前:デフォルトの名無しさん mailto:sage [2017/12/29(金) 02:28:40.84 ID:IV3yH5ho.net]
お題:入力があったら6面のサイコロを振って出た目を出力してください
ただし数字を使ってはならない

971 名前:デフォルトの名無しさん mailto:sage [2017/12/29(金) 03:07:31.93 ID:GekNq94X.net]
そういう数字を使ってはいけないって誰得なの?

972 名前:デフォルトの名無しさん [2017/12/29(金) 05:31:16.53 ID:5y9SQxLe.net]
>>935
Unicode の U+2680 〜 U+2685 は?
??????

973 名前:デフォルトの名無しさん mailto:sage [2017/12/29(金) 09:00:41.20 ID:IV3yH5ho.net]
>>936
さぁ。。。

>>937
確認してないけどいいのでは

974 名前:デフォルトの名無しさん mailto:sage [2017/12/29(金) 09:20:10.35 ID:GekNq94X.net]
>>935
https://ideone.com/GrYSWB
C++。こんな感じ?

975 名前:デフォルトの名無しさん mailto:sage [2017/12/29(金) 09:29:20.12 ID:GekNq94X.net]
https://ideone.com/ZRXCD5
こっちの方がそれっぽいか。



976 名前:デフォルトの名無しさん mailto:sage [2017/12/29(金) 20:57:46.71 ID:QkO9em45.net]
数字を使ってはならないってのが謎
AAで出力しろってか?

977 名前:デフォルトの名無しさん [2017/12/29(金) 21:21:03.51 ID:aTe03Y1I.net]
>>935
Rubyで。
p rand('abcdef'.length) + 'z'.length

978 名前:デフォルトの名無しさん mailto:sage [2017/12/29(金) 21:28:13.36 ID:FAMD2vO+.net]
数字を使うなって表示なのかそれともソースなのか?

表示なら
●●●●●●とか

979 名前:デフォルトの名無しさん mailto:sage [2017/12/29(金) 21:29:41.90 ID:u/2CuQjm.net]
両方だろ

980 名前:デフォルトの名無しさん mailto:sage [2017/12/29(金) 21:50:46.64 ID:VnRfvHlH.net]
そもそも入力が何なのかすら意味不明。却下

981 名前:デフォルトの名無しさん [2017/12/29(金) 22:22:21.11 ID:1z8qBjEb.net]
お題
自然数 n を入力とし, a と b を乗ずると n になるような自然数 a と b を出力する.
a と b の侯補が複数存在する場合は, a と b の和がもっとも小さなものを出力すること.

982 名前:デフォルトの名無しさん [2017/12/29(金) 22:32:07.85 ID:5y9SQxLe.net]
>>938
じゃあUnicodeのU+2680からの文字を使った版。Kotlinで。
https://paiza.io/projects/GElJ8jIbi45jocyYirbO8w
入力があったらの部分は最初の readLine() だ。
下の「入力」タブの所で改行を一つ入れてあるので開いたら即出力がある。

983 名前:デフォルトの名無しさん [2017/12/29(金) 23:03:49.04 ID:5y9SQxLe.net]
>>935
また Kotlin。
サイコロの目の一つは5x5ビットあれば表現できるので配列に詰め込んで後で変換して出すようにした。
https://paiza.io/projects/uGhQ6cuRqbnlGc2TTvT92w?language=kotlin
別に配列でなくてもとにかく 5*5*6 (=150) bit 詰め込めるなら何でも良い。

984 名前:デフォルトの名無しさん mailto:sage [2017/12/29(金) 23:13:30.16 ID:VnRfvHlH.net]
>>946
15.times{|n|
sqrt_n = Integer.sqrt(n)
(2 * sqrt_n..n + 1).each { |s|
(sqrt_n..n).each { |i|
next unless i * (s - i) == n
puts '%d * %d = %d' % [i, s - i, n]
break
} || break
}
}

0 * 0 = 0
1 * 1 = 1
1 * 2 = 2
1 * 3 = 3
2 * 2 = 4
5 * 1 = 5
2 * 3 = 6
7 * 1 = 7
2 * 4 = 8
3 * 3 = 9
5 * 2 = 10
1

985 名前:1 * 1 = 11
3 * 4 = 12
13 * 1 = 13
7 * 2 = 14
[]
[ここ壊れてます]



986 名前:デフォルトの名無しさん mailto:sage [2017/12/29(金) 23:14:32.74 ID:VnRfvHlH.net]
>>949はRuby2.5.0ね

987 名前:デフォルトの名無しさん [2017/12/29(金) 23:25:01.60 ID:IY4nOP57.net]
>>935
https://paiza.io/projects/dpm1gJDuxMLd6pvQau8rig?language=kotlin

988 名前:デフォルトの名無しさん [2017/12/30(土) 00:34:17.12 ID:64dx8gku.net]
>>946
def r9_946(n)
Math.sqrt(n).to_i.downto(1) do |e|
return [e, n / e] if (n / e) * e == n
end
end

1.upto(100) do |n|
a, b = r9_946(n)
printf("%d = %d * %d¥n", n, a, b)
end

989 名前:デフォルトの名無しさん mailto:sage [2017/12/30(土) 00:45:39.83 ID:6/kbfUjB.net]
>>949から100倍くらい早くなった
https://ideone.com/4qZ3Di

990 名前:デフォルトの名無しさん mailto:sage [2017/12/30(土) 01:37:16.58 ID:2QbO+yEX.net]
>>951
出目が0〜6?

確率的には
0: 1.56%
1: 9.38%
2: 23.44%
3: 31.25%
4: 23.44%
5: 9.38%
6: 1.56%
くらいか?

991 名前:デフォルトの名無しさん mailto:sage [2017/12/30(土) 09:12:17.38 ID:6VD4P8Az.net]
>>946
https://ideone.com/GSawYb
C++。条件足りてるかよくわかってないけど、適当に書いたらそれぽい感じになった。
あってる保証はない。

992 名前:デフォルトの名無しさん mailto:sage [2017/12/30(土) 09:19:03.41 ID:6VD4P8Az.net]
なんか俺の劣化>>953みたいな感じだな。
うーん。名案だとは思ったのだけど。むむむ・・・。

993 名前:デフォルトの名無しさん mailto:sage [2017/12/30(土) 09:31:25.37 ID:6VD4P8Az.net]
うほ、フィルターしてる条件にバグがあった。良く動いてたな。

994 名前:デフォルトの名無しさん mailto:sage [2017/12/30(土) 09:33:18.81 ID:6VD4P8Az.net]
これ、片方1のやつって素数かな?
エラトステネスの篩とどっちが軽いかな。

995 名前:デフォルトの名無しさん [2017/12/30(土) 12:46:04.20 ID:ZPxTZMGf.net]
お題
要素が素数, かつ要素の総和が2018になる集合のうち, 要素数がもっとも大きい集合を出力する.



996 名前:デフォルトの名無しさん [2017/12/30(土) 12:59:47.50 ID:64dx8gku.net]
>>959
[2]*(2018/2)

997 名前:デフォルトの名無しさん mailto:sage [2017/12/30(土) 14:25:23.55 ID:6VD4P8Az.net]
>>959
https://ideone.com/lwcNQR
C++。DPの練習。必要な数はわかったが過程の表示の仕方がわからない。
どうすれバインダー。Orz

998 名前:デフォルトの名無しさん mailto:sage [2017/12/30(土) 15:14:55.24 ID:6VD4P8Az.net]
>>961
https://ideone.com/DdepmL
C++。あってるか知らんけど、力業でベタ作業した結果、それっぽい数字にたどり着いた。
と、思ったら全然違う数字を指していた。

999 名前:デフォルトの名無しさん mailto:sage [2017/12/30(土) 15:16:57.66 ID:6VD4P8Az.net]
>>959
https://ideone.com/XzeJ1E
C++。でけたー。DP難しいなぁ。

1000 名前:デフォルトの名無しさん [2017/12/30(土) 15:18:24.57 ID:ZOKm+QEU.net]
>>959
それ1なのでは?

1001 名前:デフォルトの名無しさん mailto:sage [2017/12/30(土) 15:25:04.70 ID:6VD4P8Az.net]
要素数だから、コンテナカウントだと思って書いたんだけど。
え?題意勘違いしてる?

1002 名前:デフォルトの名無しさん mailto:sage [2017/12/30(土) 15:25:53.45 ID:6VD4P8Az.net]
element countだよね?

1003 名前:デフォルトの名無しさん mailto:sage [2017/12/30(土) 15:30:31.85 ID:qiSXHyFx.net]
2が1009個ある集合、>>960で答えが出てる

1004 名前:デフォルトの名無しさん mailto:sage [2017/12/30(土) 15:32:23.03 ID:6VD4P8Az.net]
>>967
あー、それそういう意味だったのか。
うわー俺、蛇足だった。

1005 名前:デフォルトの名無しさん mailto:sage [2017/12/30(土) 15:36:57.18 ID:6VD4P8Az.net]
>>967
それをさ、プログラムで解くのきつくない?
総当たりしないと俺は無理。重複許可すると途端に大変になる。



1006 名前:デフォルトの名無しさん mailto:sage [2017/12/30(土) 16:05:45.05 ID:6VD4P8Az.net]
https://ideone.com/RVtf4i
適当に拡張してみたが、搭載メモリ8Gを使い切ってしまいデバッグ不可。
これ、意外と難問かもしれん。

1007 名前:デフォルトの名無しさん mailto:sage [2017/12/30(土) 16:20:15.12 ID:6VD4P8Az.net]
ちょっとくどいけど、
これさ、量子アニーリングじゃないと解けないやつかなぁ??
なんかさっきからいじってるけど、ローカルポケットに落ちてる気がする。
グローバルポケットに落とす方法が皆目見当つかない。
解説頼む。

1008 名前:デフォルトの名無しさん [2017/12/30(土) 16:48:17.65 ID:ZPxTZMGf.net]
すみません, お題での 集合 は Ruby では Setクラス のような, 要素に重複や順序性のないものを考えていました.
想定していた回答例は以下です.
answer
(2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 113 127 131 137 139)
(apply #'+ answer)
2018
(length answer)
33

1009 名前:デフォルトの名無しさん mailto:sage [2017/12/30(土) 17:07:30.49 ID:YKsh4iwJ.net]
9個まではすぐ見つかるんだけど10個になった途端重くなる
10個の場合は存在しない?
逆に21個や33個の場合はすぐ見つかるんだ、どういう分布なんだろな

1010 名前:デフォルトの名無しさん mailto:sage [2017/12/30(土) 17:11:07.91 ID:6VD4P8Az.net]
>>972
おー、よかった。どこまで深淵があるのか怖かったよ。
多分、>>963であってると思う。たぶん。

1011 名前:デフォルトの名無しさん mailto:sage [2017/12/30(土) 18:48:52.49 ID:YKsh4iwJ.net]
>>959 C#
https://ideone.com/J9MmxS
33個と決め打ちした場合は4通りがすぐ出る
そのあと延々ループしてるがTime limit exceededで打ち切ってくれる

1012 名前:デフォルトの名無しさん [2017/12/30(土) 21:03:54.80 ID:30TR5CU8.net]
>>959
1も素数なんだが1が2018個ある集合はありなのか?
それだとお題としてほとんど意味のないひっかけ問題みたいになるわけだが、
そうではないなら問題を修正しろ。

1013 名前:デフォルトの名無しさん mailto:sage [2017/12/30(土) 21:15:48.77 ID:KgXg1sy3.net]
>1も素数なんだが
>1も素数なんだが
>1も素数なんだが

1014 名前:デフォルトの名無しさん [2017/12/30(土) 21:23:36.74 ID:bLWDJrON.net]
>>977
あ、2か。
でも問題がこれだと同じことだよなあ。

1015 名前:デフォルトの名無しさん mailto:sage [2017/12/30(土) 21:26:45.29 ID:bA88XQgg.net]
>>976
4つ上のレスも確認できないくせに何言ってんの



1016 名前:デフォルトの名無しさん [2017/12/30(土) 21:42:01.90 ID:ZPxTZMGf.net]
一般に, 素数は 1およびその数自身のほかに約数を有しない正の整数 と定義されますので, ここではその定義に従います.

また一般に, 重複や順序性のない もののあつまり を 集合(set) と呼ぶことが多いので, ここではその用法に従います.
集合(set)に対して, ものをならべたものは列(sequence)と呼ぶことが多いです.
ここでは『AABBCC』は文字列ですが, 文字集合ではないとします.

% irb
irb(main):001:0> require 'prime'
=> true
irb(main):002:0> 1.prime?
=> false
irb(main):003:0> 2.prime?
=> true
irb(main):004:0> require 'set'
=> true
irb(main):005:0> Set.new([1]*2018).size
=> 1

1017 名前: mailto:sage [2017/12/31(日) 00:33:09.15 ID:UjqOw9qv.net]
お題:指定した複数の wav フォーマットを連結して一つ wav ファイルを作成するプログラムを書け
・ファイルの指定方法はコマンドライン引数指定でかまわない
・wav ファイルフォーマットの仕様上の上限である 4GiB まで正常に結合できることを必須の最低条件とする
・PCM フォーマット・ステレオ2ch・サンプリング周波数 44.1kHz に対応しておればよい
・GUI に対応しておればなおよい

背景:いや、いろいろダウンロードして試しているのだけれども、4GiB まで正常に結合できるソフトウェアが見つからないのです‥

1018 名前:デフォルトの名無しさん mailto:sage [2017/12/31(日) 01:09:52.02 ID:iFZSMKfw.net]
それでこのスレに辿り着くのは面白い

1019 名前:デフォルトの名無しさん mailto:sage [2017/12/31(日) 01:21:45.50 ID:QH0un2fa.net]
前からこのスレにいる人でしょ。
お題としてはまったくこのスレに向いてないと思うが。

1020 名前:デフォルトの名無しさん mailto:sage [2017/12/31(日) 01:55:26.47 ID:mjAZsjOp.net]
2000から3000位まで試してみたが、大体33前後になるみたい
(微妙に増加していくが緩慢)

1021 名前:デフォルトの名無しさん [2017/12/31(日) 03:02:32.19 ID:rf+Z6LCT.net]
>>981
これ使えないか?
hakobe932.hatenablog.com/entry/20060613/1150208682

1022 名前:デフォルトの名無しさん mailto:sage [2017/12/31(日) 05:23:36.13 ID:Q5J3BQB7.net]
>>981
waveチャンクって2gbまでだっけ?sizeフィールドが32bitsignedだったような気がするんだけど。どうだっけ?

1023 名前:デフォルトの名無しさん mailto:sage [2017/12/31(日) 05:28:08.43 ID:Q5J3BQB7.net]
書き出すのはそんなに難しくないんだけど、読み込むのが面倒なんだよなぁ。
それに、適当にくっつけるとくっつけたところにブツ!っていうのノイズが入ることがあったはず。

1024 名前:デフォルトの名無しさん mailto:sage [2017/12/31(日) 05:33:17.47 ID:Q5J3BQB7.net]
https://ideone.com/AExWE6
これで、ちっちゃいやつは書き出した実績がある。ローカルの話だけどな。
読み込みはRiffの仕様よく知らないからわからない。

1025 名前:デフォルトの名無しさん mailto:sage [2017/12/31(日) 09:49:37.67 ID:Jha/n6sD.net]
自分で書くよりfoobar2000でMerge all tracks into one output fileしちゃうよな
むしろ6GBとかいける、wave64になってんのかな



1026 名前:デフォルトの名無しさん mailto:sage [2017/12/31(日) 10:12:35.10 ID:vp+PvkVL.net]
完全にスレチ

1027 名前: mailto:sage [2017/12/31(日) 13:06:54.78 ID:UjqOw9qv.net]
>>989
foobar2000 に merge する項目はありますか?
最新バージョンをインストールしましたが見当たりません‥

1028 名前:デフォルトの名無しさん mailto:sage [2017/12/31(日) 14:14:14.10 ID:Jha/n6sD.net]
>>991
foo_converter.dllが標準で入ってるからそのまま使えるよ
スレチというかこの場合はサイト違いだな、Hydrogenaudioで検索した方が沢山みつかる

1029 名前:デフォルトの名無しさん mailto:sage [2017/12/31(日) 19:53:16.48 ID:R6E+DNla.net]
"2018と素数" 類似問題
[お題]
前問よりどうやら、ユニークな素数の和で2018を作ると、
構成(要素)数 33個が最大で 4種類あるらしい。
最小は2個で27種類あるみたいだ。
3個だと 73種類、 4個だと 85014種類あるみたいだ。

ユニークな素数の和で2018を作る時、
最大の種類が作れるのは、構成数何個のときで、何種類か。

(注) 8個を超えると10億超えがしばらく続くらしい。

1030 名前:デフォルトの名無しさん mailto:sage [2017/12/31(日) 19:58:31.90 ID:Q/CIq2T0.net]
>>981
ちゃんと理想の仕様を書けば作るけど

1031 名前:デフォルトの名無しさん mailto:sage [2017/12/31(日) 20:02:31.92 ID:Q/CIq2T0.net]
>>986
32bit unsignedで(4Gi-1)Bまでだね
ファイルサイズも32bit unsigned

1032 名前:デフォルトの名無しさん mailto:sage [2017/12/31(日) 22:29:40.39 ID:q2wUTltf.net]
>>993 Java
https://ideone.com/DHe5Ij

1033 名前: mailto:sage [2018/01/01(月) 00:07:03.13 ID:JOZ5/YyG.net]
>>981
mevius.2ch.net/test/read.cgi/tech/1434079972/30
‥‥書初めになりました

1034 名前:デフォルトの名無しさん [2018/01/01(月) 06:04:16.51 ID:4wMbPbHX.net]
どうして2048ではなく2018などという中途半端な数にしたんだろうとずっと不思議に思っていたのだが(お題だから敢えて変な数にしたのかとか思ったんだが)、ようやっとわかったよ。今年の西暦年だったんだね。

1035 名前:デフォルトの名無しさん mailto:sage [2018/01/01(月) 06:13:54.33 ID:+ZNxt5nC.net]
>>995
勘違いしてたか。訂正ありがとう。



1036 名前:デフォルトの名無しさん mailto:sage [2018/01/01(月) 08:09:01.71 ID:OeEKMk/d.net]
>>997
そっちのスレに書くと本当にBTC貰えるの?
てか、出題者と交渉したって貰える保障が全くなくて無意味なスレのような気がするんだけど。

1037 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 395日 15時間 10分 31秒

1038 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<280KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef