転職活動でもお世話になったCodeIQで↓のような問題があったので回答を出したところ、 レビュー会への招待が来ていたので行ってみた!
問題
出題はじゃんけんを行うプログラムをリファクタリングするという問題。
「標準入力として与えられた文字列を2人分のじゃんけんの手として解釈して勝敗を標準出力する」というもの。
元はnode.jsだったのだが、僕はjsが不慣れだったりもするのでperlで再現。
sub func02 { my ( $a, $b ) = @_; if ( $a eq 'g' ) { if ( $b eq 'c' ) { print "win"; } elsif ( $b eq 'p' ) { print "lose"; } else { print "draw"; } } if ( $a eq 'c' ) { if ( $b eq 'p' ) { print "win"; } elsif ( $b eq 'g' ) { print "lose"; } else { print "draw"; } } if ( $a eq 'p' ) { if ( $b eq 'g' ) { print "win"; } elsif ( $b eq 'c' ) { print "lose"; } else { print "draw"; } } } sub func01 { my $line = shift; my ( $a, $b ) = split / /, $line; &func02( $a, $b ); } my $line = <>; chomp $line; &func01($line);
すごーくベタな実装。
コード自体は目的どおり正しく動作するが・・・
続きを読む