Coding_Gamesメモ_Brick in the Wall

Coding_Gamesメモ_Brick in the Wall

javaの学習にCoding_Games を知り、学習の記録としてメモ。
To debug:

System.err.println( );

を使うとデバックしやすくなる。(エラー出力は評価に影響しない)

内容

壁を作るための最小の労力を計算する

ルール

高さ6.5cm のレンガをN個持っている。
レンガをX個並べて積み上げ、壁を作りたい
W = ( (L -1) *6.5 /100 ) *g *mの式を使い作業に必要な最小の仕事量を出力

W : 仕事量
L : そのレンガを配置する段数
g : 重力加速度g = 10m/s で計算
m : レンガの重量(Kg)

インプット

1行目 1段あたりのレンガの数 X
2行目 作業に使用するレンガの数 N
3行目 スペース区切りのレンガの重量(Kg) m

アウトプット

最低限の仕事量、小数点以下3桁まで表示

使用したクラス

String

(String) = String.format( (String)x , y )
制御文字列x を使ってy を変換する

  • % 制御文の開始を宣言する
  • f yがfloatなどの時、 %.Nf の形で使うと小数点以下をN桁出力する
    詳細クラスFormatter:https://docs.oracle.com/javase/jp/8/docs/api/java/util/Formatter.html

Arrays

(配列) = Arrays.sort( (配列) ) 配列の内容を昇順に並び替える

考え方

計算式によると、1段目は地面に並べられている (仕事量0)

最小の労力を計算するので、重いレンガを下に、軽いレンガを上に積み上げると考える

Coding_Games:https://www.codingame.com/
String (Java Platform SE 8) - Oracle Cloud:https://docs.oracle.com/javase/jp/8/docs/api/java/lang/String.html

Coding_Gamesメモ_7-segment_scanner

Coding_Gamesメモ_7-segment_scanner

javaの学習にCoding_Games を知り、学習の記録としてメモ。
To debug:

System.err.println( );

を使うとデバックしやすくなる。(エラー出力は評価に影響しない)

内容

7セグメント表示の数字を普通の数字に変換する

ルール

3行* 3列の7セグメント表示の数字の内容を出力

インプット

1行目 ~ 3行目 3行* 3列の7セグメントの文字列

アウトプット

7セグメントの内容を出力

使用したクラス

StringBuilder

(StringBuilder) = StringBuilder.append( x )
x はboolean,char,int,String,Objectなど
文字列の後ろにxを追加する

考え方

1文字ごとに各セグメントの使用状況を調べて1から順番に判定していく

        //セグメントの位置
        //  0
        // 123
        // 456
        //
        // セグメントを使用している数字 : 使用していない数字
        // 0  0 23 56789 :  1  4     
        // 1  0   456 89 :  123   7  
        // 2    23456 89 : 01     7
        // 3  01234  789 :      56
        // 4  0 2   6 8  :  1 345 7 9
        // 5  0 23 56 89 :  1  4  7
        // 6  01 3456789 :   2

8の判定方法が簡単ではないため、順番を最後にすると楽

Coding_Games:https://www.codingame.com/

Coding_Gamesメモ_Count_as_I_count

Coding_Gamesメモ_Count_as_I_count

javaの学習にCoding_Games を知り、学習の記録としてメモ。
To debug:

System.err.println( );

を使うとデバックしやすくなる。(エラー出力は評価に影響しない)

内容

モルックで勝てるパターンの数を探す

ルール

モルックのルールで現在の点数から4ターン以内に50点になるパターンの数を出力

インプット

1行目 現在の点数 (N)

アウトプット

4ターン以内に50点になるパターンの数を出力

考え方

4ターン分 ✕ 12+11パターン(12種類のピン1本だけ倒す+2つ以上のピンを倒す)を総当りする

Coding_Games:https://www.codingame.com/
日本モルック協会 モルックとは:https://molkky.jp/molkky/

ペットボトルで自動給水プランターを作成

ペットボトルで自動給水プランターを作成

以前のSpaseBucket に植えていたどくだみが完全に枯れてしまったので新しく自動給水式のプランターを作りました

枯れてしまった原因

  • 水やり不足
    • 日当たりと電源の距離、節電の問題でセンサーの電源を切っていた
      • 水やりの分量がわからない
    • 水やりを忘れていた

プランターに求めること

  • 電気を使わずに自動給水する
  • 土中湿度の自動調節
  • メンテナンス性
  • 省スペース

