paiza Code Girl Collection #ガルこれ


  URL
コードガールこれくしょん https://qiita.com/cielavenir/items/ea97544089a5a3ca686f
コードクロニクル https://qiita.com/cielavenir/items/3124ec862325682d381d
  • Code Gym betaの時から言えることだけど、早解き問題を複数やることは本当に良いのか疑問だったりします。
  • 真面目な方はpaizaラーニングの演習問題だけやればよいです。
  • 逆に言うと、paizaラーニング基礎編第一部が完了してからゲームを始めることで、ほぼ一発でダイヤ6個取れることに。

以下、私自身は順位を気にしていないので、書きたいことを書きます。
(順位を上げるために自動解答スクリプト突っ込んでいる人がいるようなので、もはや不毛)

200307

  • プライマリガール「貂蝉」(スコア8%)で52380点取れました。これはどういうことだろう。。コードクロニクルに入った言語はこちらも問題差し替えになったのかな?

160906

  • プライマリガール「侍」(スコア7%)で35587点取れました。久々の更新。

共通

  • 1==xはどの言語でも問題なく評価されます。x==1よりも打ちやすい場合は積極的に行きましょう。

Ruby

閏年判定

  • Date#leap?でいけます。date=Date.now; if date.leap? ...みたいな問題だったような。leep?ではないのでそこだけ注意。
  • ただ、leap?を初心者に推奨するのはどうなんだろう。本当はロジックを書くべき。

乱数

  • rand(start..stop)です。

範囲逆順

  • (start..stop).to_a.reverseでも良いですが、[*start..stop].reverseでも良いし、(start..stop)で回して出力を調整するのも勿論あり。
  • ちなみに個人的にはRubyでのfor文はお薦めしません。つまりstop.downto(start) do |i|が正解。打ちにくいので諦めますが。
    • [追記] for の後ろにstop.downto startとするのが良さそう。括弧は不要。

年の下2桁

  • year%100で通ります。本当はsprintf('%02d',year%100)ですが、そんなに長ったらしい物は書きたくない。

PHP

暗算

  • PHPは、<?php ... ?>の外に書いた語句は単にechoされる性質があるので、(入力を取らない問題については)暗算して、解答画面をクリアして答えを書いて実行するのが最速。

序盤

  • ダイヤ6個狙いとして、$x.$y.$zなんて5秒で打つのはかなり困難ですが、中盤以降は制限時間多めになるので頑張って打ちましょう…あとは問題の運。

date

  • 年 date('Y') 2桁 date('y')
  • date('n')
  • date('j')
  • 閏年 date('L')

Python

バージョン

  • paizaラーニングで確認したところ、3.4.3でした。 printは括弧が必要、入力はinput() なので注意。あと、448/14==32 .0 です。

閏年

  • import文で示唆されていますが、isleap(year)です。

乱数

  • random.randint(start,end)です。

Java

序盤

  • ダイヤ6個を狙うとすれば、タイピングスピードの影響をもろに受けるので、System.out.println("");をクリップボードに入れておくと吉。

乱数

  • new Random().nextInt(end-start)+startです。面倒くさいので1に固定しましょう。

C

序盤

  • 「printf」をコピーしておくこと。

文字列結合

  • printf("%s%s%s",s1,s2,s3);で良いと思います。Cでこの問題設定はよくない。

乱数

  • rand()%(end-start)+startです。

今年

  • tm_now->tm_year+1900

ミス

  • 1問だけ、「eles」と書かれたコードが有りますが、当然構文エラーなので、直す必要があります。
  • 問題の本質と関係ない部分なのでつらい(不正解のときはsyntax errorなら出して良いのでは?)

C#

  • なぜかダイヤ6個制限時間が一律60秒なので他の言語より大幅に楽。てか他の言語も60秒にしてくれ(そのほうが初心者にやさしい)。

ミス

  • 「448から14を割り算した結果を出力する」問題ですが、答えは 31 です。どうしようもないので答えを埋め込んでください。
    • 31になる腐った言語があった気がしますが、何だったかな…。
    • マイナーな言語であるという記憶はあるのだけど、なんとも。

乱数

  • new Random().Next(end-start+1)+startです。

C++

  • C++特有の機能以外はCのセクションも参照のこと。
  • 出力問題のごく一部にしかあてはまりませんが、出力が1行の場合、<<endl;は不要です。

include <cstdlib>

  • paizaはC/C++の実行環境にclangを採用しています
  • rand()がcstdlibなしで使えるのはclangのみです。 gccでは必要なので注意して下さい。

ミス

  • x==2の問題が不正解になるときは、x=1をx=2に初期化し直してみてください。

JavaScript

セミカンマ

  • 行末のセミカンマは不要です。

乱数

  • parseInt(Math.random()*(end-start))+startです。