2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[0,1,1,1,0,0,0,1,1,0,0,1,0,1,0]を作る旅

Last updated at Posted at 2022-09-12

プログラミングをやっていると、適当な順に並んだ整数をループで作り出したくなる瞬間が度々あると思います。

そんな時にはまず The On-Line Encyclopedia of Integer Sequences® (OEIS®) あたりを調査するのが定石だと思いますが、つい先日、面白い仕掛けを使っている tweet を発見しました。

なんと rand() を使用して、適当な整数配列を再現しようという試み!

そこで、seed の 152965 を簡単に探し出したいと思いコードを書いてみました。

<?php
$arr = [0,1,1,1,0,0,0,1,1,0,0,1,0,1,0];
$max= max($arr);
$min= min($arr);
$i = 0;
$count = count($arr);
$result = [];
while($result !== $arr){
    srand($i);
    for($j = 0; $j < $count; $j++){
        $rand = rand($min, $max);
        if($rand === $arr[$j]){
            $result[$j] = $rand;
        } else {
            $i += 1;
            break;
        }
    }
}
echo $i . PHP_EOL;

[0,1] 以外の組み合わせも対応できるように max, min を使用しましたが、paiza.io では time out になってしまったので、[0,1] 以外は現実的ではないかもしれません。

感想

参考にした tweet とかみると、知ってたはずの仕組みをまだまだ有効に使えてないなぁと感じます。
あと、某プロジェクトの締め切り間近なのにこんな記事書いてるなんて時間も有効に使えてないなぁともw
書いてる30分間は楽しかったのになぁ。。。
どうしよ。間に合わないwww

2
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?