Skip to content

Instantly share code, notes, and snippets.

@bayashi
Created August 10, 2012 17:15
Show Gist options
  • Save bayashi/3315798 to your computer and use it in GitHub Desktop.
Save bayashi/3315798 to your computer and use it in GitHub Desktop.
found 3 idols
#!/usr/bin/perl
use strict;
use warnings;
use utf8;
use Encode qw/encode_utf8/;
my @list = split //, '岩多大片倉小篠高高仲中仲前前松秋板内梅大菊田中仁野藤松松峯宮横石河柏北小小佐佐佐鈴鈴近増宮渡渡阿市入岩大加川島島高竹田仲中永山伊小小名藤森伊小小名藤森大サ佐平武江相岩梅大岡北篠高光村茂内岡小西橋前宇上折高今星渡増井大駒戸中成野松川早大早成佐大野浦小佐小奥森平米指磯大坂藤堀飯金小吉渡出山西中片石有鈴冨畑瓜上小林西浅石石郭小坂杉冨三村伊今石絹藤高植岩佐豊岡川金牛山鈴雨北長森渡百玉佐有高';
my $words = [qw/
岩佐美咲
多田愛佳
大家志津香
片山陽加
倉持明日香
小嶋陽菜
篠田麻里子
高城亜樹
高橋みなみ
仲川遥香
中田ちさと
仲谷明香
前田敦子
前田亜美
松原夏海
秋元才加
板野友美
内田眞由美
梅田彩佳
大島優子
菊地あやか
田名部生来
中塚智実
仁藤萌乃
野中美郷
藤江れいな
松井咲子
松井珠理奈
峯岸みなみ
宮澤佐江
横山由依
石田晴香
河西智美
柏木由紀
北原里英
小林香菜
小森美果
佐藤亜美菜
佐藤すみれ
佐藤夏希
鈴木紫帆里
鈴木まりや
近野莉菜
増田有華
宮崎美穂
渡辺麻友
渡辺美優紀
阿部マリア
市川美織
入山杏奈
岩田華怜
大場美奈
加藤玲奈
川栄李奈
島崎遥香
島田晴香
高橋朱里
竹内美宥
田野優花
仲俣汐里
中村麻里子
永尾まりや
山内鈴蘭
伊豆田莉奈
小嶋菜月
小林茉里奈
名取稚菜
藤田奈那
森川彩香
伊豆田莉奈
小嶋菜月
小林茉里奈
名取稚菜
藤田奈那
森川彩香
大森美優
サイード横田絵玲奈
佐々木優佳里
平田梨奈
武藤十夢
江口愛実
相笠萌
岩立沙穂
梅田綾乃
大島涼花
岡田彩花
北澤早紀
篠崎彩奈
高島祐利奈
光宗薫
村山彩希
茂木忍
内山奈月
岡田奈々
小嶋真子
西野未姫
橋本耀
前田美月
宇佐美友紀
上村彩子
折井あゆみ
高田彩奈
今井優
星野みちる
渡邊志穂
増山加弥乃
井上奈瑠
大江朝美
駒谷仁美
戸島花
中西里菜
成田梨紗
野口玲菜
松岡由紀
川崎希
早乙女美樹
大島麻衣
早野薫
成瀬理沙
佐伯美香
大堀恵
野呂佳代
浦野一美
小原春香
佐藤由加理
小野恵令奈
奥真奈美
森杏奈
平嶋夏海
米沢瑠美
指原莉乃
磯怜奈
大塚亜季
坂田涼
藤島マリアチカ
堀江聖夏
飯沼友里奈
金子智美
小塚里菜
吉岡沙葵
渡辺茉莉絵
出口陽
山田みずき
西澤沙羅
中西優香
片野友里恵
石黒莉美
有馬優茄
鈴木菜絵
冨田麻友
畑山亜梨紗
瓜屋茜
上遠野瑞穂
小松瑞希
林彩乃
西川七海
浅居円
石井彩夏
石部郁
郭グレース
小水七海
坂本莉央
杉山未来
冨手麻妙
三木にこる
村中聡美
伊藤彩夏
今井悠理枝
石黒貴己
絹本桃子
藤本紗羅
高松恵理
植木あさ香
岩崎仁美
佐野友里子
豊田早姫
岡﨑ちなみ
川上麻里奈
金沢有希
牛窪紗良
山口菜有
鈴木里香
雨宮舞夏
北汐莉
長谷川晴奈
森山さくら
渡邊寧々
百田夏菜子
玉井詩織
佐々木彩夏
有安杏果
高城れに
/];
my $max_x = 45;
my $max_y = 45;
my $vertical_rate = 80; # %
#----- main
my $MATRIX = [];
my $FIX_MATRIX = [];
for my $i (0..$max_x-1) {
for my $j (0..$max_y-1) {
$MATRIX->[$i][$j] = $list[int(rand(scalar @list))];
}
}
for my $word (@{$words}) {
layout($word);
}
# show result
for my $i (0..$max_x-1) {
for my $j (0..$max_y-1) {
print encode_utf8("$MATRIX->[$i][$j] ");
}
print "\n";
}
sub layout {
my $word = shift;
while (1) {
my $way = 0;
my $x = int(rand $max_x);
my $y = int(rand $max_y);
if (rand(100) < $vertical_rate) {
# vertical
next if !can_layout($word, 1, $x, $y);
layout_word($word, 1, $x, $y);
}
else {
next if !can_layout($word, 0, $x, $y);
layout_word($word, 0, $x, $y);
}
return;
}
}
sub layout_word {
my ($word, $way, $x, $y) = @_;
my $length = length $word;
if ($way == 1) {
# vertical
my $y2 = $y + $length;
my $count = 0;
for my $i ($y..$y2-1) {
$MATRIX->[$x][$i] = [split(//, $word)]->[$count];
$FIX_MATRIX->[$x][$i] = 1;
$count++;
}
}
else {
my $x2 = $x + $length;
my $count = 0;
for my $i ($x..$x2-1) {
$MATRIX->[$i][$y] = [split(//, $word)]->[$count];
$FIX_MATRIX->[$i][$y] = 1;
$count++;
}
}
}
sub can_layout {
my ($word, $way, $x, $y) = @_;
my $length = length $word;
if ($way == 1) {
# vertical
my $y2 = $y + $length;
return if $y2 >= $max_y-1;
for my $i ($y..$y2-1) {
return if $FIX_MATRIX->[$x][$i];
}
return 1;
}
else {
my $x2 = $x + $length;
return if $x2 >= $max_x-1;
for my $i ($x..$x2-1) {
return if $FIX_MATRIX->[$i][$y];
}
return 1;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment