プログラミングテストTweet先日、会社でプログラミングのテストが行われました。使用言語は自由だったのでC言語を選択してみました。それに関するメモ的な何か。問題は以下の通りです。与えられた文字列に対して、数字を挿入する関数を記述してください。挿入ルールは、最初に”1′′、1文字あけて”2′′、2文字あけて”3”、・・・(英字が与えられる前提でOK、スペースやカンマも1文字と数える。)ただし最後は、あける文字数によらず数字で終わらせる。7you?8一応解けたんですが、出力文字列の長さの計算が分からなかったので適当に決め打ちの長さでやってしまいました。その部分を後で考えなおしました。́∀`)とりあえず以下ソース。埋め込む数字の総文字数ということですが、埋め込む数字の最大値を求め、総文字数を求めています。get_triangular_number()の部分ですが、ここで三角数の判定の数式を用いて導きだしたn以上の直近の三角数のn(nって正しくはなんて言うんだ?わかりづらいですねw)を返します。それを利用して桁数を文字数として、総文字数の算出をget_total_num_strlen()で行なっています。いう感じで出力する文字列の長さが割り出せればあとは大したことないですね。なんか途中で間違って常用対数の総和とか使いそうになってました。PHPとかでやればこんな計算要らないのですが、自分としてはこういった数学的要素が絡むほうが好きなので、敢えて難易度の高いやり方を選んだわけです。以上!追記atoi()はANSI標準ライブラリ関数なのにitoa()ってそうじゃないらしいですね...VC++でやってたら気づきませんでした。あとでその部分修正するか(-_-;)TweetCアルゴリズムSNSでもご購読できます。TwitterでフォローするFeedlyでフォローするたかおファン(surface0)1983年生まれ。趣味はエレキギターなど。最近やってるゲームはWoWs、プリコネ、デレステ。