From 7b6319986030fc8a2fb5f851a431b5113e774f60 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Wed, 15 Mar 2023 02:20:00 +0900 Subject: fix(content): fix XML notations --- .../index.html | 488 ++++++++++----------- 1 file changed, 244 insertions(+), 244 deletions(-) (limited to 'public/posts/2022-09-29/write-fizzbuzz-in-php-2-letters-per-line') diff --git a/public/posts/2022-09-29/write-fizzbuzz-in-php-2-letters-per-line/index.html b/public/posts/2022-09-29/write-fizzbuzz-in-php-2-letters-per-line/index.html index 4d63296..480c2eb 100644 --- a/public/posts/2022-09-29/write-fizzbuzz-in-php-2-letters-per-line/index.html +++ b/public/posts/2022-09-29/write-fizzbuzz-in-php-2-letters-per-line/index.html @@ -126,79 +126,79 @@

#\
-  i\
-  n\
-  c\
-  l\
-  u\
-  d\
-  e\
-  <\
-  s\
-  t\
-  d\
-  i\
-  o\
-  .\
-  h\
-  >\
-  /*
-  */
-  i\
-  n\
-  t\
-  /*
-  */
-  m\
-  a\
-  i\
-  n(
-  ){
-  f\
-  o\
-  r(
-  i\
-  n\
-  t\
-  /*
-  */
-  i=
-  1;
-  i<
-  1\
-  0\
-  0;
-  i\
-  +\
-  +)
-  if
-  (i
-  %\
-  15
-  ==
-  0)
-  p\
-  r\
-  i\
-  n\
-  t\
-  f(
-  "\
-  F\
-  i\
-  z\
-  z\
-  B\
-  u\
-  z\
-  z\
-  %\
-  c\
-  ",
-  10
-  );
+i\
+n\
+c\
+l\
+u\
+d\
+e\
+<\
+s\
+t\
+d\
+i\
+o\
+.\
+h\
+>\
+/*
+*/
+i\
+n\
+t\
+/*
+*/
+m\
+a\
+i\
+n(
+){
+f\
+o\
+r(
+i\
+n\
+t\
+/*
+*/
+i=
+1;
+i<
+1\
+0\
+0;
+i\
++\
++)
+if
+(i
+%\
+15
+==
+0)
+p\
+r\
+i\
+n\
+t\
+f(
+"\
+F\
+i\
+z\
+z\
+B\
+u\
+z\
+z\
+%\
+c\
+",
+10
+);
 
-  /* あとは同じように普通のプログラムを変形するだけなので省略 */
+/* あとは同じように普通のプログラムを変形するだけなので省略 */

バックスラッシュを使った行継続がトークンを区切らない、というのがポイントだ。 @@ -280,11 +280,11 @@ a' まずは普通に書くとしよう。

-
<?php
+              
<?php
 
-    for ($i = 1; $i < 100; $i++) {
-    echo (($i % 3 ? '' : 'Fizz') . ($i % 5 ? '' : 'Buzz') ?: $i) . "\n";
-    }
+for ($i = 1; $i < 100; $i++) { + echo (($i % 3 ? '' : 'Fizz') . ($i % 5 ? '' : 'Buzz') ?: $i) . "\n"; +}

素直に書いた fizzbuzz とは言い難いが、このくらいは普通だということにしておかないと、この先がやっていられないので許してほしい。 @@ -299,12 +299,12 @@ a'

<?php
 
-  $s = range(1, 100);
-  array_walk(
+$s = range(1, 100);
+array_walk(
   $s,
   fn($i) =>
-  printf((($i % 3 ? '' : 'Fizz') . ($i % 5 ? '' : 'Buzz') ?: $i) . "\n"),
-  );
+ printf((($i % 3 ? '' : 'Fizz') . ($i % 5 ? '' : 'Buzz') ?: $i) . "\n"), +);

array_walkrangeprintfといったforよりも長いトークンが現れてしまったが、これは次節で直すことにする。なお、echoは文 (statement) であり式 (expression) ではないので、式であるprintfに置き換えた。 @@ -319,16 +319,16 @@ a'

<?php
 
-  $r = 'range';
-  $w = 'array_walk';
-  $p = 'printf';
+$r = 'range';
+$w = 'array_walk';
+$p = 'printf';
 
-  $s = $r(1, 100);
-  $w(
+$s = $r(1, 100);
+$w(
   $s,
   fn($i) =>
-  $p((($i % 3 ? '' : 'Fizz') . ($i % 5 ? '' : 'Buzz') ?: $i) . "\n"),
-  );
+ $p((($i % 3 ? '' : 'Fizz') . ($i % 5 ? '' : 'Buzz') ?: $i) . "\n"), +);

これで関数を呼び出している所は短くなった。では、$r$w$p、また'Fizz''Buzz'はどうやって 1行2文字に収めるのか。次のテクニックへ移ろう。 @@ -470,153 +470,153 @@ echo "$r\n";

<?php
 
-  $x
-  =#
-  'i
-  S'
-  ;;
-  $y
-  ='
-  b!
-  ';
-  $c
-  =#
-  $x
-  ^#
-  $y
-  ;#
-  $x
-  =#
-  'x
-  Om
-  ';
-  $y
-  ='
-  k!
-  o'
-  ;#
-  $r
-  =#
-  $x
-  ^#
-  $y
-  ;#
-  $x
-  =#
-  'k
-  Sk
-  ~}
-  Ma
-  ';
-  $y
-  ='
-  x!
-  s!
-  k!
-  ';
-  $w
-  =#
-  $x
-  ^#
-  $y
-  ;#
-  $x
-  =#
-  'z
-  Hd
-  G'
-  ;#
-  $y
-  ='
-  x!
-  ~!
-  ';
-  $p
-  =#
-  $x
-  ^#
-  $y
-  ;#
-  $x
-  =#
-  'L
-  [p
-  ';
-  $y
-  ='
-  c!
-  ';
-  $f
-  =#
-  $x
-  ^#
-  $y
-  ;#
-  $x
-  =#
-  'H
-  [p
-  ';
-  $y
-  ='
-  _!
-  ';
-  $b
-  =#
-  $x
-  ^#
-  $y
-  ;#
-  $b
-  [1
-  ]=
-  $c
-  (#
-  13
-  *9
-  );
-  $s
-  =#
-  $r
-  (1
-  ,(
-  10
-  **
-  2)
-  );
-  $w
-  (#
-  $s
-  ,#
-  fn
-  (#
-  $i
-  )#
-  =>
-  $p
-  ((
-  (#
-  $i
-  %3
-  ?#
-  ''
-  :#
-  $f
-  ).
-  (#
-  $i
-  %5
-  ?#
-  ''
-  :#
-  $b
-  )?
-  :#
-  $i
-  )#
-  .'
-  ')
-  );
+$x +=# +'i +S' +;; +$y +=' +b! +'; +$c +=# +$x +^# +$y +;# +$x +=# +'x +Om +'; +$y +=' +k! +o' +;# +$r +=# +$x +^# +$y +;# +$x +=# +'k +Sk +~} +Ma +'; +$y +=' +x! +s! +k! +'; +$w +=# +$x +^# +$y +;# +$x +=# +'z +Hd +G' +;# +$y +=' +x! +~! +'; +$p +=# +$x +^# +$y +;# +$x +=# +'L +[p +'; +$y +=' +c! +'; +$f +=# +$x +^# +$y +;# +$x +=# +'H +[p +'; +$y +=' +_! +'; +$b +=# +$x +^# +$y +;# +$b +[1 +]= +$c +(# +13 +*9 +); +$s +=# +$r +(1 +,( +10 +** +2) +); +$w +(# +$s +,# +fn +(# +$i +)# +=> +$p +(( +(# +$i +%3 +?# +'' +:# +$f +). +(# +$i +%5 +?# +'' +:# +$b +)? +:# +$i +)# +.' +') +);
@@ -638,16 +638,16 @@ echo "$r\n";
<?php
 
-  printf(`
-  e\
-  c\
-  h\
-  o\
-  \
-  1\
-  2\
-  3\
-  `);
+printf(` +e\ +c\ +h\ +o\ +\ +1\ +2\ +3\ +`);

なお、ここでは簡単のため出力にprintfをそのまま使っているが、実際にはprintfという文字列を合成して可変関数で呼び出す。 -- cgit v1.2.3-70-g09d2