[過去ログ] プログラミングのお題スレ Part21 (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
410: デフォルトの名無しさん [] 2023/02/18(土) 20:06:32.64 ID:7FIuY7Pp(1/2) AAS
>>401
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

空白行に意味はない。見やすくしただけ
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;
 }
}
411: デフォルトの名無しさん [] 2023/02/18(土) 20:21:20.76 ID:7FIuY7Pp(2/2) AAS
>>408
408(4): デフォルトの名無しさん [sage] 2023/02/14(火) 09:59:44.90 ID:K2Y3lAZv(1) AAS
お題:与えられた文字列が回文であるかどうかを判定するプログラムを作成してください。 (例: "racecar"は回文)
C#
static bool IsPalindrome(string s) {
 var i = -1;
 var j = s.Length;
 while (++i < --j) if (s[i] != s[j]) return false;
 return true;
}
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.041s