Skip to content

Instantly share code, notes, and snippets.

@shouth
Created July 15, 2020 22:35
Show Gist options
  • Save shouth/411a5e30bbb6b6b3f4e74907c799d90e to your computer and use it in GitHub Desktop.
Save shouth/411a5e30bbb6b6b3f4e74907c799d90e to your computer and use it in GitHub Desktop.

これは何

ソフトウェア工学の課題でHello, world!難読化の課題が出たので面白がってやってたら何個かできたので紹介するよ! 授業では課題の提出物から何個かピックアップされて紹介されてたけど,作者はこの課題の締切には間に合わせたけど提出が遅かったからピックアップの対象の中に入ってさえいなかったよ!ちょっと悲しいね!

各プログラムの解説を途中まで書いてたけどめんどくさくなってきたから各プログラムの紹介で読解のためのヒント出す程度に留めることにするよ!

ただ読解するにも通常とはやや異なる書き方をしている部分があるから先にそこの説明だけしておくよ!

C言語では

  • 明示的に #include しなくてもいくつかの標準関数が使える.
  • グローバル変数の型の省略が許可される.省略した場合,型は int と解釈される.
  • 関数の返り値の型の省略が許可される.省略した場合,返り値の型は int と解釈される.
  • 関数の引数の型の省略が許可される.省略した場合,引数の型は int と解釈される.
  • \ を使うと文字列や変数名の途中でも改行することができる.
  • '\0' を真偽値として使うとfalseと判定される.0 がfalseと判定されるのと同様.
  • trueとなる条件式は 1 を,falseとなる条件式は 0 を返す.

1

#include<stdio.h>

int main() {
    for (int i = 0; i <= 12; i++) putchar((11496038400 + (387352851840 + (-1183123524672 + (1522101793608 + (-1089332757788 + (484856296210 + (-141723460681 + (27908010834 + (-3721696869 + (331047750 + (-18794347 + (615518 + (-8843) * i) * i) * i) * i) * i) * i) * i) * i) * i) * i) * i) * i) / 159667200);
}

ヒント:

  • ASCIIコード
  • ラグランジュ補間

2

i,j,c;main(){while(
"Dijkstra"[i-j]?("\
If DeBUGGinG iS_Th\
e prOCEss of REmoV\
ing_SOfTwaRE BuGS,\
 THen_ProgRamMing_\
Must Be The prOCEs\
s Of PUTtING tHEM \
IN."[i]>'^'?(c|=02\
00>>(i-j)):(c&=~(0\
200>>(i-j))),++i):\
(j=i,putchar(c)));}

ヒント:

  • ASCIIコード
  • 8文字ごとに分割

3

__,___,____,_____,______,_______,________,_________
,__________;main(_){(_||_)^_||(__=_,________=__<<_\
_,______=________<<__,_______=______<<__,_________\
=_______<<__,_____=_________<<__,___=_____<<__,___\
_______=___<<__),(____=____^____),_^__||(____=___^\
_______),_^___^_______^________||(____=___^_____^_\
_____^__),_^__________^___^_____^_________^__||(__\
__=___^_____^_______^______),_^__________^_______^\
______^________||(____=___^_____^_______^______),_\
^___^_____^_________||(____=___^_____^_______^____\
__^________^__),_^__________^_______^______^______\
__^__||(____=_____^_______^______),_^_____^_______\
__^________||(____=_____),_^___^______||(____=___^\
_____^_________^______^________^__),_^__________^_\
__^_____^_________^_______^______^________^__||(__\
__=___^_____^_______^______^________^__),_^_______\
___^_________^__||(____=___^_____^_________^______\
__),_^___^_________||(____=___^_____^_______^_____\
_),_^__________^___^_______^______||(____=___^____\
_^______),_^__________^___^_____^_________^_______\
^______||(____=_____^__),(_^_||putchar(____))^__||\
(_=_<<__^____,____=__^________^______^_______^____\
_____^_____^___^__________,main(_^____^(_|____)));}

ヒント:

  • ASCIIコード
  • 論理演算
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment