[過去ログ] プログラミングのお題スレ Part21 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
401
(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

空白行に意味はない。見やすくしただけ
402
(1): デフォルトの名無しさん [sage] 2023/02/01(水) 03:34:10.44 ID:7Z3xMS0R(1) AAS
>>401

Haskell

外部リンク:ideone.com

ただし入力はすべての行が
整数,整数,整数
または
整数,整数-整数,整数
のみの形と仮定、エラー処理やそれ以外の形式でが混じっている(空行など)が混じることは想定せず
403: デフォルトの名無しさん [] 2023/02/01(水) 22:55:53.80 ID:8+TAxA89(1) AAS
>>401
PowerShell (入力データはa.txtに保存されているものとし、形式は>>402と同じ)

cat a.txt |% {
  $d = $_ -split ","
  $r = @(iex ($d[1] -replace "-", ".."))
  $r |% {$d[0], $_, [Math]::Floor($d[2] / $r.count) -join ","}
}
404: デフォルトの名無しさん [] 2023/02/02(木) 02:55:58.24 ID:lvlxzCHr(1) AAS
>>401
Perl

外部リンク:paiza.io

空白行は入力しないで読み飛ばすだけにした。出力もしない。
410: デフォルトの名無しさん [] 2023/02/18(土) 20:06:32.64 ID:7FIuY7Pp(1/2) AAS
>>401
C#
public static void Main(String[] args) {
 var xs = ReadLines()
  .Select(x => {
   var a = x.Split(",");
   return new { UserId = a[0], ItemIdRange = a[1], Amount = int.Parse(a[2]) };
  })
  .SelectMany(x => {
   var range = x.ItemIdRange.Split("-")
    .Select(y => int.Parse(y))
    .ToArray();

   var from = range[0];
   var to = range.Length == 1 ? from : range[1];
   var count = to - from + 1;
   var amount = x.Amount / count;

   return Enumerable.Range(from, count)
    .Select(id => new { UserId = x.UserId, ItemId = id, Amount = amount });
  });

 foreach (var x in xs) {
  Console.WriteLine(x);
 }
}

static IEnumerable<string> ReadLines() {
 while (true) {
  var line = Console.ReadLine();
  if (line == null) {
   yield break;
  }
  yield return line;
 }
}
454: 401 [sage] 2023/02/23(木) 18:33:45.89 ID:n1e6/0k5(1) AAS
>>401
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
455: デフォルトの名無しさん [] 2023/02/24(金) 02:31:53.29 ID:qWDde+97(1) AAS
>>401
Kotlin
外部リンク:paiza.io
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.040s