PPAPテストをPHPで
概要
- PPAPテストを Web Audio API で
- その発想はなかった
環境
- PHP 7.1.0RC5
実装
- 以前実装したネタとはできるだけ被らないようにする
- ズンドコキヨシ with PHP
- 変数を使わずズンドコキヨシ with PHP
- こんなズンドコキヨシは嫌だ with PHP
- こんなズンドコキヨシは嫌だ with PHP その2
- 追記:途中から本筋でなく無理矢理なループの実現に力を入れ始めた :puke:
シンプルに
<?php
$ppap = [
'ペン',
'パイナッポー',
'アッポー',
'ペーン',
];
while (true) {
shuffle($ppap);
$result = implode('', $ppap);
echo $result . PHP_EOL;;
if ($result === 'ペンパイナッポーアッポーペーン') {
break;
}
}
echo '\(^o^)/ピコ!' . PHP_EOL;
iterator
<?php
class PPAP implements Iterator
{
public $ppap = [
'ペン',
'パイナッポー',
'アッポー',
'ペーン',
];
public function current()
{
shuffle($this->ppap);
return array_shift($this->ppap);
}
public function key()
{
}
public function next()
{
}
public function rewind()
{
$this->ppap = [
'ペン',
'パイナッポー',
'アッポー',
'ペーン',
];
}
public function valid()
{
return count($this->ppap);
}
}
$ppap = new PPAP();
loop:
$result = '';
foreach ($ppap as $p) {
$result .= $p;
}
echo $result . PHP_EOL;
if ($result !== 'ペンパイナッポーアッポーペーン') {
$ppap->rewind();
goto loop;
}
echo '\(^o^)/ピコ!' . PHP_EOL;
generator
<?php
$result = '';
foreach ((function () {
$ppap = [
'ペン',
'パイナッポー',
'アッポー',
'ペーン',
];
shuffle($ppap);
foreach ($ppap as $p) {
yield $p;
}
})() as $p) {
$result .= $p;
}
echo $result . PHP_EOL;
if ($result !== 'ペンパイナッポーアッポーペーン') {
require __FILE__;
} else {
echo '\(^o^)/ピコ!' . PHP_EOL;
}
generator (意地でもshuffle使いたくなかった版)
#!/usr/local/bin/php
<?php
$result = '';
foreach ((function () {
$ppap = [
'ペン',
'パイナッポー',
'アッポー',
'ペーン',
];
$f = function ($ppap) {
$rand = array_rand($ppap);
$p = $ppap[$rand];
unset($ppap[$rand]);
$ppap = array_values($ppap);
return [$p, $ppap];
};
$count = count($ppap);
for ($i = 0;$i < $count;$i++) {
list($p, $ppap) = $f($ppap);
yield $p;
}
})() as $p) {
$result .= $p;
}
echo $result . PHP_EOL;
if ($result !== 'ペンパイナッポーアッポーペーン') {
system(__FILE__);
} else {
echo '\(^o^)/ピコ!' . PHP_EOL;
}