Qiita Engineer Festa 2024(キータ・エンジニア・フェスタ 2024) - Qiita
において、約1ヶ月で38記事という大量の記事の投稿を要求されることがわかった。
そこで、あまりコストをかけずに記事数を稼ぐ方法を考えた結果、「Welcome to AtCoder を様々な言語で解く」ことを思いついた。
単に解くだけでなく、使用する言語仕様の解説を入れれば、記事として一応成立するだろう。
Welcome to AtCoder
PracticeA - Welcome to AtCoder
Welcome to AtCoder では、以下の形式で整数 $a$, $b$, $c$ および文字列 $s$ が入力として与えられる。
a
b c
s
この入力をもとに、与えられた整数の和 $sum = a + b + c$ および文字列 $s$ を、以下の形式で出力することが求められる。
sum s
今回用いた Haxe の機能
エントリポイント
Hello World - Haxe - The Cross-platform Toolkit
以下の main
関数の中に実行したい処理を書くことで、処理を実行できる。
class Main {
static public function main():Void {
// ここに処理内容を書く
}
}
変数宣言・加算・文字列へのデータの埋め込み
String Interpolation - Haxe - The Cross-platform Toolkit
var value = 42;
のように、var
を用いて変数を宣言できる。
var sum = 1 + 2;
の用に、+
演算子を用いて数値を加算できる。
var message = 'value = $value';
のように、''
で囲まれた文字列の中に $
に続けて変数名を書くと、その場所にその変数の値を埋め込んだ文字列を得ることができる。
入出力
stdin, stdout, stderr - Beginner - Haxe programming language cookbook
var line = Sys.stdin().readLine();
と書くことで、標準入力から1行読み込み、文字列として変数 line
に代入できる。
得られる文字列は改行文字を含まない。
Sys.println("文字列");
と書くことで、標準出力に文字列を出力し、さらに改行を出力できる。
ドキュメントでは出力を行う方法として trace
も紹介されているが、これを使うと
Main.hx:3: 文字列
のように、指定した文字列に加えて余計なデータも出力されてしまう。
文字列の数値への変換
Using numbers - Beginner - Haxe programming language cookbook
Std - Haxe 4.3.4 API
Std.parseInt
を用いることで、文字列をそれが表す数値に変換できる。
文字列の処理
indexOf
を用いることで、文字列の中で指定した文字列が最初に現れる位置を取得できる。
substring
を用いることで、開始位置と終了位置を指定して文字列から部分文字列を取得できる。
提出コード
class Main {
static public function main():Void {
var stdin = Sys.stdin();
var line1 = stdin.readLine();
var line2 = stdin.readLine();
var line3 = stdin.readLine();
var spacepos = line2.indexOf(" ");
var line21 = line2.substring(0, spacepos);
var line22 = line2.substring(spacepos + 1);
var a = Std.parseInt(line1);
var b = Std.parseInt(line21);
var c = Std.parseInt(line22);
var sum = a + b + c;
Sys.println('$sum $line3');
}
}