[CodeEval]日本語で問題の内容を説明 Easy Challenges

2016年6月5日WEBサービス, プログラミング学習

CodeEvalの問題の内容を正しく理解できず、なかなか正解できない!という英語が苦手な方(私は苦手です…)に向けて、問題の内容を日本語で補足説明してみます。

※回答の説明ではありません。

(2016/9/10)
全問の説明を記載しました。

(2016/6/24)
22. Fibonacci Seriesの説明誤りを修正しました。

 

目次

1. Fizz Buzz

  • 1からNまでの数値を空白で結合して出力する。ただし、数値がXで割り切れる場合は数値の代わりに”F”、Yで割り切れる場合は数値の代わりに”B”、XでもYでも割り切れる場合には数値の代わりに”FB”を出力する。

3. Prime Palindrome

  • 1000未満の整数で、素数かつ回文(前から読んでも後ろから読んでも同じになる)となる数値を求める。

4. Sum of Primes

  • 素数を小さいものから1000個分合計した結果を求める。

8. Reverse words

  • 入力された複数の単語を、入力された順とは逆の順序で出力する。

18. Multiples of a Number

  • 2つの数値(x,n)が入力される。
  • nの倍数が、x以上になったら、その時の倍数の値を出力する。

19. Bit Positions

  • 3つの数値(n,p1,p2)が入力される。
  • nを2進数にして、右からp1ビット目とp2ビット目の数字が同じであれば”true”、違えば”false”を出力する。

20. Lowercase

  • 入力された文字列を全て小文字で出力する。

21. Sum of Digits

  • 行ごとに数字の合計を出力する。

22. Fibonacci Series

  • N=入力された値、のフィボナッチ数列を出力する。

23. Multiplication Tables

  • 12×12の掛け算の表を出力する。
  • 数値は4桁右づめで出力する。

24. Sum of Integers from File

  • 複数行入力されるので、入力された数値の合計を出力する。

25. Odd Numbers

  • 1~99までの奇数を、1行に1数値ずつ、昇順で出力する。

26. File Size

  • 指定されたファイルのサイズが何バイトかを出力する。

29. Unique Elements

・入力された数列について、重複した数値は1回だけに省略した数列として出力する。

30. Set Intersection

  • “;”で句切られた前半の数列と後半の数列の両方に含まれる数値を”,”区切りで出力する。
  • 前半と後半の両方に含まれる数値がない場合は空行にする。

31. Rightmost Char

  • “,”で句切られた左側の文字列を右から調べて、右側の文字が最初に出てくる位置のIndexを出力する。
  • Indexは1文字目が0、該当する文字が見つからない場合は-1とする。

39. Happy Numbers

  • Happy Numberの定義:各桁の数字を2乗して合計する。これを繰り返した結果、合計が1になればよい。
  • 例えば「7」 → 7の2乗で「49」 → 4の2乗と9の2乗で合計「97」 → 9の2乗と7の2乗で合計「130」 → 1の2乗と3の2乗と0の2乗で合計「10」 → 1の2乗と0の2乗で合計「1」 … Happy Number

40. Self Describing Numbers

●入力値について

codeeval40_1

  • 入力される文字列は、左の数字から順に数字”0″の個数、数字”1″の個数…を示している。

●出力値について

  • 入力された文字列中の数字の個数が、文字列が示す通りの個数になっていれば”1″を、違っていれば”0″を出力する。

62. N Mod M

  • 割り算をした余りを出力する。mod関数は使用しないこと。

67. Hex to Decimal

  • 入力された16進数文字列を10進数に変換して出力する。

82. Armstrong Numbers

  • 入力された数値がn桁だとすると、各桁の数字をn乗した合計を求める。入力された数値と合計した数値が同じであればアームストロング数である。
  • アームストロング数なら”True”を、違っていれば”False”を出力する。

83. Beautiful Strings

  • 入力された文字列のアルファベット(大文字、小文字の区別はつけない)ごとに1~26の異なる値を与える。
  • 上記の値の合計が最も大きくなる時の値を求める。
  • 例えば”ABbCcc”の時は、”C”/”c”に26、”B”/”b”に25、”A”に24の値を与えた時、24+25+25+26+26+26となり合計が最も大きい152となる。

87. Query Board

  • 256行×256列の領域がある。

●入力値について

  • SetRow i x: i行目の値をすべてxにする。
  • SetCol j x:j列目の値をすべてxにする。
  • QueryRow i: i行目の値の合計を求める。
  • QueryCol j: j列目の値の合計を求める。

