Un dado occidental tradicional es un cubo, en el cual los enteros 1 a 6 están marcados en las caras. Los pares que suman 7 se colocan en caras opuestas.
Como es un cubo, solo podemos ver entre 1 y 3 caras (inclusive) 1 en un momento dado. Las caras opuestas nunca se pueden ver al mismo tiempo.
Su tarea es escribir un programa o función que, dada una lista de enteros que representan lados en un dado, determina si es posible ver estas caras al mismo tiempo.
1 Bien, tal vez puedas ver 4 o 5 caras con un par de ojos, pero a los efectos de este desafío, observamos el dado desde un solo punto.
Reglas:
- Su envío puede asumir la lista de entrada:
- No está vacío
- Solo contiene valores que satisfacen
1 ≤ n ≤ 6
. - No contiene elementos duplicados.
- Es posible que no asumir que la entrada está ordenada.
- Su presentación debe generar un valor de verdad / falsedad : la verdad es que las caras se pueden ver al mismo tiempo, de lo contrario, la falsedad se puede ver.
- Este es el código de golf , por lo que gana la respuesta más corta (en bytes).
- Las lagunas estándar están prohibidas por defecto.
Casos de prueba
Verdad:
[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
fuente
fuente
Respuestas:
Python 2 , 35 bytes
Pruébalo en línea!
fuente
JavaScript (ES6),
38 34 30 2928 bytesToma datos como cualquier número de parámetros separados. Devoluciones
0
o1
.Casos de prueba
Mostrar fragmento de código
¿Cómo?
A continuación se muestran versiones simplificadas de la expresión principal de acuerdo con el número de parámetros proporcionados, las variables indefinidas se convierten en 0 o falsas :
NB : El orden de (a, b, c) no importa porque siempre están XOR'd juntos.
El caso más complicado es el tercero. Aquí hay una tabla que muestra todas las combinaciones posibles:
Alt. versión # 1, 32 bytes
Toma la entrada como una matriz. Devuelve un booleano.
Casos de prueba
Mostrar fragmento de código
Alt. versión # 2, Chrome / Firefox, 34 bytes
Éste abusa de los métodos de clasificación de Chrome y Firefox. No funciona con Edge.
Toma la entrada como una matriz. Devoluciones
0
o1
.Casos de prueba
Mostrar fragmento de código
fuente
Haskell , 24 bytes
-3 bytes gracias a H.PWiz.
Pruébalo en línea!
Explicación
fuente
APL (Dyalog) , 7 bytes
Pruébalo en línea!
∘.+⍨
- tabla de suma (cada elemento con cada elemento)7∊
- 7 existe?~
- negarAPL (Dyalog) , 7 bytes
Pruébalo en línea!
7-⊢
- restar cada elemento de 7⊢∩
- se cruza con la matriz original⍬≡
- vacio?fuente
R , 27 bytes
gracias a Gregor por arreglar un error
Pruébalo en línea!
La respuesta del puerto de Chas Brown . Tener operaciones vectorizadas ayuda a hacer esto mucho más corto en R.
fuente
(7-d)
, de lo contrariod%in%d
tiene prioridad.Mathematica, 20 bytes
El
es\[Function]
-12 bytes de Martin Ender
-7 bytes de Misha Lavrov
Pruébalo en línea!
fuente
Haskell , 26 bytes
Pruébalo en línea!
fuente
Pyth , 5 bytes
Pruébalo aquí
fuente
En realidad , 8 bytes
Pruébalo en línea! (ejecuta todos los casos de prueba)
Explicación:
fuente
Casco , 5 bytes
Pruébalo en línea!
Explicación
fuente
Retina ,
2120 bytesPruébalo en línea! El enlace incluye casos de prueba. Editar: Guardado 1 byte gracias a @MartinEnder. Explicación:
Ordenar la entrada.
Verifique un par de lados opuestos (3 y 4 ordenados uno al lado del otro) Esto devuelve 1 para un dado no válido o 0 para uno válido.
Negar lógicamente el resultado.
fuente
Jalea , 5 bytes
Pruébalo en línea!
La respuesta del puerto de Chas Brown .
Explicación
fuente
Alice , 18 bytes
Pruébalo en línea!
Imprime
Jabberwocky
entradas válidas y nada más.Explicación
Al desplegar el flujo de control en zigzag, el programa es realmente justo:
fuente
Pyth , 5 bytes
Banco de pruebas.
isaacg guardó un byte!
fuente
Ruby ,
36 31 2423 bytesPruébalo en línea!
Era tan simple que buscaba la solución al problema incorrecto todo el tiempo.
fuente
05AB1E , 5 bytes
Pruébalo en línea!
Explicación
Una de varias formas de hacer esto en 5 bytes en 05AB1E
fuente
Perl 5 , 51 + 1 (
-a
) = 52 bytesPruébalo en línea!
fuente
3 1 4
da verdad, ¿qué pasa?say 1>grep{$x=$_;grep$_+$x==7,@F}@F
Retina , 20 bytes
Pruébalo en línea!
Una alternativa al enfoque de Neil.
Explicación
Girar
6
,5
,4
en1
,2
,3
, respectivamente.Intenta encontrar personajes repetidos y cuenta el número de coincidencias.
Asegúrese de que el resultado sea cero (efectivamente, una negación lógica).
fuente
Java (OpenJDK 8) , 43 bytes
Pruébalo en línea!
fuente
GNU sed ,
3722 + 1 = 23 bytes+1 byte para
-r
bandera. Toma la entrada como dígitos; imprime la entrada para verdad y0
para falsedad.-10 bytes gracias a @MartinEnder.
Pruébalo en línea!
Explicación
Similar a la respuesta de Alice de @ MartinEnder .
fuente
Perl 6 , 18 bytes
Pruébalo en línea!
1 & 6 | 2 & 5 | 3 & 4
es una unión que consta de los números 1 y 6, O los números 2 y 5, O los números 3 y 4. Esta unión es un elemento de (∈
) la lista de entrada*
si contiene 1 y 6, o 2 y 5, o 3 y 4. Ese resultado se niega (!
) para obtener el valor booleano requerido.fuente
Haskell,
46 4137 bytesToma el producto cartesiano de la lista consigo mismo, luego verifica si todas las listas resultantes no suman 7. (Si alguna sumara 7, las caras opuestas serían visibles y "no todos" es más corto que "no cualquiera hacer ".)
fuente
J , 12 bytes
Esto es más o menos lo mismo que la primera solución APL de Uriel
Pruébalo en línea!
fuente
Fórmula IBM / Lotus Notes, 7 bytes
Toma datos de un campo de número de valores múltiples i.
Resta recursivamente cada valor de i de 7 y verifica si está en la lista original. ! cambia el 1 si está en 0 (no se pueden ver todas las caras).
Casos de prueba (no hay TIO disponible para Notes Formula)
fuente
Limpio , 49 bytes
Pruébalo en línea!
fuente
Rápido , 46 bytes
Toma la entrada como
[Int]
(matriz entera) y devuelve unBool
(booleano).Explicación corta (sin golf)
fuente
Clojure ,
898072 bytes-9 bytes porque me di cuenta de que el uso de
reduced
es innecesario-8 bytes cambiando de usar
reduce
a usarsome
Traté de escribir esto sin mirar ninguno de los trucos que usan otras respuestas. Tal vez pueda mejorar esto más adelante.
Devuelve
true
para casos verdaderos,false
si alguno de los lados suma 7, ynil
si el número de lados es ilegal.fuente