SHARE
TWEET

Japanese Roulette

a guest Mar 1st, 2017 194 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Text.RegularExpressions;
  6. using System.Threading.Tasks;
  7.  
  8. namespace JapaneseRoulette
  9. {
  10.     class Program
  11.     {
  12.         static void Main(string[] args)
  13.         {
  14.             var cylinder = Console.ReadLine()
  15.                 .Split()
  16.                 .Select(int.Parse)
  17.                 .ToList();
  18.  
  19.             var players = Console.ReadLine()
  20.                 .Split()
  21.                 .ToList();
  22.  
  23.             var deadMan = false;
  24.             var deadPlayer = 0;
  25.  
  26.             foreach (var player in players)
  27.             {
  28.                 var spinInfo = player
  29.                     .Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
  30.                     .Select(a => a.Trim())
  31.                     .ToArray();
  32.  
  33.                 var spinStrength = int.Parse(spinInfo[0]) % cylinder.Count;
  34.                 var spinDirection = spinInfo[1];
  35.  
  36.                 if (spinDirection == "Left")
  37.                 {
  38.                     cylinder = SpinLeft(cylinder, spinStrength);
  39.                    
  40.                 }
  41.                 else if (spinDirection == "Right")
  42.                 {
  43.                     cylinder = SpinRight(cylinder, spinStrength);                    
  44.                 }
  45.  
  46.                 if (cylinder[2] == 1)
  47.                 {
  48.                     deadMan = true;
  49.                     deadPlayer = players.IndexOf(player);
  50.                     break;
  51.                 }
  52.                 cylinder = SpinRight(cylinder, 1); //Trigger
  53.             }
  54.  
  55.             if (deadMan)
  56.             {
  57.                 Console.WriteLine($"Game over! Player {deadPlayer} is dead.");
  58.             }
  59.             else
  60.             {
  61.                 Console.WriteLine("Everybody got lucky!");
  62.             }
  63.         }
  64.  
  65.         private static List<int> SpinLeft(List<int> cylinder, int spinStrength)
  66.         {
  67.             for (int i = 0; i < spinStrength; i++)
  68.             {
  69.                 cylinder = cylinder
  70.                     .Skip(1)
  71.                     .Concat(cylinder.Take(1))
  72.                     .ToList();
  73.             }
  74.             return cylinder;
  75.         }
  76.  
  77.         private static List<int> SpinRight(List<int> cylinder, int spinStrength)
  78.         {
  79.             for (int i = 0; i < spinStrength; i++)
  80.             {
  81.                 cylinder = cylinder
  82.                     .Skip(cylinder.Count - 1)
  83.                     .Concat(cylinder.Take(cylinder.Count - 1))
  84.                     .ToList();
  85.             }
  86.             return cylinder;
  87.         }
  88.     }
  89. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top