●出力値について

  • 入力された行を順に処理していき、QueryRow、QueryColが来たときだけ結果を出力する。

91. Simple Sorting

  • 入力された実数を照準にソートする。
  • 数値は少数第三位まで0埋めする。

92. Penultimate Word

  • 行の最後から2番目の単語を出力する。

93. Capitalize Words

  • 単語の先頭の文字を大文字にして出力する。

96. Swap Case

  • 文字列の大文字と小文字を入れ替えて出力する。

97. Find a Writer

  • パイプ”|”の左側の文字列がキー配列、右側の数値群が何番目(Indexではない)のキーを使うかを示している。

99. Calculate Distance

  • 2点の座標が渡されるので、その距離を求める。
  • 距離は必ず整数になるので、丸め計算は不要。

100. Even Numbers

  • 入力値が偶数なら”1″を、奇数なら”0″を出力する。

102. JSON menu IDs

  • JSON形式の文字列の中で、labelを持ったアイテムのidの合計を求める。{“id”: 999, “label”: “Label aaa”} のような場合の青字部分の合計。

103. Lowest Unique Number

  • 下記の数値が勝ち。
    • 入力された数値群の中で、1回しか出てこない。
    • 上記を満たす数値の中で、最も小さい値。
  • 勝った数値の位置(先頭が”1″)を出力する。
  • 入力された数値群の中で、1回しか出てこない数値がなければ勝ちは無しで、”0″を出力する。

104. Word to Digit

  • 英語で数が書かれているものを数字にする。

106. Roman Numerals

  • 数値をローマ数字で表現する。
  • 問題中に出てきている数字とローマ数字の対応は下記の通り。
    • 1=I、4=IV、5=V、9=IX
    • 10=X、40=XL、50=L、90=XC
    • 100=C、500=D
    • 1000=M
    • 24=XXIV、39=XXXIX、44=XLIV、49=XLIX、94=XCIV

107. Shortest Repetition

  • 何文字で繰り返しているか、文字数を出力する。

111. Longest Word

  • 入力された単語のうち、文字数が最も長い単語を出力する。

112. Swap Elements

●入力値について

codeeval112_1

  • 「:」の左側が元の数値の配列を示している。
  • 「:」の右側が、配列の入れ替え方法を示している。「-」の左右のindex位置の数値を入れ替える。

●出力値について

  • 入れ替えたあとの数値の配列を出力する。

113. Multiply Lists

  • 「|」(パイプ)の左右の数値配列において、同じindex位置の数値をかけた数値を出力する。

115. Mixed Content

  • 数字と単語がカンマ区切りで混在した状態で入力される。
  • 入力された内容を並び替え、単語を先に出力し、その後に数字を出力する。
  • 単語と数字の間には「|」(パイプ)を出力する。

116. Morse Code

  • モールス信号の形式で入力されるので、文字列に変換する。
  • モールス信号の文字と文字の間は半角スペース1文字開いている。
  • モールス信号の単語と単語の間は半角スペース2文字開いている。
  • 入力されるモールス信号は”A”~”Z”、”0″~”9″である。

122. Hidden Digits

  • 小文字の”a”は0、小文字の”b”は1、…小文字の”j”は9を意味する。
  • もともとの数字(0~9)はそのままの数字を意味する。
  • 入力された文字列の文字について、数字を意味するものは数字に置き換え、数字を意味しないものは消去する。この置き換えた結果の数字を出力する。
  • 入力された文字列に1文字も数字を意味するものがなければ、結果には「NONE」を出力する。

124. Road Trip

  • 街の名前と距離が渡ってくる。
  • 街を近い順に並べた場合の、街と街の距離を出力する。
  • 出力するときの先頭の距離は、一番近い街までの距離そのものとする。

128. Compressed Sequence

  • 入力された数値群を”数値の個数 数値”の形式に変えて出力する。

codeeval128_1

131. Split The Number

●入力値について

  • 空白で区切られた前半が数値、後半が計算式になっている。
  • 計算式の「a」,「b」,「c」..は数値の左端からの数字を表している。

●出力値について

  • 数値を計算式の通りに計算した結果を出力する。

codeeval131_1

132. The Major Element

  • 入力された数値群の総個数がL個だとすると、出現回数がLの半分以上の数値を出力する。
  • 上記の条件に該当する数値がない場合は、「None」を出力する。

