F#で安藤杏ちゃんの好感度をMAX&レアアイテムALL GET (POH7)
プログラミングで彼女を作る(paiza Online Hackathon 7)の言語別集計数を見ると、F#で提出している人が少ないようでしたので、一通りF#で書いてみました。
こうした方が良い、等のご指摘は大歓迎です。いつでもお待ちしております。
目
つり目
seq { for n in 1 .. int (System.Console.ReadLine()) -> "Ann" }
|> Seq.reduce (+)
|> printfn "%s"
眼帯
open System
ignore (Console.ReadLine())
ignore (Console.ReadLine())
let a = Console.ReadLine().Split(' ')
|> Set.ofArray
ignore (Console.ReadLine())
let b = Console.ReadLine().Split(' ')
|> Set.ofArray
let c = b - a
printfn "%s" (if (Set.isEmpty c) then "None" else c |> Set.toSeq
|> Seq.sortBy (fun elem -> int (elem))
|> Seq.reduce (fun acc elem -> acc + " " + elem))
seq { for n in 1 .. int (System.Console.ReadLine()) -> "Ann" }
|> Seq.reduce (+)
|> printfn "%s"
open System
ignore (Console.ReadLine())
ignore (Console.ReadLine())
let a = Console.ReadLine().Split(' ')
|> Set.ofArray
ignore (Console.ReadLine())
let b = Console.ReadLine().Split(' ')
|> Set.ofArray
let c = b - a
printfn "%s" (if (Set.isEmpty c) then "None" else c |> Set.toSeq
|> Seq.sortBy (fun elem -> int (elem))
|> Seq.reduce (fun acc elem -> acc + " " + elem))
ソートするのを忘れていてハマりました。
髪
ショートヘア
printfn "%d" (int (System.Console.ReadLine()) + int (System.Console.ReadLine()))
ロングヘア
let ans =
seq { for n in 1 .. 5 -> System.Console.ReadLine() }
|> Seq.fold (fun acc elem -> acc + match elem with
| "yes" -> 1
| "no" -> 0) 0
printfn "%s" (if ans > 2 then "yes" else "no")
ポニーテール
[ 1 .. int (System.Console.ReadLine()) ]
|> List.rev
|> List.iter (fun elem -> printfn "%d" elem)
printfn "0!!"
ツインテール
open System
let cp (s : string) =
let arr = s.Split(' ')
float (arr.[0]) / float (arr.[1])
let ret1 = cp (Console.ReadLine())
let ret2 = cp (Console.ReadLine())
printfn "%s" (if ret1 > ret2 then "1" else "2")
服
セーラー服
open System
seq { for n in 1 .. int (Console.ReadLine()) -> Console.ReadLine() }
|> Seq.reduce (fun acc elem -> acc + "_" + elem)
|> printfn "%s"
カーディガン
seq { 1 .. int (System.Console.ReadLine()) }
|> Seq.reduce (*)
|> printfn "%d"
縞ニーソ
open System
let n = int (Console.ReadLine())
seq { for i in 1 .. int (Console.ReadLine()) -> match (i - 1) % (2 * n) with
| _ as c when c < n -> "R"
| _ as c when c >= n -> "W" }
|> Seq.iter (fun elem -> printf "%s" elem)
レアアイテム
めがね
open System
let n = int (Console.ReadLine())
let large = Array.zeroCreate<string[]> n
|> Array.map (fun elem -> Console.ReadLine().Split(' '))
let m = int (Console.ReadLine())
let small = Array.zeroCreate<string[]> m
|> Array.map (fun elem -> Console.ReadLine().Split(' '))
let mutable res = (0, 0)
for i in 0 .. (n - m) do
for j in 0 .. (n - m) do
let mutable flag = true
for k in 0 .. (m - 1) do
for l in 0 .. (m - 1) do
if large.[i + k].[j + l] <> small.[k].[l] then flag <- false
if flag then res <- (i, j)
printfn "%d %d" (fst (res)) (snd (res))
printfn "%d" (int (System.Console.ReadLine()) + int (System.Console.ReadLine()))
let ans =
seq { for n in 1 .. 5 -> System.Console.ReadLine() }
|> Seq.fold (fun acc elem -> acc + match elem with
| "yes" -> 1
| "no" -> 0) 0
printfn "%s" (if ans > 2 then "yes" else "no")
[ 1 .. int (System.Console.ReadLine()) ]
|> List.rev
|> List.iter (fun elem -> printfn "%d" elem)
printfn "0!!"
open System
let cp (s : string) =
let arr = s.Split(' ')
float (arr.[0]) / float (arr.[1])
let ret1 = cp (Console.ReadLine())
let ret2 = cp (Console.ReadLine())
printfn "%s" (if ret1 > ret2 then "1" else "2")
セーラー服
open System
seq { for n in 1 .. int (Console.ReadLine()) -> Console.ReadLine() }
|> Seq.reduce (fun acc elem -> acc + "_" + elem)
|> printfn "%s"
カーディガン
seq { 1 .. int (System.Console.ReadLine()) }
|> Seq.reduce (*)
|> printfn "%d"
縞ニーソ
open System
let n = int (Console.ReadLine())
seq { for i in 1 .. int (Console.ReadLine()) -> match (i - 1) % (2 * n) with
| _ as c when c < n -> "R"
| _ as c when c >= n -> "W" }
|> Seq.iter (fun elem -> printf "%s" elem)
レアアイテム
めがね
open System
let n = int (Console.ReadLine())
let large = Array.zeroCreate<string[]> n
|> Array.map (fun elem -> Console.ReadLine().Split(' '))
let m = int (Console.ReadLine())
let small = Array.zeroCreate<string[]> m
|> Array.map (fun elem -> Console.ReadLine().Split(' '))
let mutable res = (0, 0)
for i in 0 .. (n - m) do
for j in 0 .. (n - m) do
let mutable flag = true
for k in 0 .. (m - 1) do
for l in 0 .. (m - 1) do
if large.[i + k].[j + l] <> small.[k].[l] then flag <- false
if flag then res <- (i, j)
printfn "%d %d" (fst (res)) (snd (res))
open System
let n = int (Console.ReadLine())
let large = Array.zeroCreate<string[]> n
|> Array.map (fun elem -> Console.ReadLine().Split(' '))
let m = int (Console.ReadLine())
let small = Array.zeroCreate<string[]> m
|> Array.map (fun elem -> Console.ReadLine().Split(' '))
let mutable res = (0, 0)
for i in 0 .. (n - m) do
for j in 0 .. (n - m) do
let mutable flag = true
for k in 0 .. (m - 1) do
for l in 0 .. (m - 1) do
if large.[i + k].[j + l] <> small.[k].[l] then flag <- false
if flag then res <- (i, j)
printfn "%d %d" (fst (res)) (snd (res))
宣言型に近いコードになってしまいました。
サンタ服
open System
let xyzn = Console.ReadLine().Split(' ')
let mutable xlist = [ 0; ]
let mutable ylist = [ 0; ]
for i in 1 .. int (xyzn.[3]) do
let s = Console.ReadLine().Split(' ')
let v = int (s.[1])
if s.[0] = "0" then xlist <- v :: xlist else ylist <- v :: ylist
xlist <- int (xyzn.[0]) :: xlist
|> List.sort
let mutable xslist = []
for i in 0 .. (xlist.Length - 2) do
xslist <- (xlist.Item(i + 1) - xlist.Item(i)) :: xslist
xslist <- List.sort xslist
ylist <- int (xyzn.[1]) :: ylist
|> List.sort
let mutable yslist = []
for i in 0 .. (ylist.Length - 2) do
yslist <- (ylist.Item(i + 1) - ylist.Item(i)) :: yslist
yslist <- List.sort yslist
printfn "%d" (xslist.Head * yslist.Head * int (xyzn.[2]))
これも宣言型に近いコードになってしまいました。
水着
(seq { 1L .. int64 (System.Console.ReadLine()) }
|> Seq.reduce (fun acc elem ->
let rec re n = if n % 10L = 0L then re (n / 10L) else n
re (acc * elem) % 100000000000L)) % 1000000000L
|> printfn "%d"
計算途中では、9桁ではなく11桁取る必要がある、と言うことに気付かず苦戦しました。
Author And Source
この問題について(F#で安藤杏ちゃんの好感度をMAX&レアアイテムALL GET (POH7)), 我々は、より多くの情報をここで見つけました https://qiita.com/dc1394/items/f97043f0aba1e0a7a0a7著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .