※追記:mac以外で閲覧するとコードが壊れているみたいです。

やっほー!d=(^o^)=b

今日はAizu Advent Calendar14日目として記事を書くよd=(^o^)=b

ってことで、何を書こうか迷ったんだけど、d=(^o^)=bをネタに書きますd=(^o^)=b

ところで、d=(^o^)=b ←この顔文字、ヅ大生(主に@yutopp氏?)がよく使っている気がするけど、気のせいかしらd=(^o^)=b

↓例

d=(^o^)=bがなにを意味するのかはよくわかんないんだけど、まあ本題へd=(^o^)=b

d=(^o^)=bでJavaScriptプログラミング

ああまた記号プログラミング系か、と思った方にはあんまり面白くないかもd=(^o^)=b

だけどその前に、もう一度この顔文字d=(^o^)=bをよく見てほしいのですd=(^o^)=b

この顔文字、プログラムに見えてこないでしょうかd=(^o^)=b

グッドな気分を表現した手「d=」「=b」は代入文の一部だし、幸せそうな笑顔「(^o^)」は「(」と「o」と「)」の排他的論理和に見えるような・・・d=(^o^)=b

と言ってみたはいいものの、残念ながらこれd=(^o^)=bをきちんと生かしたものは思いつかなかったので、普通の記号プログラミングになりますd=(^o^)=b

しかし、プログラムと親和性の高い顔文字d=(^o^)=bを使うことによって、皆様の記号プログラミングに対する違和感を和らげればと思っていますd=(^o^)=b

以下は、alert(‘d=(^o^)=b’)を実行するプログラムになりますd=(^o^)=b

d=(ˆoˆ)=b=d=(ˆoˆ)=6,d={ˆọˆ:{b:d=(ˆoˆ)/=b},ˆᇰˆ:{b:d+=(ˆoˆ)!=b},ˆᐤˆ:{b:d+=(ˆoˆ)!=b},ˆoˆ:{b:d+=(ˆoˆ)!=b},ˆᵒˆ:{b:d+=(ˆoˆ)!=b}},dᆖᑕˆọˆᑐᆖb=d+'=(^o^)=b',dᆖᑕˆᇰˆᑐᆖb=(d==(ˆoˆ)==b)+'d=(^o^)=b',dᆖᑕˆᐤˆᑐᆖb=!(d==(ˆoˆ)==b)+'d=(^o^)=b',dᆖᑕˆoˆᑐᆖb=d.ᆖᑕˆᐤˆᑐᆖb+'d=(^o^)=b',dᆖᑕˆọˆᑐᆖb[dᆖᑕˆᵒˆᑐᆖb=dᆖᑕˆọˆᑐᆖb[d.ˆᵒˆ.b]+'d=(^o^)=b'[d.ˆoˆ.b]+dᆖᑕˆoˆᑐᆖb[d.ˆọˆ.b]+dᆖᑕˆᇰˆᑐᆖb[d.ˆᐤˆ.b]+dᆖᑕˆᐤˆᑐᆖb[d.ˆọˆ.b-d.ˆọˆ.b]+dᆖᑕˆᐤˆᑐᆖb[d.ˆọˆ.b]+dᆖᑕˆoˆᑐᆖb[d.ˆọˆ.b-d.ˆọˆ.b]+dᆖᑕˆọˆᑐᆖb[d.ˆᵒˆ.b]+dᆖᑕˆᐤˆᑐᆖb[d.ˆọˆ.b-d.ˆọˆ.b]+'d=(^o^)=b'[d.ˆoˆ.b]+dᆖᑕˆᐤˆᑐᆖb[d.ˆọˆ.b]][dᆖᑕˆᵒˆᑐᆖb](dᆖᑕˆᇰˆᑐᆖb[d.ˆọˆ.b]+dᆖᑕˆᇰˆᑐᆖb[d.ˆᇰˆ.b]+dᆖᑕˆᇰˆᑐᆖb[d.ˆoˆ.b]+dᆖᑕˆᐤˆᑐᆖb[d.ˆọˆ.b]+dᆖᑕˆᐤˆᑐᆖb[d.ˆọˆ.b-d.ˆọˆ.b]+('d=(^o^)=b')[d.ˆᇰˆ.b]+"'d=(^o^)=b'"+'d=(^o^)='[6])()

見やすくするとこんな感じですd=(^o^)=b

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
d=(ˆoˆ)=b = d=(ˆoˆ)=6,
d={
  ˆọˆ: {b: d=(ˆoˆ)/=b}, // 1
  ˆᇰˆ: {b: d+=(ˆoˆ)!=b}, // 2
  ˆᐤˆ: {b: d+=(ˆoˆ)!=b}, // 3
  ˆoˆ: {b: d+=(ˆoˆ)!=b}, // 4
  ˆᵒˆ: {b: d+=(ˆoˆ)!=b} // 5
},
dᆖᑕˆọˆᑐᆖb = d+'=(^o^)=b', // "[object Object]=(^o^)=b"
dᆖᑕˆᇰˆᑐᆖb = (d==(ˆoˆ)==b)+'d=(^o^)=b', // "falsed=(^o^)=b"
dᆖᑕˆᐤˆᑐᆖb = !(d==(ˆoˆ)==b)+'d=(^o^)=b', // "trued=(^o^)=b"
dᆖᑕˆoˆᑐᆖb = d.ᆖᑕˆᐤˆᑐᆖb+'d=(^o^)=b', // "undefinedd=(^o^)=b"
dᆖᑕˆᵒˆᑐᆖb =
  dᆖᑕˆọˆᑐᆖb[d.ˆᵒˆ.b] + 'd=(^o^)=b'[d.ˆoˆ.b] + dᆖᑕˆoˆᑐᆖb[d.ˆọˆ.b] + dᆖᑕˆᇰˆᑐᆖb[d.ˆᐤˆ.b] +
  dᆖᑕˆᐤˆᑐᆖb[d.ˆọˆ.b-d.ˆọˆ.b] + dᆖᑕˆᐤˆᑐᆖb[d.ˆọˆ.b] + dᆖᑕˆoˆᑐᆖb[d.ˆọˆ.b-d.ˆọˆ.b] +
  dᆖᑕˆọˆᑐᆖb[d.ˆᵒˆ.b] + dᆖᑕˆᐤˆᑐᆖb[d.ˆọˆ.b-d.ˆọˆ.b] + 'd=(^o^)=b'[d.ˆoˆ.b] + dᆖᑕˆᐤˆᑐᆖb[d.ˆọˆ.b], // "constructor"
 
dᆖᑕˆọˆᑐᆖb[dᆖᑕˆᵒˆᑐᆖb][dᆖᑕˆᵒˆᑐᆖb] // Function
(
  dᆖᑕˆᇰˆᑐᆖb[d.ˆọˆ.b] + // "a"
  dᆖᑕˆᇰˆᑐᆖb[d.ˆᇰˆ.b] + // "l"
  dᆖᑕˆᇰˆᑐᆖb[d.ˆoˆ.b] + // "e"
  dᆖᑕˆᐤˆᑐᆖb[d.ˆọˆ.b] + // "r"
  dᆖᑕˆᐤˆᑐᆖb[d.ˆọˆ.b-d.ˆọˆ.b] + // "t"
  ('d=(^o^)=b')[d.ˆᇰˆ.b] + // "("
  "'d=(^o^)=b'" + // "'d=(^o^)=b'"
  'd=(^o^)='[6] // ")"
)()

記号だけのJavaScriptプログラミングの基本原理を参考にしたため、詳しい解説はこちらをご覧くださいd=(^o^)=b

少し変わっているところは、
unicode文字を使って「ˆoˆ」「dᆖᑕˆᐤˆᑐᆖb」等を変数名として使っていたり、
d+=(ˆoˆ)!=b と言った感じで計算をしていたり、
d==(ˆoˆ)==b でfalseを取得したところですかねd=(^o^)=b

「d=(^o^)=b」自体はほとんど使われておらず、それに近いunicode文字列を使ったものになってしまいましたd=(^o^)=b

もっとうまく作れる方がいれば是非挑戦してくださいd=(^o^)=b

明日のAizu Advent Calenderはabout_hiroppyさんですd=(^o^)=b

会津では雪が積もってるそうなので体にお気をつけてd=(^o^)=b

おまけd=(^o^)=b

“uXXXX”を使わずに、文字a-zを取得しようとするとこんな感じになりましたd=(^o^)=b
(最後はかなり無理をしていますd=(^o^)=b)

{
  a: dᆖᑕˆᇰˆᑐᆖb[d.ˆọˆ.b],
  b: dᆖᑕˆọˆᑐᆖb[d.ˆᇰˆ.b],
  c: dᆖᑕˆọˆᑐᆖb[d.ˆᵒˆ.b],
  d: 'd=(^o^)=b'[d.ˆọˆ.b-d.ˆọˆ.b],
  e: dᆖᑕˆᇰˆᑐᆖb[d.ˆoˆ.b],
  f: dᆖᑕˆᇰˆᑐᆖb[d.ˆọˆ.b - d.ˆọˆ.b],
  g: 'g=(^o^)=b'[d.ˆọˆ.b - d.ˆọˆ.b],
  h: 'd=(^o^)=h'[d.ˆᵒˆ.b + d.ˆᐤˆ.b],
  i: dᆖᑕˆoˆᑐᆖb[d.ˆᵒˆ.b],
  j: dᆖᑕˆọˆᑐᆖb[d.ˆᐤˆ.b],
  k: 'd=(^o^)=k'[d.ˆᵒˆ.b + d.ˆᐤˆ.b],
  l: dᆖᑕˆᇰˆᑐᆖb[d.ˆᇰˆ.b],
  m: 'm9(^o^)m9'[d.ˆọˆ.b-d.ˆọˆ.b],
  n: dᆖᑕˆoˆᑐᆖb[d.ˆọˆ.b],
  o: 'd=(^o^)=b'[d.ˆoˆ.b],
  p: 'q=(^o^)=p'[d.ˆᵒˆ.b + d.ˆᐤˆ.b],
  q: 'q=(^o^)=p'[d.ˆọˆ.b-d.ˆọˆ.b],
  r: dᆖᑕˆᐤˆᑐᆖb[d.ˆọˆ.b],
  s: dᆖᑕˆᇰˆᑐᆖb[d.ˆᐤˆ.b],
  t: dᆖᑕˆᐤˆᑐᆖb[d.ˆọˆ.b-d.ˆọˆ.b],
  u: dᆖᑕˆoˆᑐᆖb[d.ˆọˆ.b-d.ˆọˆ.b],
  v: 'd=(^v^)=b'[d.ˆoˆ.b],
  w: 'd=(^w^)=b'[d.ˆoˆ.b],
  x: 'd=(^x^)=b'[d.ˆoˆ.b],
  y: 'd=(^y^)=b'[d.ˆoˆ.b],
  z: 'd=(^z^)=b'[d.ˆoˆ.b]
}