以前見た、ペットボトルで作る自動給水プランターの作り方を思い出し作ってみた

f:id:tiridukano_yagigame:20200927215711j:plainf:id:tiridukano_yagigame:20200927215718j:plain

土が流れ出ないように布で蓋をして、キャップに取り付けた紐の量を加減することで給水量を変える

今度は枯らさないようにしないと

Coding_Gamesメモ_Rugby_score

Coding_Gamesメモ_Rugby_score

javaの学習にCoding_Games を知り、学習の記録としてメモ。
To debug:

System.err.println( );

を使うとデバックしやすくなる。(エラー出力は評価に影響しない)

内容

得点逆引き

ルール

ラグビーの得点がN ポイントになるには
トライ(5点)
トライ後のゴール(2点)
ペナルティゴール、ドロップゴール(3点)
をそれぞれ何回得れば良いか可能性があるものを全てを出力

インプット

1行目 得点 (N)

アウトプット

(5点) (2点) (3点)
の順で必要な回数を1行づつ出力

考え方

総当りでトライ、トライ後のゴール、ペナルティ(ドロップ)ゴール の点の合計がN になる組み合わせを探す

注意点は

  • ペナルティ(ドロップ)ゴール優先して探す(数取器の1の桁のように)
  • トライ後のゴールはトライとセットになっている(トライ後のゴール <= トライ)

参考

Coding_Games:https://www.codingame.com/
日本ラグビーここにあり! ラグビーのルール(1)得点方法 :https://brave-rugby.com/rule/tokuten.html

Coding_Gamesメモ_Organic_Compounds

Coding_Gamesメモ_Organic_Compounds

javaの学習にCoding_Games を知り、学習の記録としてメモ。
To debug:

System.err.println( );

を使うとデバックしやすくなる。(エラー出力は評価に影響しない)

内容

分子モデルが正しいか判定する

ルール

炭素(C) といくつかの水素(Hn) と炭化水素同士の共有結合の結合数(m) と位置関係で書かれた分子モデルが有効かどうか判定する
(全ての共有結合が埋まっていたら有効と判断)

インプット

1行目 分子モデルの行数 N
2行目から 分子モデルの文字列 COMPOUND

アウトプット

有効な場合 "VALID"
無効な場合 "INVALID"

使用したクラス

String

(String) = String.substring(x,y)
文字列の一部をコピーする。
x,yはint型
xがコピー開始位置、yは終了位置、yが指定されていなければ最後まで指定したのと同じ。

(char) = String.charAt( x )
x はint、 x番目の文字を出力

(int) = String.length()
文字列の長さを出力

(boolean) = String.equals(x); (String == x) String は == では判定できないので代わりに使用する。

Integer

(static int) = Integer.parseInt(str)
数字を表す文字列str をint に変換する
valueOf との違いはparseInt は基本のデータ型のint を出力し、valueOf はラッパークラスのInteger を出力する

Long

考え方

炭素は最大4重の共有結合ができるので
炭化水素の水素数(CHn)+ 炭化水素同士の共有結合数の合計(m) = 4
だったら有効と判断できる

Coding_Games:https://www.codingame.com/
String (Java Platform SE 8) - Oracle Cloud:https://docs.oracle.com/javase/jp/8/docs/api/java/lang/String.html
Integer (Java Platform SE 8) - Oracle Cloud:https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Integer.html

Coding_Gamesメモ_Add'em_Up

Coding_Gamesメモ_Add'em_Up

javaの学習にCoding_Games を知り、学習の記録としてメモ。
To debug:

System.err.println( );

を使うとデバックしやすくなる。(エラー出力は評価に影響しない)

内容

合成費用計算機

ルール

低ポイントのカード2枚を合成することで合計ポイントのカード1枚を手に入れることができる
しかし、それには合計ポイント分の費用がかかる

合成費用の例
1p, 2p, 3p のカードを合成  

1p + 2p = 3p
3p + 3p = 6p
合計費用 3 +6 = 9

3p + 2p = 5p
5p + 1p = 6p
合計費用 5 + 6 = 11

一番低いコストですべてのカードを合成すると費用がどれぐらい必要か出力

インプット

1行目 カードの枚数 N
2行目 スペース区切りのカードのコスト

アウトプット

全てのカードを合成するための最小費用

考え方

配列から小さい数2つを探し、合計していく

Coding_Games:https://www.codingame.com/