Традиционный западный штамп представляет собой куб, на котором целые числа от 1 до 6, отмечены на лицах. Пары, которые добавляют к 7, размещаются на противоположных гранях.
Поскольку это куб, мы можем видеть только от 1 до 3 граней (включительно) 1 в любой момент времени. Противоположные лица никогда не видны одновременно.
Ваша задача - написать программу или функцию, которая, учитывая список целых чисел, представляющих стороны на матрице, определяет, можно ли увидеть эти грани одновременно.
1 Хорошо, может быть, вы можете увидеть 4 или 5 лиц с парой глаз, но с целью этого испытания мы наблюдаем за штампом из одной точки.
Правила:
- Ваша заявка может принять входной список:
- Не пусто
- Содержит только те значения, которые удовлетворяют
1 ≤ n ≤ 6
. - Не содержит повторяющихся элементов.
- Вы не можете предполагать, что вход отсортирован.
- Ваше представление должно вывести истинное / ложное значение : правда - это то, что лица могут быть видны одновременно, иначе ложь.
- Это код-гольф , поэтому выигрывает самый короткий ответ (в байтах)!
- Стандартные лазейки по умолчанию запрещены.
Тестовые случаи
Truthy:
[6] (One face)
[6, 2] (Share a side)
[1, 3] (Share a side)
[2, 1, 3] (Share a vertex)
[3, 2, 6] (Share a vertex)
Falsy:
[1, 6] (1 and 6 are opposite)
[5, 4, 2] (2 and 5 are opposite)
[3, 1, 4] (3 and 4 are opposite)
[5, 4, 6, 2] (Cannot see 4 faces)
[1, 2, 3, 4, 5, 6] (Cannot see 6 faces)
code-golf
decision-problem
FlipTack
источник
источник
Ответы:
Python 2 , 35 байт
Попробуйте онлайн!
источник
JavaScript (ES6),
38 34 30 2928 байтПринимает ввод как любое количество отдельных параметров. Возвращает
0
или1
.Контрольные примеры
Показать фрагмент кода
Как?
Ниже приведены упрощенные версии основного выражения в соответствии с количеством предоставленных параметров, неопределенные переменные приводятся к 0 или false :
NB : порядок (a, b, c) не имеет значения, потому что они всегда XOR вместе.
Самый сложный случай - третий. Вот таблица, показывающая все возможные комбинации:
Чередующийся версия №1, 32 байта
Принимает ввод в виде массива. Возвращает логическое значение.
Контрольные примеры
Показать фрагмент кода
Чередующийся версия № 2, Chrome / Firefox, 34 байта
Этот злоупотребляет методами сортировки Chrome и Firefox. Это не работает с Edge.
Принимает ввод в виде массива. Возвращает
0
или1
.Контрольные примеры
Показать фрагмент кода
источник
Haskell , 24 байта
-3 байта благодаря H.PWiz.
Попробуйте онлайн!
объяснение
источник
APL (Дьялог) , 7 байт
Попробуйте онлайн!
∘.+⍨
- таблица сложений (каждый элемент с каждым элементом)7∊
- 7 существует?~
- отрицатьAPL (Дьялог) , 7 байт
Попробуйте онлайн!
7-⊢
- вычесть каждый элемент из 7⊢∩
- пересекаются с исходным массивом⍬≡
- пусто?источник
R , 27 байт
спасибо Грегору за исправление ошибки
Попробуйте онлайн!
Порт Часов Брауна ответ . Наличие векторизованных операций помогает сделать это намного короче в R.
источник
(7-d)
, другие мудрыеd%in%d
имеют приоритет.Mathematica, 20 байтов
является\[Function]
-12 байт от Мартина Эндера
-7 байт от Миши Лаврова
Попробуйте онлайн!
источник
Haskell , 26 байтов
Попробуйте онлайн!
источник
Pyth , 5 байт
Попробуй это здесь.
источник
На самом деле 8 байтов
Попробуйте онлайн! (запускает все тесты)
Объяснение:
источник
Шелуха , 5 байт
Попробуйте онлайн!
объяснение
источник
Сетчатка ,
2120 байтПопробуйте онлайн! Ссылка включает в себя тестовые случаи. Редактировать: 1 байт сохранен благодаря @MartinEnder. Объяснение:
Сортировка ввода.
Проверьте наличие пары противоположных сторон (3 и 4 сортируют рядом друг с другом). Возвращает 1 для недействительного кубика или 0 для правильного.
Логически отрицать результат.
источник
Желе , 5 байт
Попробуйте онлайн!
Порт Часа Брауна ответ .
объяснение
источник
Алиса , 18 байт
Попробуйте онлайн!
Печать
Jabberwocky
для действительных входных данных и ничего другого.объяснение
Развернув зигзагообразный поток управления, программа действительно просто:
источник
Pyth , 5 байт
Тестирование.
Исаак сохранил байт!
источник
Рубин ,
36 31 2423 байтаПопробуйте онлайн!
Это было так просто, я все время искал решение не той проблемы.
источник
05AB1E , 5 байтов
Попробуйте онлайн!
объяснение
Один из нескольких способов сделать это в 5 байтов в 05AB1E
источник
Perl 5 , 51 + 1 (
-a
) = 52 байтаПопробуйте онлайн!
источник
3 1 4
дает правду, а как насчетsay 1>grep{$x=$_;grep$_+$x==7,@F}@F
Сетчатка , 20 байт
Попробуйте онлайн!
Альтернатива подходу Нейла.
объяснение
Включите
6
,5
,4
в1
,2
,3
соответственно.Попробуйте найти повторяющиеся символы и посчитайте количество совпадений.
Убедитесь, что результат был нулевым (фактически логическое отрицание).
источник
Java (OpenJDK 8) , 43 байта
Попробуйте онлайн!
источник
GNU sed ,
3722 + 1 = 23 байта+1 байт за
-r
флаг. Вводит в виде цифр; печатает ввод для правдивых и0
ложных.-10 байт благодаря @MartinEnder.
Попробуйте онлайн!
объяснение
Похоже на ответ Алисы @ MartinEnder .
источник
Perl 6 , 18 байт
Попробуйте онлайн!
1 & 6 | 2 & 5 | 3 & 4
является соединением, состоящим из чисел 1 и 6, ИЛИ чисел 2 и 5, ИЛИ чисел 3 и 4. Это соединение является элементом (∈
) списка ввода,*
если оно содержит 1 и 6, или 2 и 5, или 3 и 4. Затем этот результат отменяется (!
), чтобы получить требуемое логическое значение.источник
Haskell,
46 4137 байтПринимает декартово произведение списка с собой, затем проверяет, все ли результирующие списки не суммируются с 7. (Если любой из них суммируется с 7, будут видны противоположные грани, и «все нет» короче, чем «нет» любой делает ".)
источник
J , 12 байт
Это почти то же самое, что и первое решение APL от Uriel.
Попробуйте онлайн!
источник
IBM / Lotus Notes Formula, 7 байтов
Принимает данные из многозначного числового поля i.
Рекурсивно вычитает каждое значение i из 7 и проверяет, находится ли оно в исходном списке. ! изменяет 1, если оно равно 0 (не все лица видны).
Тестовые случаи (нет TIO для формулы Notes)
источник
Чисто , 49 байт
Попробуйте онлайн!
источник
Swift , 46 байт
Принимает ввод как
[Int]
(целочисленный массив) и возвращаетBool
(логическое).Краткое объяснение (без гольфа)
источник
Clojure ,
898072 байта-9 байт, потому что я понял, что использование
reduced
ненужно-8 байт, переходя от использования
reduce
к использованиюsome
Я попытался написать это, не обращая внимания ни на какие хитрости, которые используют другие ответы. Возможно, я смогу улучшить это позже.
Возвращает
true
для истинных случаев,false
если какие-либо стороны составляют 7, иnil
если число сторон недопустимо.источник