21 Weird Ways to Say Hello, World! 1,000,000 Times [English Subtitles]
ฝัง
- เผยแพร่เมื่อ 25 มิ.ย. 2024
- Without using for, while, goto, or recursion, I list many ways to achieve 1,000,000 iterations in C language (and others).
Compilation of about 50 solutions submitted on X (Twitter).
Original video: • ループや再帰なしで100万回Hello, W...
0:00 Intro
0:41 About this video
1:22 Solution 0. Arbitrary command execution
1:54 Solution 1. Alternatives to goto
2:06 Solution 2. Nested functions
2:33 Solution 3. Nested macros
2:41 Solution 4. include _FILE_ + ifdef
3:49 Solution 5. include _FILE_ + _INCLUDE_LEVEL_
4:11 Solution 6. (C++) string concatenation
4:27 Solution 7. memcpy
4:50 Solution 8. (Haskell) Higher-order functions
5:18 Solution 9. Nested structs
5:57 Solution 10. Fork bomb
6:33 Solution 11. (Shell) yes
7:06 Solution 12. (C?) ASM
7:23 Solution 13. (C#, Unity) Debug.Log
7:53 Solution 14. (TeX)
omannumeral1000000000
8:33 Solution 15. (C++) Constructor
8:58 Solution 16. (C++) std::copy + std::iterator
9:31 Solution 17. (C++, Windows) std::fill machine code
10:07 Solution 18. Pseudo-recursion by execl
10:42 Solution 19. Pseudo-recursion by signal
11:06 Solution 20. Pseudo-recursion by manipulating stack frame
Sources
1. / 1761356736211116475
4. / 1760627640514551924
5. / 1761683709160489094
6. Comment by @aiueokakikukeko211 on the original video ( • ループや再帰なしで100万回Hello, W... )
7. / 1761432598155550765
8. / 1761006337201504563
9. / 1761473954706022791 (modified)
10. / 1761042293052911617
11. / 1761362014289756291
12. / 1761410659986866558
13. / 1761366941317710243
14. / 1761057143560843680
(Article: zrbabbler.hatenablog.com/entr...)
15. / 1761339306579309010
16. / 1760629869862596647
17. / 1761632036165652781
18. / 1761681997133758780
19. / 1761642924411093214
20. / 1761400003099234770
X: / evima0 - วิทยาศาสตร์และเทคโนโลยี
言語に縛りがないなら「おばあちゃん」に「LINE」というエディタを用いて「日本語」という言語で「Hello Worldと100万回送信して」と命令すれば時間はかかるけど100万回出力してくれるよ。
pyautoguiでpythonのプログラムからできるお^^
送り終える前に旅立つて
コンピューターおばあちゃん(物理)
鬼畜外道
1秒1メッセージでも2週間弱かかるのか…(困惑)
当時参加してました!面白かったのです!
プログラミングよく知らないけど、たったこれだけでこんなに色んな解法が出てくるのおもろいな
メモリ直接弄ってる辺りはC言語らしさ全開で笑った
最後の方法を見ると「やっぱりC言語って凄いなー」って思う(小並感
こういうの好き
おもろいネタですね。Pythonの機能しか考えてませんでした。
Unity二キシンプルなのにかしこすぎて感動した
最後すご
最初にことごとく別解を潰してくの好き
I like this type of video! Thanks! Waiting for more
You're welcome! I'll definitely try to make more videos about general programming. Well, this one is not really "general," though...
Quine 利用かなと思ったらやっぱりそういう方法多いですね。あと、20番思いついた人すごい
Pythonistaだから文字列掛け算かネスト関数か標準出力でどうこうするくらいしか思いつかなかったよ…
マクロでごちゃごちゃする方法は面白かったし、Haskellは生まれて初めて見た。
c/c++はコンピュータのヤバいところまで弄れて面白いなあ🤣
毎回の「へへ、そんなの簡単だよ」がくせになってだんだん可愛く感じてきた
It has been a while since your last long-format video!
オチ好き
i love you でやってみようと思います。
再帰呼び出しは本当にスタックオーバーフローしそうw
詳しくないから間違ってても怒らないで(予防線)
デフォルトのスタックサイズ (例えばLinuxでは8MB)で100万回再帰したらまず間違いなくスタックオーバーフローすると思いますが、スタックサイズを増やせば(ulimit -s unlimitedなど)問題なく動作するはずです。
関数の帰還アドレスをいじるやつ凄いな…
送信元アドレスいじってパケット大量に送りつける系の攻撃に似てると感じた…
Processingとかだとdraw関数内でprintlnすれば毎フレーム表示されるか
黒魔術、、、
品評会会場はここですか
brainfu*kでやりたくなるね…
TeXあの人かなと思ったらあの人だった☃
50万表示する関数と名前の違う50万表示する関数でできそうw
Cを投げ捨てて真っ先にyesとか言語作るとかだなあ(すでに繰り返してくれるものを利用する)と思ったけど
そうだよね、思考実験だから計算リソース(ulimit)無限だよね
Наконец-то нашел нормальный гайд по Hello world
個人的には17が好き
Rust には loop 文があるんだぜ
もしかして……(1..1000000).each(hello_world)的な、範囲オブジェクトの高階メソッドに処理を渡す系のプログラムは禁止されていない?
はい。(禁止事項に表面上触れなければ問題ありません。)
最後のやつ、グローバル変数ってこう使うんやな……
Solution like in Haskell is possible for any language that supports lambdas
Like that:
auto twice(auto f) {
return [=](){f(); f();};
}
// Somewhere else
twice(twice(twice([](){cout
The key trick of the Haskell solution is that you can pass one of your "repeater" functions to another (or the same) repeater function to get the effect of exponentiation. For example, (five five) is a function that repeats the given function 3125 times. For this to work, your repeater functions need to have the same return type as the argument type, which in turn requires the use of std::function or something similar when using a language that gives a different type to each lambda.
@@ramnie6999 Ok, i did a couple experiments, and: In dynamic languages it works easy, in Rust it refused to work until i moved functions into Box, in C++ it required std::function. Maybe Haskell being a static typed language allows such thing because of immutability
おもろい
世の中には変態が多いんだなぁ 11:50 100万になるまで動画投稿するってのはどう?
頑張ります。
インターバル実行出来れば…
Javaで実践した人いないかな
これバイナリは大差ないよな。。。
HQ9+「H」
BrainCrash「」
ブレインクラッシュ間違ってるかもしれない
スパコンで100万並列しよう
いいアイデアだ!
ところで…どうやってスレッドを100万個起動するんだい?
ワイ、なんとなくIT志望で就活してっけどこれ理解出来なきゃあかんやつか?
忘れろ
@@fuha5681
一言「忘れろ」とだけ言い残していくの強者感あって好き
自然に理解していくもんやで(沼に引きずり込みたいオタク)
これが出来なくても全然問題ないけど、こういうのが楽しめると仕事に対する考え方が変わるかもね
こんなに面白いことをお金をもらいながらできるとか最高か??って毎日思ってる
何となくのIT志望って正直続かないと思うんだが...
TeXの読み方は「テフ」では?
th-cam.com/video/8HuwiBPLV3A/w-d-xo.html TeXの開発者本人の発音がこの動画の最初の1秒で聞けます。
古典ギリシア語だと「ㇰ」で、現代ギリシャ語だと「ㇷ」
調べた感じ、テフ読みは日本だけらしい。
τεχνικήから来てるとのこと。
すごいなぁ、と思うけど、判読性が悪くて、デバッグやメンテナンスは大変
個人的にこれが割とシンプルで好きだったんだけどレギュ的にどうなんだろ
```c
#define A puts("Hello, world!
);
#define B A A A A A A A A A A // 10 回
#define C B B B B B B B B B B // 100 回
#define D C C C C C C C C C C // 1000 回
#define E D D D D D D D D D D // 10000 回
#define F E E E E E E E E E E // 100000 回
#define G F F F F F F F F F F // 1000000 回
int main(void) {
G
return 0;
}
```
もちろん合法です。解法3(f(f(f(f(f(f(puts("Hello World!");)))))))とほぼ同じと考えてフィーチャーしませんでしたが、もったいなかったかもしれません。
はえぇ〜
なんかすごいなぁ
覚えておこ
Block[{$RecurasionLimit=1000000},(Print["helloworld"];#[#])&[(Print["helloworld"];#[#]])&]を思いついた
seq 1000000 | xargs -I{} echo Hello,Word!
これもいいのかな?