136. Racing Chars

  • 「_」(ゲート)か「C」(チェックポイント)の位置を通過するように考える。
  • 「_」より「C」を優先して通過する。
  • 前の行から左側に移動して「_」か「C」を通過した場合は、通過地点に「/」を出力する。
  • 前の行から右側に移動して「_」か「C」を通過した場合は、通過地点に「\」を出力する。
  • 前の行から移動せずに「_」か「C」を通過した場合は、通過地点に「|」を出力する。
  • 1行目の通過地点は必ず「|」になる。

139. Working experience

codeeval139_1

●入力値について

  • 活動期間が「;」で句切られて複数入力される。
  • 活動期間は、「-」(ハイフン)の左側が活動の開始月、右側終了月を意味している。

●出力値について

  • 活動期間が合計で何年かを出力する。
  • 活動期間が重複している/していないは関係しない。

140. Data Recovery

  • 「;」の左側の単語を、「;」の右側の数字をヒントに正しい文章にして出力する。

※この先はヒントのネタバレ

  • 左側の単語と、右側の数値は下図の関係性がある。

codeeval140_1

  • 左側の単語の方が、右側の数字よりも1個多い場合がある。この場合、左側の最後の単語は、右側の数字で出てきていない値が該当する。
  • 左側の単語を、紐づく数値の昇順に並べると、正しい文章が完成する。

147. Lettercase Percentage Ratio

  • 入力値の文字列の小文字と大文字の割合を、指定されたフォーマットで出力する。

149. Juggling With Zeros

●入力値について

  • スペースで区切られた2個の文字列ごとに考える。
  • 1個目の文字列は数値の種類(“0″か”1”)を意味する。文字列が”0″なら数値は”0″になる。文字列が”00″なら数値は”1″になる。
  • 2個目の文字列は数値の個数を意味する。

codeeval149_1

●出力値について

  • 入力値が意味する2進数を10進数で出力する。

152. Age distribution

  • 入力された年齢に応じて、指定されたメッセージを出力する。
  • 0~100歳ではない場合にもメッセージが指定されている。

156. Roller Coaster

  • 入力された文字列のアルファベットの箇所について、大文字、小文字、大文字、小文字…にして出力する。

160. Nice angles

  • 入力された値を、分、秒の形式で出力する。
  • 入力された小数点以下の値に60を掛けた整数値が、分の小数点以下の値になる。さらにこの小数点以下の値に60を掛けた整数値が、秒の値になる。

163. Big Digits

  • 入力された文字列中の数字だけを、5文字×6文字のデジタル表示で出力する。

166. Delta Time

  • 入力された2つの時間(時、分、秒)の差を求めて出力する。

167. Read More

  • 1行の文字数が55文字以下なら、そのまま出力する。
  • 1行の文字数が55文字より長ければ、次のように変更する。
    • 40文字までにトリムする。
    • トリムした文字列に空白文字がある場合、最後の空白文字の手前までにトリムする。
    • 文字列の最後に‘… <Read More>’を加える。

173. Without Repetitions

  • 入力された文字列において、同じ文字が連続している箇所は連続しないようにして出力する。

174. Slang Flavor

  • 普通の文章の次の文章(偶数番目の文章)の終わりにスラングをつける。
  • 入力ファイルの文章全体を通して、列挙されているスラングを上から順番に使う。一番下のスラングの次は、一番上のスラングに戻る。

178. Matrix Rotation

●入力値について

  • N×Nの行列を表す文字列が、1行で記述されている。

●出力値について

  • 行列を時計回りに90度回転させた結果を出力する。

180. Knight Moves

  • ナイトの座標が入力されるので、ナイトが移動可能な座標を出力する。

183. Details

●入力値について

  • 説明文にある図の「X」と「Y」と「・」の配置を文字列で表現している。

●出力値について

  • 1ターンごとに図の全ての「Y」が1つ左に移動する。
  • 「X」と「Y」が重ならずに移動できるターン数を出力する。

186. Max Range Sum

●入力値について

  • 「;」の左側の数値は、「;」の右側の数値を何個合計するかを示している。

●出力値について

  • 「;」の右側の数列を、任意の位置から連続で、指定された個数だけ合計する。
  • 合計値が一番大きくなったときの値を出力する。

codeeval186_1

189. Minimum Distance

●入力値について

  • 数列の一番先頭の数値は、その後に続く数値(家のアドレス)の個数を示している。

●出力値について

  • ある家から別の家へ移動する場合、アドレスの数値の差だけの移動量がかかるものと考える。
  • 任意の家をスタート地点とし、スタート地点から他の家に移動するそれぞれの移動量の合計が最も少なく済む場合の移動量を出力する。

192. Compare Points

