02. Japanese Roulette - Array and List Algorithms - More Exercises
Здравейте колеги!
Въпросът ми е, няма ли грешка в резултата на 2-рия нулев тест?
Условие: https://softuni.bg/trainings/resources/officedocument/12962/exercise-problem-descriptions-programming-fundamentals-exended-january-2017
Input |
Output |
0 0 1 0 0 0 1,Right 2,Left 5,Left
|
Game over! Player 1 is dead. |
Не трябва ли да е Player 2 is dead?
Ако съм прав и има грешка, то има ли грешка и във останалите тестове, които не са нулеви?
А ако греша, ще се радвам ако ми помогнете с кода
Ето го най-успешният ми до сега (40/10):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace JapaneseRoulette
{
class Program
{
static void Main(string[] args)
{
var revolver = Console.ReadLine().Split(' ').Select(int.Parse).ToList();
var players = Console.ReadLine().Split(' ').ToList();
string left = "Left";
string right = "Right";
var bullet = 0; ;
var position = 2;
var playerNumber = -1;
foreach (var bulletHole in revolver)
if (bulletHole > 0)
bullet = bulletHole;
for (int i = 0; i < players.Count; i++)
{
var player = players[i].Split(',').ToArray();
var spins = int.Parse(player[0]);
var direction = player[1];
if (direction == left)
{
while (spins > 0)
{
position++;
spins--;
if (position > revolver.Count - 1)
position = 0;
}
}
else if (direction == right)
{
while (spins > 0)
{
position--;
spins--;
if (position < 0)
position = revolver.Count - 1;
}
}
if (revolver[position] == bullet)
{
playerNumber = i;
break;
}
}
if (playerNumber < 0)
Console.WriteLine("Everybody got lucky!");
else
{
Console.WriteLine("Game over! Player {0} is dead.", playerNumber);
}
}
}
}
Много благодаря! Наистина това го бях изпуснал, след като добавих 3 реда код за завъртането след дърпането на спусъка веднага ми изкара 100/100
А, ако някой се нуждае, ето го и кода (ограденият в жълто код е добавения):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace JapaneseRoulette
{
class Program
{
static void Main(string[] args)
{
var revolver = Console.ReadLine().Split(' ').Select(int.Parse).ToList();
var players = Console.ReadLine().Split(' ').ToList();
string left = "Left";
string right = "Right";
var bullet = 0; ;
var position = 2;
var playerNumber = -1;
foreach (var bulletHole in revolver)
if (bulletHole > 0)
bullet = bulletHole;
for (int i = 0; i < players.Count; i++)
{
var player = players[i].Split(',').ToArray();
var spins = int.Parse(player[0]);
var direction = player[1];
if (direction == left)
{
while (spins > 0)
{
position++;
spins--;
if (position > revolver.Count - 1)
position = 0;
}
}
else if (direction == right)
{
while (spins > 0)
{
position--;
spins--;
if (position < 0)
position = revolver.Count - 1;
}
}
if (revolver[position] == bullet)
{
playerNumber = i;
break;
}
position--;
if (position < 0)
position = revolver.Count - 1;
}
if (playerNumber < 0)
Console.WriteLine("Everybody got lucky!");
else
{
Console.WriteLine("Game over! Player {0} is dead.", playerNumber);
}
}
}
}
INPUT:
0 0 1 0 0 0
1,Right 2,Left 5,Left
OUTPUT: Game over! Player 1 is dead.
Добре.Барабана е на позиция 0, Първия играч(индекс 0) го завърта с 1 на дясно, става на позиция 1, стреля и се завърта с още една позиция, тоест барабана е на индекс 2(където е куршума).Някой може ли да ми обясни как, Втория играч ( индекс 1) завърта на ляво барабана с 2 ( тоест от индекс 2 отива на 0 и умира?) ???? Знам,че някаде бъркам, но не ми е ясно как играч 1 умира? ?? :((((((((( Ето и грешно решение... http://pastebin.com/7kQCAaQx Изобщо не ми е ясно каква е логиката :XXX
Прочети в тази тема коментарите. Опитах се да обясня, надявам се да ти помогне.