数学@ふたば
[ホーム]

[掲示板に戻る]
レス送信モード
おなまえ
E-mail
題  名
コメント
添付File []
削除キー(記事の削除用。英数字で8文字以内)


画像ファイル名:1575075428031.jpg-(99151 B)
99151 B無題Name名無し19/11/30(土)09:57:08No.113257そうだねx1 20年6月頃消えます
「ループを使わずに1から100を順に出力するコードは書けますか」
という質問に、凄腕たちがプログラム的な技巧を
凝らした答えをする中、MSのデータサイエンティストが
「1000/(999^2)を300桁まで計算すると答えが0.01002003…099100になるよ」
とサラッと答えてて、どんな脳の使い方したら思い付くのそれ
https://twitter.com/i_kaseki/status/1200348149186842624/
削除された記事が2件あります.見る
1無題Name名無し 19/11/30(土)09:57:27No.113258+
    1575075447647.jpg-(15885 B)
15885 B
凡人だと再帰しか思いつかないですよね…
2無題Name名無し 19/11/30(土)22:43:40No.113260そうだねx1
    1575121420082.jpg-(129814 B)
129814 B
>ループを使わずに1から100を順に出力するコード
ぶっちゃけ、
60499999499/490050000000 ≈ 0.123456789101112131415…
もいい感じと思われるのですよ。
3無題Name名無し 19/12/01(日)07:28:35No.113261+
100行書けば?
4無題Name名無し 19/12/01(日)10:34:31No.113262+
>どんな脳の使い方したら思い付くのそれ
その場で思いついたわけでなく
一部で有名な式なのでは
5無題Name名無し 19/12/01(日)10:36:55No.113263+
Σってプログラム的にはループにあたるんじゃない?
高卒だから詳しくないけど。
6無題Name名無し 19/12/01(日)14:45:37No.113264+
Σは答えが0.01002003…099100…になることの証明で使ってるだけで元の計算式は1000/999/999で完結する
7無題Name名無し 19/12/01(日)18:08:50No.113265+
書き込みをした人によって削除されました
8無題Name名無し 19/12/01(日)18:09:11No.113266+
除算にはループが含まれるのでは……
ていうか
print "1\n";
print "2\n";
print "3\n";
...
print "100\n";
としてループを含まないprint実装を与えればおk
9無題Name名無し 19/12/05(木)18:04:09No.113283+
1や2じゃのうて001や002やないか(無粋
10無題Name名無し 19/12/05(木)18:39:31No.113285+
ショートコーディングガチ勢だったらひらめく人それなりにいそう
fizzbuzzという有名な問題もフェルマーの小定理とか使ってくる
11無題Name名無し 19/12/05(木)19:20:59No.113286+
これ実際は計算精度の問題で上手く行かないのでは
それに頭に0.が付いちゃう
12無題Name名無し 19/12/08(日)07:27:34No.113296+
”001002003…099100”を出力するのならソース1行でいけるかも
文字数制限あるやつだと2行ぐらい?
13無題Name名無し 19/12/08(日)19:08:25No.113300+
1から100が(順番とは限らずに)1回以上出現する文字列で最も短いものは何だろうか
例えば"1234567890"には12や23や34も出現すると見なしたとして
14無題Name名無し 19/12/09(月)12:56:28No.113306+
>1から100が(順番とは限らずに)1回以上出現する文字列で最も短いものは何だろうか
>例えば"1234567890"には12や23や34も出現すると見なしたとして
n文字並んでいたとして得られる1桁の数はn個同じく2桁の数は(n-1)個
おおざっぱに見積もって最大2n個の数しか得られないから1から100までの数を得るには最短でも50文字必要
普通に書き並べると190文字必要だから
正解は50から190文字の間
15無題Name名無し 19/12/10(火)10:17:46No.113312+
print "1\n 2\n 3\n ・・ 100\n";
じゃアカンのか・
16無題Name名無し 19/12/10(火)23:34:15No.113313+
>1から100が(順番とは限らずに)1回以上出現する文字列で最も短いものは何だろうか
>例えば"1234567890"には12や23や34も出現すると見なしたとして
答えは100桁

11〜99までの0を含まない数を表現するのに必要な文字数は9*9*2=162文字。
一列に並べると最初と最後の数字以外は二重で使えるので、82桁に圧縮できる。
0を含む数字について、20〜90は「0X」が不要なので2桁ずつ使用することになる。(上記の82桁の最後の数字を利用して-1)
100は3桁使用し、10も兼ねる。
以上を足し合わせて82+(2*8-1)+3=100桁
1桁は考える必要なし(2桁の数字に含まれるので)

n進数で1〜100を表した例(結果的にn^2桁が最短)
n=2:1100
n=3:221120100
n=4:3322112313020100
17無題Name名無し 19/12/12(木)17:47:31No.113316+
>n進数で1〜100を表した例(結果的にn^2桁が最短)
>n=2:1100
>n=3:221120100
>n=4:3322112313020100
なるほど
9988776655443322112313414245152535616263646717273747578182838485868919293949596979080706050403020100
が具体的な答えかな
ちなみにソースコードはこれ
https://ideone.com/XDXjzL
18無題Name名無し 19/12/13(金)07:01:09No.113317+
書き込みをした人によって削除されました
19無題Name名無し 19/12/13(金)07:02:04No.113318+
1並びの2乗が数字が並ぶので、それを使って100までループを使わずに表せ
の方が面白そう

1111111111^2=1234567890987654321みたいな
(合っているかわかりませんw)
20無題Name名無し 19/12/14(土)13:25:21No.113319+
IQが高すぎるスレ
del
21無題Name名無し 19/12/17(火)00:58:25No.113325そうだねx2
>1並びの2乗が数字が並ぶので、それを使って100までループを使わずに表せ
>の方が面白そう
100個の1の間に0を2つずつ挟んだ
Σ[k=0..99](10^(3k))
は2乗することで
1002003..099100099098..001
になる
22無題Name名無し 19/12/17(火)06:02:40No.113326+
>100個の1の間に0を2つずつ挟んだ
>Σ[k=0..99](10^(3k))
>は2乗することで
>1002003..099100099098..001
>になる
これが一番シンプルで確実じゃない?多倍長整数で
((10^300 - 1) / (999))^2
を計算するだけ
23無題Name名無し 19/12/28(土)12:12:35No.113350+
ループの定義とはなんじゃらほい
構造化プログラミングで言うところのループを
プログラマが明示的に書かなければおkなの?
しかし構造化プログラミング自体が厳密には数学的に定義されておらず以下無限ループ、

ていうか有限状態機械が元の状態に戻るのもループだと言われた時点で
チューリングマシン的解決は絶望的となる
セルオートマトンぐらいしか手段が残らん
24無題Name名無し 19/12/29(日)19:30:18No.113358+
実際問題
「可逆計算」と関わり合いがありそうな予感がするな
25無題Name名無し 19/12/29(日)21:26:47No.113359+
001002003004・・・098099100を
何倍すれば数字が揃うか考えれば

- GazouBBS + futaba-