paizaでスキルチェック1回目
PHPでWEBサービスを作りたいなーと思っています。PHPの構文を軽く確認したので、
paizaでスキルチェックをやってみました。
とりあえずPHPを書いてみた感想は、構文はCなんかとほぼ同じ印象。
以下のスキルチェックを実施、受けた順です。金曜の夜と土曜の夜に受けました。
全てPHPで解答しました。
D039:正三角形かどうか
-> PHPの文法を確認しながらやったので、ちょっと時間かかったけど100点
D038:試合の回数
D037:花粉症でつらい
D036:アットマーク
D035:日付のデータ
C005:アドレス調査
C028:単語テストの採点
-> テストデータ入力したまま提出するというマヌケで0点。動作確認して修正して再提出で全問正解
C030:白にするか黒にするか
C010:安息の地を求めて
B008:地下アイドルの夢
A017:落ちものシミュレーション
-> 1時間以上かかって、しっかりテストデータ入力せずに提出して22点。再提出で全問正解
B011:名刺バインダー管理
A005:パイザボウルゲーム
-> 1時間以上かかったけど、全問正解。時間かかったので89点
A問題の想定時間が120分ばっかりなので、挑戦するのに時間に余裕がある時じゃないと厳しいな。
S問題も時間に余裕がある時に。
ディスカッション
コメント一覧
最近Paiza始めました!PHPプログラミング初心者です!
D039:正三角形かどうかの問題で質問があります。
入力された値がスペースで区切られてる時は問題なくできるのですが、改行で区切られてると2行目と3行目の値の出し方がわかりません。いろいろggって見たのですが、まだ解決できずもしよろしかったら御指南頂けるか、コードを見せて頂けると嬉しいです。
はじめまして、コメントありがとうございます。
fgetsは1行読み込む処理なので、3行読むなら3回fgetsすればOKですよ。
3行読むならこんな感じです。
$a = trim(fgets(STDIN));
$b = trim(fgets(STDIN));
$c = trim(fgets(STDIN));
返信ありがとうございます!
Mimsysさんのページがどこかわからなくなりお礼のコメント遅くなりました!
おかげでレベルDは問題なくできるようになりました。
今はレベルCに挑戦中です!
白にするか黒にするかで苦労してますw
また何か不明なことがあれば、気軽に聞いてください!
Paizaでスキルチェック1回目
私も質問させてくださいm(_ _)m
[A017:落ちものシミュレーション]にチャレンジしました。
提出前動作確認ではSUCCESSなのですが、
提出後の結果は、22点でした。
その後、10回以上修正して試したのですが、うまくいかず…
大変失礼かと存じますが、コードを載せますので、
「コードのここが駄目だよ。このロジックがおかしいよ。」というのをアドバイスいただくことは可能でしょうか?
コードはご確認頂きましたら、削除していたいただければと思いますm(_ _)m
不躾に大変失礼であることは重々承知しておりますが、何卒お許しください。
<?php
// 自分の得意な言語で
// Let's チャレンジ!!
$input_lines = fgets(STDIN);
list($H, $W, $N) = explode(" ", $input_lines);
for ( $i = 0; $i < $N; $i++) {
$il = trim(fgets(STDIN));
$il = str_replace(array("\r\n","\r","\n"), '', $il);
$il = explode(" ", $il);
$sum[] = $il;
}
$dots1 = array();
for($j=0;$j<$H;$j++){
for($m=0;$m<$W;$m++){
$mark1 = ($m<$W-1)? ".":".\n";
$dots1[$j][] = $mark1;
}
}
function checkSharp($Bw, $H, $Bs, $array){
for($p=0;$p<$H;$p++){
for($q=$Bs;$q<$Bw+$Bs;$q++){
if($array[$p+1][$q] == "#"){
return $p;
}
}
}
}
for($n=0;$n<count($sum);$n++){
$h = $sum[$n][0];//ブロックの高さ
$w = $sum[$n][1];//ブロックの横幅
$sx = $sum[$n][2];//スタートx座標
$y = checkSharp($w, $H, $sx, $dots1);
$sy = (empty($y))? ($H-1)-$h+1:$y-$h+1;
for($p=$sy;$p<$sy+$h;$p++){
for($q=$sx;$q
コードが途中で切れてしまったのですが、後半はこちらです。
前半の最後の2行は不要です。
for($p=$sy;$p<$sy+$h;$p++){
for($q=$sx;$q<$sx+$w;$q++){
また途中で切れてしまったようです。
度々申し訳ございません。
if($dots1[$p][$q] == “.”){
$dots1[$p][$q] = str_replace(“.”, “#”, $dots1[$p][$q]);
}
}
}
}
foreach($dots1 as $key){
foreach($key as $k){
echo $k;
}
}
?>
以上です。
コメント出来ると良いのですが…
こんにちは、コメントありがとうございます。
入力いただいたソースをpaiza.ioで試してみました。
そのまま実行すると、checkSharp内のif($array[$p+1][$q] == “#”){
で、Undefined offsetのエラーが出ます。
$p+1が$H未満である場合のみ、このif文を行うように修正ですね。
あと、$dots1は、右端以外は”.”で、右端が”.\n”です。
“.”を”#”に置き換えるところの直前のif文で、$dots1が”.”の場合は置き換えるとしています。
右端は”.\n”なので、”#”に置き換わりません。
$dots1に”.\n”を代入するのをやめて、最後のforeachのところで一行描画すると改行を描画するというようにするのが良いかと思います。