(備忘録)AtCoderをやって11
問題
A, B, C からなる長さ N の文字列 S と、1 以上 N 以下の整数 K が与えられます。 文字列 S の K 文字目を小文字に書き換え、新しくできた S を出力してください。
自分の回答
絶対にもっといい回答あると思ったけど思い付かなかった
n, k = gets.split.map(&:to_i) s = gets.chomp.to_s a = s.slice!(k-1) puts s.insert(k-1, a.downcase)
その他の回答
単純にs[k-1]で指定箇所の文字取ってこれるからそれでいい訳ですね
n,k = gets.split.map &:to_i s = gets.chomp s[k-1] = s[k-1].downcase puts s
問題
下記参照
自分の回答
無理やり通したけどめっちゃ汚いコード・・・
a = gets.chomp b = a.slice!(2..3).to_i a = a.to_i if 1 <= a && a <= 12 && 1 <= b && b <= 12 puts "AMBIGUOUS" elsif 1 <= b && b <= 12 puts "YYMM" elsif 1 <= a && a <= 12 puts "MMYY" else puts "NA" end
その他の回答
意外と愚直にやる方法しかなさそう?大きな変更はないですが、条件の部分を変数に代入して少し見やすくしたパターン
a = gets.chomp b = a.slice!(2..3).to_i a = a.to_i x = 1 <= a && a <= 12 y = 1 <= b && b <= 12 if x && y puts "AMBIGUOUS" elsif y puts "YYMM" elsif x puts "MMYY" else puts "NA" end