●入力値について

  • 4つの数値は、順に地点1のX座標、地点1のY座標、地点2のX座標、地点2のY座標を示している。
  • X座標(東西)は西から東に行くほど数値が大きくなる。Y座標(南北)は南から北に行くほど数値が大きくなる。

●出力値について

  • 地点1から見て地点1がどの方位にあるかを出力する。

196. Swap Numbers

  • 単語ごとの、先頭と末尾の数字を入れ替えて出力する。

199. String mask

  • 数字が「1」となっている位置の文字は大文字にして出力する。「0」となっている位置の文字は入力された時のまま出力する。

202. Stepwise word

  • 入力された単語の中で、最も長い単語が出力対象になる。
  • 出力対象の単語の、1文字目、2文字目、3文字目…を順に出力する。
  • 2文字目以降の文字を出力するとき、それより前の文字を「*」(アスタリスク)で出力する。

203. Strings and arrows

  • 入力された文字列中に矢印(「<–<<」、「>>–>」)が何個隠れているかを出力する。
  • 矢印が重なっていても良い。例えば、「<–<<–<<」には矢印が2個あると数える。

205. Clean up the words

  • 入力された文字列中から単語を取り出して出力する。
  • 単語と単語の間は半角スペースを入れる。
  • 単語は全て小文字にする。

208. Find the highest score

  • 列ごとの最も大きいスコアを出力する。

211. Chardonnay or Cabernet

  • 「|」の左側の単語のうち、「|」の右側の文字が含まれるものを出力する。
  • 「|」の右側に同じ文字が複数回出現する場合、少なくともその出現回数以上、単語中にもその文字が含まれていること。

214. Time to eat

  • 遅い時間から早い時間になるように並び替えて出力する。

217.One zero, two zeros…

  • 1以上、入力された2つ目の数値以下、の数値を2進数で表現した時、「0」の数が入力された1つ目の数値の個数となる値が何個あるか出力する。

220. Trick or Treat

●入力値について

  • ヴァンパイア、ゾンビ、魔女の人数と、訪れる家の軒数を示している。

●出力値について

  • ヴァンパイアは家1軒につき飴を3個もらえる。
  • ゾンビは家1軒につき飴を4個もらえる。
  • 魔女は家1軒につき飴を5個もらえる。
  • すべての家を訪れた後、もらった飴を皆で均等に分けると、一人あたり何個の飴をもらえるかを出力する。

222. Black card

  • 入力された数値と同じ位置の人が負け。
  • 入力された数値が人数よりも大きい場合、最後の人の次は最初の人に戻って数える。
  • 最後まで残った人を出力する。

225. Testing

  • 左と右の文字列を比較し、異なっている数を数える。
  • 異なっている数の大きさに応じて、結果の文字列を出力する。

227. Real fake

  • カード番号の全ての値を合計する。この時、カード番号4桁の区切りごとに、1桁目の値、3桁目の値は2倍にする。
  • 合計値が10で割り切れれば「Real」、割り切れなければ「Fake」を出力する。

230. Football

●入力値について

codeeval230_1

●出力値について

  • チーム番号ごとに、そのチームが存在する国番号を列挙する。
  • チーム番号と国番号の間は’:’(コロン)でつなぐ。
  • 国番号と国番号はの間は’,’(カンマ)でつなぐ。
  • チームごとの最後の国番号の後ろには’;’(セミコロン)をつける。
  • チームとチームの間は’;’(セミコロン)の後に空白文字をつける。
  • チーム番号は昇順にソートする。
  • チームごとの国番号は昇順にソートする。

232. Not so clever

  • 左の数値と右の数値を比較し、左の数値が右の数値よりも大きい場合には左の数値と右の数値を入れ替え、イテレーション終了。
  • 数値を入れ替えなかった場合は、1つ右の位置にずれて上記の数値の比較を行う。
  • イテレーションが終了するまで上記の比較を繰り返す。

235. Simple or trump

●入力値について

codeeval235_1

●出力値について

  • 指定されたマークのカードが勝ち。
  • 両方のカードが指定されたマークか、両方のカードが指定されたマークではない場合、数字の強いカードが勝ち。
  • 数字の強さは右の順 弱← 2、3、4 … Q、K、A →強

237. Panacea – truth or lie

  • 16進数の数値の合計 ≦ 2進数の数値の合計ならTrue

240. Mersenne prime

  • 指定された数値よりも小さいメルセンヌ素数をすべてカンマとスペース区切りで出力する。
  • 私が見た時にはWikipediaのメルセンヌ素数が誤っていたので注意