[過去ログ]
プログラミングのお題スレ Part21 (1002レス)
プログラミングのお題スレ Part21 http://mevius.5ch.net/test/read.cgi/tech/1668333636/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
397: デフォルトの名無しさん [] 2023/01/22(日) 14:44:09.50 ID:4qkUXg4j お題 月、名前、金額が入力されます 月が2022-12〜2023-01の期間で 金額の合計が最も大きい人の名前と合計の金額を出力してください 2022-10 加藤 10 2022-12 柳沢 10000 2022-10 柳沢 26 2023-01 伊東 10 2022-12 柳沢 151288 2022-11 加藤 10000 2023-02 伊東 257900 2022-12 柳沢 12600 2022-10 伊東 12600 2023-01 伊東 70000 2022-11 加藤 40000 2023-01 伊東 150000 2022-11 加藤 60000 2022-12 柳沢 257900 2023-02 柳沢 40000 2022-11 加藤 26 2023-02 加藤 10000 http://mevius.5ch.net/test/read.cgi/tech/1668333636/397
398: デフォルトの名無しさん [sage] 2023/01/22(日) 16:15:12.29 ID:kK2ZzIVu >>397 Haskell mport Data.List makeReport ls = id $ (\x -> ( minimum x, maximum x )) $ map (\x -> ( sum $ map (read.(!!2)) x, (head x)!!1)) $ groupBy (\x y -> x!!1 == y!!1 ) $ filter ( \x -> head x >= "2022-12" && head x <= "2023-01" ) $ map words $ ls main = do cont <- getContents let ls = lines cont print $ makeReport ls http://mevius.5ch.net/test/read.cgi/tech/1668333636/398
399: デフォルトの名無しさん [] 2023/01/23(月) 01:10:57.11 ID:PlrAEUgr >>397 awk, sort, head 元データをコピペで odai_397.txt に入れておいて Linux で bash から以下を実行した。 awk '$1>="2022-12"&&$1<="2023-01"{t[$2]+=$3}END{for(i in t)print i,t[i]}' odai_397.txt | sort -k 2nr | head -1 結果はこう出た。 柳沢 431788 http://mevius.5ch.net/test/read.cgi/tech/1668333636/399
400: デフォルトの名無しさん [] 2023/01/23(月) 02:39:02.46 ID:PlrAEUgr >>397 Kotlin >>399をKotlinに変えたような感じ。 https://paiza.io/projects/N5dGV3k8eqnRgAPpJ99-gg http://mevius.5ch.net/test/read.cgi/tech/1668333636/400
405: デフォルトの名無しさん [] 2023/02/03(金) 20:44:23.48 ID:KJ3h+c6Z >>397 Elixir で作った。これは、ややこしかった { :ok, input_data } = File.read( "input_data.csv" ) # IO.inspect input_data # 末尾の改行を削除してから、1行ずつ処理する。空白で区切る。 # 2022-12 〜 2023-01 の期間内のデータだけに絞り込む。 # 名前でグルーピングしてから、金額を取り出す。 # 各人の金額を、数値に変換してから合計する。 # 合計が最も大きい人を求める tuple = input_data |> String.trim |> String.split( "\n" ) |> Enum.map( fn( line ) -> String.split( line, " " ) end ) |> Enum.filter( fn [ head | _ ] -> "2022-12" <= head and head <= "2023-01" end ) # |> IO.inspect |> Enum.group_by( fn [ _, name, _ ] -> name end, fn [ _, _, money ] -> money end ) # |> IO.inspect |> Enum.map( fn { key, val } -> { key, Enum.sum( Enum.map( val, &String.to_integer( &1 ) ) ) } end ) # |> IO.inspect |> Enum.max_by( &elem( &1, 1 ) ) # |> IO.inspect { name, money } = tuple IO.puts "#{ name }, #{ money }" #=> 柳沢, 431788 http://mevius.5ch.net/test/read.cgi/tech/1668333636/405
407: デフォルトの名無しさん [] 2023/02/14(火) 09:18:44.14 ID:NQYE/eke >>397 C# public static void Main(String[] args) { var m = ReadLines() .Select(x => { var a = x.Split(" "); return new { Month = a[0], Name = a[1], Money = int.Parse(a[2]) }; }) .Where(x => "2022-12".CompareTo(x.Month) <= 0 && x.Month.CompareTo("2023-01") <= 0) .GroupBy(x => x.Name) .Select(g => new { Name = g.Key, Total = g.Select(x => x.Money).Sum() }) .MaxBy(x => x.Total); Console.WriteLine(m); } static IEnumerable<string> ReadLines() { while (true) { var line = Console.ReadLine(); if (line == null) { yield break; } yield return line; } } http://mevius.5ch.net/test/read.cgi/tech/1668333636/407
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.040s