バイナリクロック
Posted feedbacks - Perl
年月日時分秒 まで表示してみました。
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 29 30 31 32 33 34 35 36 37 38 39 40 41 | use strict;
use warnings;
# Binary clock
$\="\n";
$,=":";
clear_screen();
while ( 1 )
{
my ($sec,$min,$hour,$day,$month,$year)=localtime;
++$month;
$year+=1900;
print bin_($year,'年', 12), sprintf('%4d',$year);
print bin_($month,'月', 5), sprintf('%4d',$month);
print bin_($day,'日', 6) , sprintf('%4d',$day);
print bin_($hour,'時', 6) , sprintf('%4d',$hour);
print bin_($min,'分', 7) , sprintf('%4d',$min);
print bin_($sec,'秒', 7) , sprintf('%4d',$sec);
sleep 1;
clear_screen();
}
sub bin_
{
my ($n,$s,$m) = @_;
'_'x(12-$m) . join '', map { ((1 <<($_-1)) & $n) ? $s : '□' } reverse 1 .. $m;
}
sub clear_screen
{
if ( $^O =~ /Win32/ ) {
system('cls');
}
else {
if (system('clear') != 0) {
print "\x1b[2J";
}
}
}
|
一行野郎。本体73bytes、全部で114bytes。 マルチバイトでなければ-Mスイッチはなくていいです。
1 | perl -Mutf8 -Mopen=:utf8 -Mopen=:std -E'say for map { $_ = sprintf "%06b", $_; tr/01/□■/; $_ } (localtime)[2, 1];'
|
少し短くかつPerl 5.8.xでも動くようにしました。-CIOがポイント。
Dan the Perl Monger
1 | perl -CIO -Mutf8 -le 'print for map { $_ = sprintf "%06b", $_; tr/01/□■/; $_ } (localtime)[2,1];'
|




lunlumo #9282() [ Ruby ] Rating6/8=0.75
20:18の場合,例えば以下の様な出力をするイメージです。
出力例:
■□■□□
□■□□■□
see: Binary Clock Widget
Rating6/8=0.75-0+
[ reply ]