No video

【ゆっくり解説】テトリスが6行で書ける?!驚異のショートコーディング

  Рет қаралды 128,851

ゆっくりコンピュータサイエンス

ゆっくりコンピュータサイエンス

Күн бұрын

テトリスのプログラムは6行で書ける?!
ショートコーディング、別名コードゴルフやコードパズルと呼ばれるスーパーハカー達によるゲームプログラミングの神髄、脅威のコードについてゆっくり解説します。
参考文献
zapanet.info/b...
qiita.com/yoit...
uguisu.skr.jp/...
このチャンネルでは、コンピュータサイエンスを中心に、ソフトウェア、ハードウェア、ゲームなどについてゆっくり解説の動画をアップロードしていきます
BGM素材
【東方】おてんば恋娘【自作アレンジ】
【BGM・日常】Positive
【自作曲】cat on piano【ライトタッチピアノ】
ニコニ・コモンズ commons.nicovi...
#ゆっくり解説 #プログラミング #ゲーム開発 #コンピュータサイエンス

Пікірлер: 135
@user-xu2vt8ew5y
@user-xu2vt8ew5y 11 ай бұрын
256バイトでどれだけリアルな炎が描画できるか競う世界的なコンテストとかもある 512バイト部門とかあったりする。最近はもっと増えてるかも知れないけど。
@01kum35
@01kum35 Жыл бұрын
昔、アスキーでBASICで作る1行プログラムの投稿コーナーがあったな~
@detokonba
@detokonba 11 ай бұрын
懐かしすぎ
@user-ck5vq5ke1p
@user-ck5vq5ke1p 11 ай бұрын
学生時代にメモリ容量が数キロバイトしかないPCで多変量解析のプログラム書いたのを思い出した。 登校前にrunして、帰宅後にfatal errorが表示されてたときの絶望感。しかも、それが:と;の間違いだった時の悔しさは今でも思い出せる。
@yukkuriCS
@yukkuriCS 11 ай бұрын
つらい🤣 昔は作りこむのも実行するのもヘビーですね そして放置すると母親に電源引っこ抜かれそう
@ussee-ussee-usseewa
@ussee-ussee-usseewa 11 ай бұрын
;;
@reboot9981
@reboot9981 11 ай бұрын
前日に机上デバッグして、朝一でソース修正した後にコンパイルかけて、夕方にerrorが出てた日には... いやぁ、懐かしい。コスモ(三菱の汎用機)でもコンパイルに半日以上かかってた(笑)
@user-zf5hh6qd2l
@user-zf5hh6qd2l 11 ай бұрын
ケータイの容量が少なくてアプリのサイズがかなり制限された時代も、出力ファイルをフロッピーディスクに収めるためにブロック化係数を工夫した時代も経験したけど。 今の時代になって、こうして小さいサイズを競う技術が発達してるのが不思議。
@yukkuriCS
@yukkuriCS 11 ай бұрын
ブロック調整するのはすごい😂
@keikoforsub
@keikoforsub 11 ай бұрын
ゆったりのんびり走れる道でもぶっ飛ばして短縮する人がいる。 ゆったりのんびりできるゲームでも必要最低限を行い短縮する人がいる。 もしかしたら短縮は人間の本能なのかもしれない。。。。。 これ信じ、ない、はあな、次第。
@inakajin9562
@inakajin9562 11 ай бұрын
昔のパソコン雑誌で見た一行プログラムを思い出した。 プログラムの途中で自身のコードを書き換えるなんていう凄いことをやっているのもあった。
@necosh
@necosh 11 ай бұрын
BASICで、グラフィックエディタを一行に収めたプログラムを見たときを思い出した。行数を減らすのとは違うけど、括弧付きの四則演算を逆ポーランド記法に並べ替えるプログラムを見たときの衝撃も忘れられない。
@paisley6660
@paisley6660 11 ай бұрын
コードを短くしてメモリ使用量を減らすのも重要だが、実行速度を限界まで速くするのも重要だった。
@yukkuriCS
@yukkuriCS 11 ай бұрын
昔は処理能力含めてすべてのリソースが足りてなかったですね😂
@user-xq2ht9zl9n
@user-xq2ht9zl9n 11 ай бұрын
@@yukkuriCS 今や、どれだけ小さい値でもshort,byteじゃなくint使いますもんね...
@spstmk
@spstmk 11 ай бұрын
1行PGではないですが、仕事でマイコン制御(Z80)のメモリが足りなくてLCD表示のメッセージ内容をバイト単位で調整したことがあります。昔は本当にメモリ節約との闘いでした
@yukkuriCS
@yukkuriCS 11 ай бұрын
大変ですけど、妙に職人芸的な達成感のある作業ですよね😆
@user-yn3qj5ek5t
@user-yn3qj5ek5t 11 ай бұрын
動画自体も面白かったが、ここにあるいろんな人のコメントも技術の進歩とか努力や工夫が感じれて面白かった。
@user-gb3ce7ur1s
@user-gb3ce7ur1s 11 ай бұрын
6行でここまで動くゲームがあるなんて・・・・ 昔たまごっちのような極小携帯機にいくつものゲームが収録されてるようなものがありましたが、あれもこのショートコーディングで最小化して詰め込んでるから出来たことだったんでしょうね
@yukkuriCS
@yukkuriCS 11 ай бұрын
このテトリスは可読性を捨てすぎなのでここまでではないかもですが、かなり最適化されてるんでしょうね👍
@yuyuyuyucollapse
@yuyuyuyucollapse 11 ай бұрын
昔、エミュレータの実行速度が足りないのをアセンブリで記述することで解決した化け物がいたのを思いだしたのぜ
@yukkuriCS
@yukkuriCS 11 ай бұрын
昔とはいえコンパイラの最適化を超えるのはすごい!
@user-px6qq9cx6e
@user-px6qq9cx6e 11 ай бұрын
コードが複雑化してる… 短縮の天才だけど、全体で開発する時には全く使えない感すごいw
@YAMAMOTORUMI
@YAMAMOTORUMI Жыл бұрын
昔、MSX・FANという雑誌に1画面プログラムの投稿ページあったなぁ。 BASICで1画面以内というレギュレーション。 毎月沢山投稿されててみんな凄いなぁと当時感心してた
@user-mz4jg1ul5k
@user-mz4jg1ul5k 11 ай бұрын
力作はほぼバイナリで書かれてて行の最後にチェックサムがあるので、RUNさせるとどこの行に打ち間違いがあるかが分かるという優れもの達だった遠い記憶、ゲームという餌につられたおかげでタッチタイプ(ブラインドタッチ)覚えられました。
@spstmk
@spstmk 11 ай бұрын
その1行プログラム、子供の頃にMSXで打ち込んだ事があります。入力し終わったところでセーブ前に別の理由で父に玄関のブレーカーを落とされて、へこんだ思い出が・・(笑)
@dainopumouser685
@dainopumouser685 5 ай бұрын
掲載された事があります。 当時はネットなんてものは無いですから、 ハガキの裏に1画面分のコードを手書きして郵送しました。
@bhz072t
@bhz072t Жыл бұрын
Dr.STONEでSAIが言ってたのってこれの事か…本当だったんだな。すげぇ。
@100EIZO
@100EIZO Жыл бұрын
ゴルフになぞらえるセンスが好き
@user-jt3mk4de4x
@user-jt3mk4de4x 11 ай бұрын
伝説のtinyBasic、僅か2kBのBASICインタプリタだったな。機械語レベルでガチガチの最適化をしてた
@userHuyEg
@userHuyEg 11 ай бұрын
昔のパソコン雑誌の投稿コーナーでほんの数行で1ドット単位のブロック崩しがプレイできて驚いた記憶があります
@yukkuriCS
@yukkuriCS 11 ай бұрын
おお、面白そう!
@konens
@konens 11 ай бұрын
勘違いしている人がいるようだけど、ソースコードが短くても JavaScriptで作ってるってことは遅くてメモリ大量に食ってるからな
@user-dj8tm3yy2t
@user-dj8tm3yy2t 11 ай бұрын
可読性をフルマックスにして欲しい
@yukkuriCS
@yukkuriCS 11 ай бұрын
まともに作ったら結構な行数になりそう😂
@reboot9981
@reboot9981 11 ай бұрын
昔は、320ドットでした。ちなみにプログラムは、マシン語で作ってました(笑) ザイログ社のCPUは、アドレス指定が独特でした。 80文字は、IBMがパンチカードの桁を80桁にしてから今も1行80桁が標準みたいになってますね。
@yukkuriCS
@yukkuriCS 11 ай бұрын
320ドットはPC-8000シリーズとかの時代ですかね😆
@reboot9981
@reboot9981 11 ай бұрын
PC8001は、なんと160×100でした(笑) たしかカラーは、16色だったような🤔
@shhi9379
@shhi9379 11 ай бұрын
6:08 オセロ、並び取りは超序盤の悪手。
@user-nw1is5kd8k
@user-nw1is5kd8k 10 ай бұрын
言うても-6程度だから人間レベルなら問題にならないレベルだよ
@poohtaro_0621
@poohtaro_0621 11 ай бұрын
30年前は、メインフレームですらメモリ削減のためにCOBOLでも使っちゃいけない命令がありましたわ
@yukkuriCS
@yukkuriCS 11 ай бұрын
おお、そんなことが! cobol触ったことないから興味深い🤔
@nabesen
@nabesen 11 ай бұрын
プログラマブル関数電卓やグラフ電卓でインタープリタ形式でプログラミングできるよ グラフ電卓ならドット絵でシューティングやRPG、棒マリオなどのゲームも作れるし、マシン語使えば高速実行もできる 学校教育にプログラミングが導入された関係で、グラフ電卓上でPythonも動かせる どちらも関数電卓でもあるので複素数やベクトルなど数値演算は得意
@eiichikudo7467
@eiichikudo7467 2 жыл бұрын
一行80字はパンチカードとFORTRANの時代の名残ですね。
@yukkuriCS
@yukkuriCS 2 жыл бұрын
なんと、そんな時代からでしたか! パンチカードとかメインフレームとか触ったことないです!
@eiichikudo7467
@eiichikudo7467 2 жыл бұрын
@@yukkuriCS 「昔はこうだった」を自慢げに語るのは野暮の極みと自覚しておりますが、あえて書いてしまいます(笑) FORTRANのプログラムをパンチカードで読ませるミニコンのコンソールはビデオ端末ではなくてトグルスイッチとテレタイプでした たぶん、あの手のレトロコンピュータに触ったことがあるのは1960年代生まれまでなんではないかと思います。 もひとつ言えば、勤め出した1990年頃でも工場のNC工作機械では紙のパンチテープが現役で、 シリアルポート通信(データファイル媒体はフロッピー)に切り替わったのは92年とかそのへんだったような。 3次元CADでレンダリングしたちょっと重たい立体形状がグリグリ動かせるレベルだと テクトロニクスのグラフィック端末(表示処理のみ端末側で演算はミニコン本体側)が数百万 グラフィックワークステーション(CPUが68030 メモリ8MBくらいだったかな? OSはUNIX)が1000万円とかした時代の話です(笑)
@yukkuriCS
@yukkuriCS 2 жыл бұрын
@@eiichikudo7467 > トグルスイッチとテレタイプ おお、いにしえのコンピュータ感ありますね! 私はせいぜい8インチフロッピーくらいまでしか見たことないですw そしてむかしのコンピュータはお高いですね…
@user-xu2vt8ew5y
@user-xu2vt8ew5y 11 ай бұрын
FORTRANとかCOBOLは書きだすカラムとかも決まっててC言語やそれよりモダンな言語みたいに 自由なフォーマットで書けなかったなぁ(最近の言語使用は知らんけど)
@user-lo5zz5ph1v
@user-lo5zz5ph1v 11 ай бұрын
大学生協でパンチカードやコーディング用紙(マス目が80桁の原稿用紙のようなもの)を売ってたな。 肝心のカードパンチャーの方はかなり傷んでいて、まともに動作する台数は少なかった記憶がある。
@Pieceke
@Pieceke 11 ай бұрын
こういった手法もAIが学んで適当に描いたコードも超圧縮してくれるのが当たり前になりそうですね。私の糞コードも軽くしてほしい
@soota_youtube
@soota_youtube 11 ай бұрын
昔 SE「ソース1行500円」
@af6114
@af6114 Жыл бұрын
ソースコードが短いのは良いですけど、可読性が悪いのは嫌ですね。可読性と短いソースコードを両立したものが流行ればいいのに。
@sizime_25
@sizime_25 Жыл бұрын
それを言っちゃぁおしまいだ!! これはな、男の浪漫なんだよ!!
@af6114
@af6114 Жыл бұрын
@@sizime_25 すいません。野暮なコメントをしてしまいました。
@sizime_25
@sizime_25 Жыл бұрын
@@af6114 いやいや、謝んなくていいよ~! 僕こそ勘違いさせるコメントしてごめんね!!
@nichimikiyu
@nichimikiyu 11 ай бұрын
やさしいせかい
@syaaaaaamoziiii
@syaaaaaamoziiii 11 ай бұрын
や さ し い せ い か つ
@user-bi6sk9xv4s
@user-bi6sk9xv4s 11 ай бұрын
昔作ったCのオセロ同じような画面だったけど、どれくらいの文字数でつれたっけな。 アレは無理😅
@ib4950
@ib4950 Жыл бұрын
行数でなく、バイト数で教えてくれ
@Takuya_Katumi
@Takuya_Katumi 11 ай бұрын
これを考えるのもすごいけどこれを当たり前のように解読し実行するコンピュータさんサイドもすごい まああたりまえのことなんだろうけど
@Noah_1024
@Noah_1024 11 ай бұрын
前どっかで見たjQueryか何か使ってる奴かと思ったらちゃんとしたやつだった 外部ファイル呼び出し放題なら、多分どうとでもなるからな
@nikog3359
@nikog3359 Жыл бұрын
こーゆー人が覚醒して メガデモとか創るんだな。
@ab_221B
@ab_221B 11 ай бұрын
俺が知ってる範囲だと、殆どが他業種行ってる。 ちょっと違うが、ボースティックからゲーム販売されてた当時高校生の漫画家の赤松健さんとか。
@onigiriJRuchiBoost
@onigiriJRuchiBoost 5 күн бұрын
2:17 これ頭狂うわwww
@rrr9719
@rrr9719 Жыл бұрын
恐ろしい... プログラミングはまだまだ未知の領域があって面白いです😊
@user-ms5mu8hk4e
@user-ms5mu8hk4e 11 ай бұрын
JavaScriptがオブジェクト指向ではないと、、、?
@rrr9719
@rrr9719 11 ай бұрын
⁠@@user-ms5mu8hk4eすみません。受験期で疲れてたみたいで、なんか変なコメントしちゃってました笑 ご指摘ありがとうございます! 修正させていただきます!
@shikaishik
@shikaishik 11 ай бұрын
そういうことなのですね
@bm8656
@bm8656 2 ай бұрын
BGMの音量が大きすぎます
@ttao4446
@ttao4446 11 ай бұрын
実務を尽く否定した芸術ってことね笑
@kochimatsu5520
@kochimatsu5520 11 ай бұрын
今更だけど、「よろしくお願いするわ」が、グッとくる
@yukkuriCS
@yukkuriCS 11 ай бұрын
これはなかなか上級者🤔
@user-zf5br3zq3t
@user-zf5br3zq3t 11 ай бұрын
「こんなプログラムをかける奴は尊敬する」って話だけど、 仕事でコード見てるとこういうコード書く奴ってのは実際に居て 本人は大得意なんだけど他人が見たらこれほどソースコード直すのが嫌なコードはない (そしてそういう奴ってコメントもろくに書かない) 昔は制限があったから仕方ないにしても今はリソースも大量にあるんだしやる必要がない 一生その人が面倒みるならともかくプログラムって他人が見て仕様を理解したり参考にしたり勉強したりするもんだから 趣味や息抜きでやるならともかく仕事でこんな書き方しかしない奴はきついよね
@yukkuriCS
@yukkuriCS 11 ай бұрын
Cとかいろいろできちゃう言語仕様なんでクセの強いコード書く人いますね😂
@user-zf5br3zq3t
@user-zf5br3zq3t 11 ай бұрын
そうですね。組み込み系だと容量の制限もまだ普通にあるからそういう書き方する人もいるのはある程度理解はできるんですけどね(でもコメントはちゃんと書けよって思いますが) でもJavaとかC#でも書く奴がいてね・・
@user-cu4wo4wz7x
@user-cu4wo4wz7x 2 жыл бұрын
チャンネル登録しました
@yukkuriCS
@yukkuriCS 2 жыл бұрын
ありがとうございます!
@user-zo6vr6jo8o
@user-zo6vr6jo8o 2 жыл бұрын
どうやってブロックを回してるんですか?
@yukkuriCS
@yukkuriCS 2 жыл бұрын
操作方法の話であれば、移動が矢印キー、回転がスペースキーですね! プログラム的にはonKeyDown=K=event.which-38というところでキー入力を受け付けています。 ブロックやボードは1次元配列で管理して、X座標とY座標をうまくこねくりまわして90度回転を実現してますね。
@user-zo6vr6jo8o
@user-zo6vr6jo8o 2 жыл бұрын
@@yukkuriCS ありがとうございます!
@onigiriJRuchiBoost
@onigiriJRuchiBoost 5 күн бұрын
2:17 もうこれAPI使ってるスクリプトと同じやん。APIのスクリプト(例えばjqueryなど)は、こう言う感じやw
@user-ho2ch3mx7p
@user-ho2ch3mx7p 2 жыл бұрын
どうやって知識いれてるの?
@yukkuriCS
@yukkuriCS 2 жыл бұрын
プログラマとしての経験だったり昔興味があって調べたことだったりです!
@user-hs8xy5vy4z
@user-hs8xy5vy4z 11 ай бұрын
この手法でスーパーマリオ組んだら神
@yukkuriCS
@yukkuriCS 11 ай бұрын
ステージデータを持つ容量がないから横スクロール画面は自動生成ですね。むずぞう🤣
@user-nr1dx8ni2t
@user-nr1dx8ni2t 11 ай бұрын
ファミコンの神ソフトなんかショートコーディングの極みだと思う!ファミリーコンピュータなんか登場当初「8bitじゃロクなの生まれないだろう」と見られていたハードウェアらしいから!(o´∀`)b
@user-if4tb9wu4q
@user-if4tb9wu4q 11 ай бұрын
ファミコンでた頃は家庭用ゲーム機、ボビーパソコン、業務用基盤とほぼ8bitばかりですが 8bitじゃロクなの生まれないだろうってどういう流れの話ですか?
@早川眠人
@早川眠人 11 ай бұрын
8bitというより6502が制限あり過ぎだった為だと思われる
@konens
@konens 11 ай бұрын
八ビットで扱えるデータはちびっと、しか無いから
@user-if4tb9wu4q
@user-if4tb9wu4q 11 ай бұрын
@@konens 座布団そっと置いときますね(・∀・)
@balmst3445
@balmst3445 11 ай бұрын
FC版DQⅢはオープニングのカットで、どのくらい容量削減されていたのかな🤔 開始いきなり、「そっけねぇなぁ~!😲🤣」と思ったけど、今ではあれこそが、限界まで攻めたエニックスさんの勇者の印だと思っている😉
@naoyan4399
@naoyan4399 11 ай бұрын
テトリミノ用のEnum作ったら9行突破したんだが
@you2409
@you2409 Жыл бұрын
最近は80文字だと少なすぎるなー
@Karimia_clover
@Karimia_clover 11 ай бұрын
変数を1文字にしてプログラムしたら頭なくなりそう
@yukkuriCS
@yukkuriCS 11 ай бұрын
もはや脳トレ
@user-lb5bg9hd5r
@user-lb5bg9hd5r 11 ай бұрын
i modeでアプリ作った時に容量をどう削るかが一番の問題だった
@yukkuriCS
@yukkuriCS 11 ай бұрын
初期は容量少ないわ性能低いわパケット代高いわできつかったですよね🤣
@mikunitmr
@mikunitmr 11 ай бұрын
2ちゃんで紹介されてたやつかな。
@yukkuriCS
@yukkuriCS 11 ай бұрын
2ちゃんでショートコーディングやっているスレありましたね
@uzi_deer
@uzi_deer 11 ай бұрын
幅によっては1行なの草
@hogehage2023
@hogehage2023 11 ай бұрын
C言語やったら1行で書ける。 人間には読めないけど。
@coffeecocoa
@coffeecocoa 11 ай бұрын
俺なら4文字で書ける
@kate-jp1ko
@kate-jp1ko 4 ай бұрын
保守性が死んだら、元も子もないだろ?
@hosinonanako
@hosinonanako Жыл бұрын
対義語:スパゲティー
@Irix.5674
@Irix.5674 Жыл бұрын
ある意味ではこれもスパゲッティーだと思いますが。 取り敢えず可読性を犠牲にして可能な限り短くは 昔の容量が少なかった時代には必須のスキルでした。 ファミコン時代とか 1byte でも削れるなら削らなければ 入らなかったですからね。 それだけ容量制限が厳しい中でマリオとか DQ とか 実現していたのは恐ろしい技術力です。 現在ではふんだんに容量が使える分、そういった工夫に 技術を割くことがなくなりましたね。
@早川眠人
@早川眠人 11 ай бұрын
​@@Irix.5674 DQのカタカナは20文字しか入っていない
@user-yq1tv9ho1i
@user-yq1tv9ho1i 11 ай бұрын
いや、スパゲッティでしょ・・・ ただ、きれいに編んだ物になってます。
@KK-uh9vb
@KK-uh9vb 11 ай бұрын
何をどうやったらこのコードを思いつくのか。
@yukkuriCS
@yukkuriCS 11 ай бұрын
執念を感じますね…
@rouxtear
@rouxtear 11 ай бұрын
セリフしゃべらないぷよぷよはぷよぷよじゃ無いと思う
@yukkuriCS
@yukkuriCS 11 ай бұрын
ぱよえ~ん
@abcdefg-nj1gp
@abcdefg-nj1gp 11 ай бұрын
んなことできるんやねww
@marizotto540
@marizotto540 Жыл бұрын
ミニファイしてるだけじゃないの?
@phononmaser1024
@phononmaser1024 Жыл бұрын
逆ミニファイしてもわけわからんコードになってるよ JavaScriptの仕様をうまく使いまくって省略しまくってるからここまで短くなってる
@shuminchuuu
@shuminchuuu 11 ай бұрын
#include main.h
ついにExcelにpythonが搭載されたそうです(・ω・)ノ【使い方・活用例】
13:38
managed to catch #tiktok
00:16
Анастасия Тарасова
Рет қаралды 46 МЛН
女孩妒忌小丑女? #小丑#shorts
00:34
好人小丑
Рет қаралды 81 МЛН
Can This Bubble Save My Life? 😱
00:55
Topper Guild
Рет қаралды 84 МЛН
SPONGEBOB POWER-UPS IN BRAWL STARS!!!
08:35
Brawl Stars
Рет қаралды 18 МЛН
It's time for change, it's time for Linux.
10:53
DankPods
Рет қаралды 374 М.
【ゆっくり解説】ぷよぷよは何分で作れる?実際に開発して計測【ゲーム開発】
12:42
ゆっくりコンピュータサイエンス
Рет қаралды 9 М.
コンピュータメモリー(RAM)の仕組み
23:32
仕組みチャンネル
Рет қаралды 887 М.
managed to catch #tiktok
00:16
Анастасия Тарасова
Рет қаралды 46 МЛН