[解決済み] このコードでインドの地図はどのように生成されるのでしょうか?
2022-04-29 19:26:22
質問
このコードはインドの地図を表示します。どのように動作するのでしょうか?
#include <stdio.h>
main()
{
int a,b,c;
int count = 1;
for (b=c=10;a="- FIGURE?, UMKC,XYZHello Folks,\
TFy!QJu ROo TNn(ROo)SLq SLq ULo+\
UHs UJq TNn*RPn/QPbEWS_JSWQAIJO^\
NBELPeHBFHT}TnALVlBLOFAkHFOuFETp\
HCStHAUFAgcEAelclcn^r^r\\tZvYxXy\
T|S~Pn SPm SOn TNn ULo0ULo#ULo-W\
Hq!WFs XDt!" [b+++21]; )
for(; a-- > 64 ; )
putchar ( ++c=='Z' ? c = c/ 9:33^b&1);
return 0;
}
解決方法は?
長い文字列は、バイナリ列をASCIIに変換しただけのものです。 最初の
for
文は
b
は10で始まり
[b+++21]
の後に31を出力します。 文字列を配列として扱うと、オフセット31は文字列の中の"real"データの開始位置となります(ご提供いただいたコードサンプルの2行目です)。 残りのコードは単純にビット列をループして、1や0を!や空白に変換し、一度に1文字ずつ表示します。
難読化されていないバージョン。
#include "stdio.h"
int main (void) {
int a=10, b=0, c=10;
char* bits ="TFy!QJu ROo TNn(ROo)SLq SLq ULo+UHs UJq TNn*RPn/QPbEWS_JSWQAIJO^NBELPeHBFHT}TnALVlBLOFAkHFOuFETpHCStHAUFAgcEAelclcn^r^r\\tZvYxXyT|S~Pn SPm SOn TNn ULo0ULo#ULo-WHq!WFs XDt!";
a = bits[b];
while (a != 0) {
a = bits[b];
b++;
while (a > 64) {
a--;
if (++c == 'Z') {
c /= 9;
putchar(c);
} else {
putchar(33 ^ (b & 0x01));
}
}
}
return 0;
}
は
<ストライク
変
巧妙な部分は
putchar
ステートメントを使用します。 最初の
putchar
. ASCII
'Z'
は10進数で90なので、90÷9=10で改行文字となります。 2つ目は、10進数で33がASCIIとなり
'!'
. 33の下位ビットを切り替えると32となり、これはASCIIでいうところのスペースになります。 このため
!
が印刷される場合
b
が奇数の場合は空白が印刷されます。
b
は偶数である。 残りのコードは単に"pointer"を歩かせるために存在します。
a
を文字列を通して表示します。
関連
-
C - 添え字の値が配列でもポインタでもベクトルでもないエラー
-
[解決済み] MIPSのネストされたForループと配列の使用
-
[解決済み] C言語で関数型プログラミングを行うためのツールにはどのようなものがありますか?
-
[解決済み] C言語では「?」演算子は何をするのですか?
-
[解決済み] C言語で配列のサイズを決定するにはどうすればよいですか?
-
[解決済み] 配列のすべてのメンバーを同じ値で初期化するには?
-
[解決済み] Cプリプロセッサはなぜ "linux "という単語を定数 "1 "と解釈するのですか?
-
[解決済み] Pythonのコードをユーザーに読まれないようにするにはどうしたらいいですか?
-
[解決済み] C言語でランダムなint型を生成するには?
-
[解決済み] printfは、フォーマット文字列の中に改行がないと、呼び出し後にフラッシュしないのはなぜですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
error: 'for' loop initial declaration is only allowed in C99 mode 原因と解決方法
-
initializer element is not constant "というエラーが表示されるのですが?
-
警告: 'struct XXX' はパラメータリストの内部で宣言されています。
-
[解決済み] stdinとSTDIN_FILENOの違いは何ですか?
-
[解決済み] C言語で関数型プログラミングを行うためのツールにはどのようなものがありますか?
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] なぜC言語では構造体を頻繁にtypedefする必要があるのですか?
-
[解決済み] なぜ16進数には0xがつくのですか?
-
[解決済み] なぜalloca()の使用はグッドプラクティスとみなされないのでしょうか?
-
[解決済み] FortranはC言語よりも重い計算を最適化しやすいですか?