0 / 0 / 0
Регистрация: 07.12.2016
Сообщений: 1
1

Проверить правильность расстановки костяшек домино

07.12.2016, 01:26. Показов 1446. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дан массив из 22 целых чисел из интервала от 0 до 66, представляющих
собой условные обозначения костей домино (например, число 42 есть обо-
значение кости домино "2–4", число 33 — кости "3–3" и т. п.). Определить,
соответствует ли последовательность элементов массива ряду костей доми-
но, выложенному по правилам этой игры. Рассмотреть два случая:
а) последняя цифра каждого числа соответствует количеству точек на пра-
вой половине кости домино;
б) количеству точек на правой и левой половин;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.12.2016, 01:26
Ответы с готовыми решениями:

Правильность расстановки парных скобок
Помогите пожалуйста с кодом, нужно проверить правильно ли расставлены скобки при помощи стека....

Проверить правильность ввода числа в двоичной и перевести число в десятичную систему счисления
Дано число в двоичной системе счисления. Проверить правильность ввода этого числа (в его записи...

Проверить правильность расстановки скобок
Помогите написать программу.Проверить правильно ли в операторе b:=(cos(a+x)+exp(ln(a)*x)/sqr(x)...

Проверить правильность расстановки скобок
Строка содержит арифметическое выражение, в котором используются круглые скобки. Проверить...

3
6044 / 2159 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
02.03.2018, 16:48 2
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public class Domino {
    private static final char EMPTY = '\u00D8';
 
    private char left;
    private char right;
 
    public static Domino fromInt(final int value) {
        if ((value > 66) || (value < 0))
            throw new IllegalArgumentException("Value " + value + " is not in range [0..66]");
 
        return new Domino(encode(value / 10), encode(value % 10));
    }
 
    public boolean isAttachableTo(final Domino next) {
        return this.right == next.left;
    }
 
    @Override
    public String toString() {
        return "[" + left + "-" + right + "]";
    }
 
    private Domino(char left, char right) {
        this.left = left;
        this.right = right;
    }
 
    private static char encode(final int value) {
        if (value == 0)
            return EMPTY;
        else
            return (char) (value + 48);
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
public class Main {
    public static void main(String[] args) {
        Integer a[] = { 13, 34, 44, 46, 66, 63, 33, 32, 21, 10, 0, 1, 14 };
        Integer b[] = { 43, 31, 10, 0, 4, 44, 45, 51, 22 };
        Integer c[] = { 13, 34, 44, 46, 66, 63, 66, 32, 21, 10, 0, 1, 14 };
        Integer d[] = { 13, 34, 44, 46, 66, 63, 32, 21, 10, 0, 1, 14, -2 };
 
        testSequence(a);
        testSequence(b);
        testSequence(c);
        testSequence(d);
    }
 
    private static void testSequence(final Integer ... a) {
        Optional<String> failure = validateSequence(a);
 
        if (failure.isPresent())
            System.out.println("Sequence is invalid: " + failure.get());
        else
            System.out.println("Sequence is valid");
    }
 
    private static Optional<String> validateSequence(final Integer ... sequence) {
        String failureReason = null;
 
        final List<Integer> items = Arrays.asList(sequence);
 
        final Set<Integer> duplicates = items.stream()
                .filter(x -> Collections.frequency(items, x) > 1)
                .collect(Collectors.toSet());
 
        if (duplicates.size() > 0) {
            final StringJoiner stringJoiner = new StringJoiner(", ", "Items: ", " appear more than once");
 
            duplicates.forEach(item -> stringJoiner.add(Domino.fromInt(item).toString()));
 
            failureReason = stringJoiner.toString();
        }
 
        int i = 0;
        while ((i < items.size() - 1) && (failureReason == null)) {
            try {
                final Domino left = Domino.fromInt(items.get(i));
                final Domino right = Domino.fromInt(items.get(i + 1));
 
                if (!left.isAttachableTo(right))
                    failureReason = left + " cannot be attached to " + right;
 
            } catch (IllegalArgumentException e) {
                failureReason = e.getMessage();
            }
 
            i++;
        }
 
        return Optional.ofNullable(failureReason);
    }
}
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12238 / 7405 / 1736
Регистрация: 25.07.2009
Сообщений: 13,596
03.03.2018, 03:18 3
Цитата Сообщение от CorbieSempai Посмотреть сообщение
Дан массив из 22 целых чисел из интервала от 0 до 66, представляющих
собой условные обозначения костей домино
Постановка в принципе не правильная. Число 59 к примеру входит в диапазон, но доминошки 5-9 не бывает. Мало того! 12 и 21 - не две доминошки, а одна...
1
HighPredator
05.03.2018, 08:26     Проверить правильность расстановки костяшек домино
  #4

Не по теме:

easybudda, согласен, но мне некогда было полную модель реализовывать.

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.03.2018, 08:26

Проверить правильность расстановки скобок
Дано арифметическое выражение, содержащее три вида скобок &quot;(&quot;,&quot;[&quot;,&quot;{&quot;. Проверить правильность...

Проверить правильность расстановки скобок
Не знаю в чем ошибка, программа не работает. Подскажите пожалуйста)) /* Проверить правильность...

Проверить правильность расстановки предлогов
Здравствуйте, такие вот предложения, проверьте, пожалуйста) (near, between, on, at, opposite, in...

Проверить правильность расстановки скобок
Помогите написать программу на c++. Дана строка, содержащая латинские буквы и скобки трех видов:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru