今さらながら、プログラミングのスキルチェックが出来るpaizaの存在を知りました。
今まで、独学でPythonの勉強をしていましたが、どのぐらい出来るようになったのか、自分では判断できないので、スキルチェックをやってみました。
いざスキルチェックをやってみると、入力値の取得方法が分かりません。入力値の取得方法を理解するまで時間がかかりましたが、問題を解くのは結構面白いです。
B問題ぐらいまでなら、アルゴリズムを知らなくても、ゴリ押しやパズル感覚で解ける問題が多く、そんなに時間もかからないので、仕事の合間の気分転換にちょうど良い感じでした。
ただ、ちょっと問題文を読んだだけでは何が言いたいのか、すぐには分からないことがあります。これはプログラミングの問題というよりは、日本語の問題ですが。
この人、ちょっと何が言いたいのかわからない・・・
私のような実務未経験者からすると、実務の大変さを垣間見ることもできます。
もくじ
ステータス
現在のレーティングとステータスはこんな感じです。
PythonでとりあえずBランクになるまでサクッとやってから、C問題を全部Pythonでやりました。
そこで、ちょっとPython以外の言語もやってみようと思い、個人が趣味で使うアプリなら何でも作れるという噂のC#に挑戦することに。
一通りC#の本を読みながら、D問題をすべてC#で解きました。今は簡単なB問題ならC#で解けるようになった感じです。Pythonだとあまり型を意識することが無かったので、型を少し意識しないといけないC#は新鮮でした。
入力値の取得
入力値はそのままだと文字列で受け取ることになるので、数値に変換することが多いです。
方法は色々ありますが、私がやっていたコードはこんな感じです。
入力値を数値に
6
こんな感じの値を数値に変換します。
Python3
input_line = int(input())
C#
var line = int.Parse(Console.ReadLine());
入力値を配列に(文字列)
hoge foo
こんな感じの値を文字列の配列に変換します。
Python3
input_line = list(input().split(' '))
C#
var line = Console.ReadLine().Split(' ');
入力値を配列に(数値)
120 40 50
こんな感じの値を数値の配列に変換します。
Python3
input_line = list(map(int, input().split(' ')))
C#
var line = Console.ReadLine().Split(' ');
int[] nums = Array.ConvertAll(line, int.Parse);
↑↓このどちらか
var line = Console.ReadLine().Split(' ');
int[] nums = Array.ConvertAll(line, x => int.Parse(x));
どちらも、using System;
だけで使えました。
int[] nums
じゃなくて、var nums
でもいけます。
C#は基本var
で書く感じなのかな? まだ、よく分かってません。
ちなみに、1行で書くとこんな感じです。
var line = Array.ConvertAll(Console.ReadLine().Split(' '), int.Parse);
数値と文字列混在の場合
C#
90 50 xxx
こんな場合は、TryParse
で文字列を任意の数値に変換してました。
以下のコードでは、90,50,-1
に変換しています。
var line = Console.ReadLine().Split(' ');
var data = new int[3];
for (var i = 0; i < 3; i++) {
int num;
if (int.TryParse(line[i], out num)) {
// 数値に変換できる場合はその数値を代入
data[i] = num;
} else {
// 数値に変換出来ない場合は、numの値は0
// 今回は、0を代入したくないので、-1を代入
data[i] = -1;
}
}
どうやら、↓こんな書き方もできるらしい。TryParseの中で、outパラメータを付けたまま変数を宣言。
for (var i = 0; i < 3; i++) {
if (int.TryParse(line[i], out int num)) {
data[i] = num;
} else {
data[i] = -1;
}
}
スカウト
ちなみに、スカウトは一通も来てません。
実務経験なしのおじさんで、プロフィールやPRも書いてないので、当然ですが。
求人も実務経験ありが前提なので、未経験から転職を目指しているおじさんは、あまり期待しない方がいいかもしれません。