Coding_Gamesメモ_Chuck Norris
javaの学習にCoding_Games を知り、学習の記録としてメモ。
To debug:
System.err.println( );
を使うとデバックしやすくなる。(エラー出力は評価に影響しない)
内容
ASCII 文字を変換
ルール
ASCII 文字をバイナリに変換した後、'0' と ' ' の並びに変換する
'0' は識別用と数量の2種類があり、' ' で区切る。
- バイナリが1の時 "0"
- バイナリが0の時 "00"
識別用の'0'の後に、いくつ続くかを'0'の個数で表す。
例
'C' → "1000011"
1 が1つ "0 0"
0 が4つ "00 0000"
1 が2つ "0 00"
→"0 0 00 0000 0 00"
必ず1文字7桁のバイナリに変換すること
注意点
出題ページの
Second example, we want to encode the message CC (i.e. the 14 bits 10000111000011) :
の欄にあるように、文字が連続するときはすべてバイナリに直してから変換する必要がある。
使用したクラス
String
(byte) = String.getBytes()
文字列を1文字づつバイトコードに変換
(String) = new String( StringBuilder )
StringBuilder の内容でStringを作る
(char) = String.toCharArray()
文字列をchar配列として出力する
Integer
(String) = Integer.toBinaryString( int )
指定された数値を2進数の文字列として出力
例
2 → "10"
7 → "111"
StringBuilder
StringBuilder.insert( int , x )
x はboolean,char,int,String,Objectなど
intで指定された場所にx を挿入する
StringBuilder.append( x )
x はboolean,char,int,String,Objectなど
文字列の後ろにxを追加する
0でできた文字列に変換する処理は、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 Integer (Java Platform SE 8) - Oracle Cloud:https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Integer.html StringBuilder (Java Platform SE 8) - Oracle Cloud:https://docs.oracle.com/javase/jp/8/docs/api/java/lang/StringBuilder.html