😀

ABC_AB問題2つを解いてJuliaに慣れる

2021/03/13に公開

Juliaをやらないといけなくなった

仕事でJuliaを使えればいいよね、という話になり、インストールにすったもんだしたものの、職場と自宅のPCにようやくJulia1.5.3をインストールできました。

今日は雨だし、AtCorderのABCのAB問題を解いて、Juliaに慣れていこうと思います。
出場した覚えのないコンテストを適当に2つかいつまんでいます。

ABC189

A_Slot

stringが同じ文字でできているかどうかを判定します。
Juliaのインデックスは1始まり。Stringを読むとPython同様にインデックスで単語にアクセスできます。

c = readline()
if c[1] == c[2] == c[3]
    println("Won")
else
    println("Lost")
end

B_Alcoholic

繰り返しとifの練習。
アルコール度数を小数にして計算しただけでWAが7つ出ました。
型回りはまだ不慣れです。
x -> hoge()はJuliaの無名関数です。

function main()
    n,x = readline() |> split .|> x -> parse(Int, x)
    x = x*100
    drink = 0
    ans = -1
    for t in 1:n
        v,p = readline() |> split .|> x -> parse(Int, x)
        drink += v * p
        if drink > x
            ans = t
            return println(ans)
        end
    end
    println(ans)
end
main()

ABC174

A_Air conditioner

もっとコンパクトにかけるんだろうな、と思いながら、反射力を鍛える方を優先しています。

function main()
    x = readline() |> x -> parse(Int,x)
    if x >= 30
        println("Yes")
    else
        println("No")
    end
end
main()

Pythonならこうなのに…。

print('Yes') if int(input()) >= 30 else print('No')

B_Distance

Juliaの関数は簡単に書けるらしいので、distanceを求めるのにその書き方をやってみます。

 dist(x,y) = (x^2 + y^2)^(0.5)

function main()
    n,D = readline() |> split .|> x -> parse(Int, x)
    counter = 0
    for t in 1:n
        x,y = readline() |> split .|> x -> parse(Int, x)
         d = dist(x,y)
        if d <= D
            counter += 1
        end
    end
    println(counter)
end
main()

おわり

公式Documentのどこを見たらいいかがわかってきたので、C問題に移ります。
endを書かないといけないので、ぱっと見のコードが長くなるのが少し気になるところです。

Discussion