『paizaオンラインハッカソン7』が開始されたの通り、現在、『paizaオンラインハッカソンVol.7 プログラミングで彼女をつくる』が開催されているので、当方も参加しており、順次コードを公開している。今回は最も簡単であろう「つり目」のお題についてサンプルコードの公開と簡単な解説を行いたい。ソースコードはGitHub内でも公開しているので、興味があればぜひ参考にしてもらいたい。
このお題の目的について
さて、今回の「つり目」の問題だが、これは、入力された数値の回数分「Ann」と改行せずに連続して出力するというのが目的である。
したがって、ここでは文字列の数値かとforループがちゃんとできているかどうかが問題となる。
サンプルコード
C++
参考URL: https://github.com/saitomarch/POH7/blob/master/cpp/tsurime.cpp
[code lang=”cpp”]#include <string>
#include <cstdlib>
using namespace std;
string readline() {
string str;
getline(cin, str);
return str;
}
int main(void){
auto times = stoi(readline());
const string ann = "Ann";
string str = "";
for (auto cnt = 0; cnt < times; cnt++) {
str += ann;
}
cout << str << endl;
return EXIT_SUCCESS;
}
[/code]
Swift
参考URL: https://github.com/saitomarch/POH7/blob/master/swift/tsurime.swift
[code lang=”swift”]let times = Int(readLine()!)
let ann = "Ann"
var str = "";
for (var cnt = 0; cnt < times; cnt++) {
str += ann;
}
print(str)
[/code]
解説
C++、Swiftともに入力から得られた文字列を数値化した後、その回数分”Ann”という文字列をつなげた後、一気に出力するという方式を取っている。
C++ではgetline()
という関数があるが、それをより使いやすくするために、独自にreadline()
という関数を作っているが、やっていること自体はそこまで複雑ではない。
Swiftでは、readLine()
はString型のOptional型 ((nilの可能性がある型)) を返り値とする関数であるため、型を確定するには関数の後に!を追加しなければならない ((本来であればnilチェックをしなければならないが、今回は省略している)) 。
C言語のstd::string、SwiftのStringはいずれも+演算子で文字列を結合できる特徴がある。今回はそれを利用した。
その後は、結合した文字を出力した。
最後に
今回解説コードを上げた問題はプログラミングを始めた人であれば(言語にもよるが)簡単に解けるので、もしミスっていたら、どこが間違っていたのかちゃんと見直すようにしよう。
ウェブマスター。本ブログでITを中心にいろいろな情報や意見などを提供しています。主にスマートフォン向けアプリやウェブアプリの開発を携わっています。ご用の方はコメントかコンタクトフォームにて。