[過去ログ] プログラミングのお題スレ Part21 (1002レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
454: 401 [sage] 2023/02/23(木) 18:33:45.89 ID:n1e6/0k5(1) AAS
>>401401(6): デフォルトの名無しさん [] 2023/01/31(火) 06:31:47.98 ID:ozTESx1d(1) AAS
お題
顧客番号・商品番号・小計のCSV を、
商品番号が連番の場合には、その分だけ行数を増やし、
小計を等分割しろ(1円未満は切り捨て)
入力
1,1,100
2,1-3,200
3,1,500
3,2-3,400
出力
1,1,100
2,1,66
2,2,66
2,3,66
3,1,500
3,2,200
3,3,200
空白行に意味はない。見やすくしただけ
Elixir で作った
{ :ok, input_data } = File.read( "input_data.csv" )
# IO.inspect input_data
# 末尾の改行を削除してから、1行ずつ処理する。カンマで区切る
input_data
|> String.trim
|> String.split( "\n" )
|> Enum.map( fn( line ) -> String.split( line, "," ) end )
|> Enum.each( fn [ custom_num, seq_num, money ] ->
{ from, to } = case String.split( seq_num, "-" ) do
# - を含まない時は、2つに分割できない
[ first ] -> num = String.to_integer( first )
{ num, num }
# - を含む時は、2つに分割できる
[ first, last ] -> { String.to_integer( first ), String.to_integer( last ) }
end
for n <- from..to, do: IO.puts "#{ custom_num },#{ n },#{ div( String.to_integer( money ), to - from + 1 ) }"
end )
# |> IO.inspect
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.043s