Warning: Use of undefined constant WpNicodo - assumed 'WpNicodo' (this will throw an Error in a future version of PHP) in /home/tcpiptan/www/ptan.info/wp-content/plugins/wp-nicodo/wp-nicodo.php on line 492

Warning: Use of undefined constant register_uninstall_hook - assumed 'register_uninstall_hook' (this will throw an Error in a future version of PHP) in /home/tcpiptan/www/ptan.info/wp-content/plugins/wp-nicodo/wp-nicodo.php on line 498
p t a n . info » ニコ生 » ページ 2

Posts tagged ニコ生

つれづれにうたう。

アメーバブログ、登録してしまいました☆
ニコ生の歌枠用コミュ「つれづれにうたう。」のブログとして何か書いていこうと思います。
やっぱりこのブログもgdgd不定期になるかも知れないけどw
ではでは改めてみなさんよろしくね☆

ついにというか何というか

歌ってみた用コミュの人数が、プログラ用コミュの人数を抜きましたwww
ついにメインとサブが逆転です。本当にありがとうございましたwww
最近歌枠ばっかやってるから当然っちゃ当然なんですけどね…www
まぁそれにしても、自分のプロフィール的に「歌」と「プログラム」という二面性が出ちゃってるわけで、いっそブログも分けてしまおうかとか考え中であります。
まぁ、気持ちとしてはどちらもメインなんで、どちらのコミュも今後ともどうぞよろしくお願いします☆

一晩中悩んでたのに…

FireFoxのクッキー情報がperlから取得できない件で一晩中悩んでたんですが…
あっけなく解決しました…

(さらに…)

ニコ動メンテ

9時から始まってますね。
無事9時半に終わるのかな?w
あ、ニコ生だけは11時までメンテなのね・・・
まぁマターリ待ちますか♪

(さらに…)

Perlgolfとか。

技術的な話題につき、興味ない人はヌルーしてね☆

最近よく視聴してるPerl放送の生主さんとこでGolf(ショートコーディング)なるものをやってたので、その場でリスナーとして勝手に参戦してみました。

お題:
引用元:(・3・)ぷぅログラミング

・ルール通ればなんでもおk。言語もなんでもおk。

・内容
入力:1以上の整数の数値
出力:入力された長さを1辺とする四角形で、外側は1、内側は0とする。

・例
入力:3
出力:
111
101
111

入力:5
出力:
11111
10001
10001
10001
11111

言語/バージョンはActivePerl 5.10.0で参戦。こういう変態的な事するにはやっぱりperl便利ねw

こんな感じになりました(51Bytes)。

$i=<>;print$_%$i<2?1x$i:(1,0 x($i-2),1),$/for 1..$i

さらにperl6対応にするとこんな感じに(48Bytes)。

$i=<>;say$_%$i<2??1x$i!!(1,0 x($i-2),1)for 1..$i

perl 5.10対応版の方で軽く説明すると、キモはprintの引数になっている3項演算子のこの部分:

$_%$i<2?1x$i:(1,0 x($i-2),1)

この部分がややこしいですが、見やすくなるように書き直すと

$_ % $i < 2
    ? 1 x $i
     : (1, 0 x ($i - 2), 1)

ってことですね。
$_ は後置forの一時変数なので、

「1行目から(入力)行目まで処理を繰り返す際、Nを処理中の行数としたとき、N÷(入力)の余りが0または1(つまり「<2」)のときは1を(入力)個出力し、それ以外の場合は先頭が1、続いて0を(入力-2)個、最後に1を出力する」

という事になります。
「余りが0または1(つまり「<2」)」とは一体なんぞや?については、例を挙げて説明するとわかりやすいと思うのですが、
例えば(入力)が5のとき:

1(行目)÷5(入力)の余り・・・1
2(行目)÷5(入力)の余り・・・2
3(行目)÷5(入力)の余り・・・3
4(行目)÷5(入力)の余り・・・4
5(行目)÷5(入力)の余り・・・0

となるので、この1行目と5行目の処理をまとめた論理式になるわけですね!
というわけで

1(行目)÷5(入力)の余り・・・1なので「11111」を出力
2(行目)÷5(入力)の余り・・・2なので「10001」を出力
3(行目)÷5(入力)の余り・・・3なので「10001」を出力
4(行目)÷5(入力)の余り・・・4なので「10001」を出力
5(行目)÷5(入力)の余り・・・0なので「11111」を出力

となるわけです。
・・・良くこんな発想できたな自分w

いやぁ、楽しませてもらいました。
感謝感謝です!

ページのトップへ