Исправить код по задаче о катящемся кубике - C#

Узнай цену своей работы

Формулировка задачи:

Грани кубика помечены числами от 1 до 6. Если кубик лежит на плоскости, то оставляет след в виде квадрата с цифрой равной цифре на основании кубика. Кубик катится по столу, переворачиваясь через ребра. Возьмем некоторую последовательность, состоящую из цифр от 1 до 6. Определить является ли данная последовательность следом кубика. Длина последовательности от 1 до 200 символов, в ней присутствуют только цифры от 1 до 6. Развертка кубика изображена на рисунке. Кубик будет именно таким. Начальные данные: Последовательность цифр от 1 до 6, записанных в виде строки без пробелов. Вывод результата: "YES" или "NO" по условию задачи. Нашими начальными данными по условию будут 6413 а вывод YES. Укажите,в чём я был не прав и почему программа не работает.
using System;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int g = 0;
            int n = 4;
            string s = "1 2 3 4 5 6";
            string s2 = Console.ReadLine();
            string[] mass = s2.Split();
            for (int i = 0; i < n; i++)
            {
                string a = mass[i];
                if (s.Contains(a))
                {
                    g++;
                }
            }
            if (g == 4)
            {
                Console.WriteLine("YES");
            }
 
        }
    }
}
чуток изменил цикл,но ничего не изменилось
for (int i = 0; i < n; i++)
            {
                string a = mass[i];
                bool b = s.Contains(a);
                if (b==true)
                {
                    g++;
                }
            }

Решение задачи: «Исправить код по задаче о катящемся кубике»

textual
Листинг программы
class Program
{
    static void Main()
    {
        string input = Console.ReadLine();
        Console.WriteLine(CanRoll(input) ? "YES" : "NO");
    }
 
    static bool CanRoll(string input)
    {
        if (input.Length == 1)
            return true;
 
        bool[,] adjacency = new bool[6, 6]
        {
            { true, true, true, true, true, false },
            { true, true, true, true, false, true },
            { true, true, true, false, true, true },
            { true, true, false, true, true, true },
            { true, false, true, true, true, true },
            { false, true, true, true, true, true },
        };
 
        for (int i = 1; i < input.Length; i++)
        {
            int a = (int)char.GetNumericValue(input[i - 1]) - 1;
            int b = (int)char.GetNumericValue(input[i]) - 1;
 
            if (!adjacency[a, b])
                return false;
        }
        return true;
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.333 из 5