Esta es la pregunta complementaria para Code Crosswords . Las respuestas de los ladrones van aquí.
Ver ¿Dónde debemos poner ladrones? para meta-info.
fuente
Esta es la pregunta complementaria para Code Crosswords . Las respuestas de los ladrones van aquí.
Ver ¿Dónde debemos poner ladrones? para meta-info.
Tuve que esquivar un poco en 7-Down invocando un comportamiento indefinido. es1024 ha indicado que este uso de UB fue la solución deseada. Sin embargo, funcionará en las computadoras de la mayoría de las personas. Se me ocurrieron varias expresiones que lograron el resultado deseado, como -1 << 30
,, 3 << 30
y 6 << 29
, ~(~0U/4)
pero todas me hicieron imposible obtener 5-Across. Así que usé la propiedad específica de la arquitectura Intel de que solo se usan los 5 bits menos significativos para determinar el tamaño de un desplazamiento a la izquierda. Tenga en cuenta que tiene que ser así ~_
y no ~1
para que la cantidad a cambiar no sea una constante de tiempo de compilación. Probé las expresiones con el siguiente código:
#define T(X) _ = c; _ = X; printf("%d\n", _);
z[4] = {9};
int main(c)
{
int _;
T("01"[0])
T(-8)
T(-2)
T(11<-328111)
T(+2+71)
T(9+0)
T(0**z)
T(5;)
T(0<-000)
T(2+~3)
T(!91)
T(!_)
T(2**z)
T('_T;')
T("11"?5*9:2)
T(15<<9)
T(0+22)
T(-211*0-97;)
T(-17*0)
T(3+0<<~_)
T(8+000)
T(+0)
T(42)
T(+!z)
T(~_)
}
#define T
como un componente necesario para su solución. La pregunta sigue siendo, sin embargo, ¿por qué funciona M-across? ¿La definición de una constante de múltiples caracteres solo concatena los valores de bytes? Si es así, aprendí algo nuevo hoy. :)int
, por lo que puede poner hasta cuatro bytes sin pérdida de información.Professorfish, CJam, 41 darks
(Esta solución en realidad requiere varios espacios, por lo que no es la que el profesorfish estaba buscando).
Eso fue muy divertido. Tenga en cuenta que
#
debajo del6
código es en realidad y no una celda oscura. Veamos esto:A través de
Pista 2:
[[4 3]]
. Este fue uno de los más complicados, porque realmente me quedé atascado en intentarlo4Z]]`
o similar. Resulta que puedes usar el producto cartesianom*
en cosas que no son una matriz, y hará una matriz para ti. Asi que aqui esta:Sugerencia 4:
24717
. En el momento en que llegué a esto, elH
,J
,s
y finales espacio ya estaban en su lugar. ElH
obsequio que probablemente podría reutilizar17
y hacer\
al final. LaJ
empuja una19
y247 == 13 * 19
, por lo:Sugerencia 7:
32
. Hay un montón de maneras de hacer esto:Y5#
,3 2
,ZY
,YZ\
,4(2
,2)2
,'32
. Fui con el último, porque comenzar con un personaje parecía prometedor para 7-down, y resultó ser correcto.Sugerencia 8:
E
. Ya tenía el'd
cuando llegué allí, por lo que fue entre elegir'd1+eu
,'deu1+
o una variante donde usé)
y un espacio en lugar de1+
(para las personas que no son de CJam, esto toma eld
personaje y lo incrementa y mayúscula, en cualquier orden) . Sin embargo,u
en la columna final parecía útil para A-down. Así que elegí el primero de esos. Al final,'d) eu
también habría funcionado.Sugerencia 9:
""
. Bueno, esto tenía que ser "cadena vacía, obtener representación de cadena, presionar un espacio". Pero también necesitaba el 'para la representación de cadenas en 7-down, y un espacio en A-down también parecía útil, así que elegíTenga en cuenta que
]
también podría haber sido uno deLMOQR
.Insinuar B:
"m
. Realmente tuve que encajar con este con el resto, pero había pocos personajes que importaran. Ya tenía el{
y elm
. Entonces, en lugar de usar un bloque, me convertí{
en un personaje, lo descarté y luego presioné los dos caracteres requeridos:Insinuar D:
124
. Resolví este junto con C-down, que fue más fácil con una disminución al final. Entonces presiono un 12, un 5, y decremento lo último:Abajo
Pista 1:
[2 2 2 3]
. Eso parecía demasiado sospechosamente como una factorización principal para que no fuera uno. :)Sugerencia 3:
3010936384
. Factorizar esto demostró que en realidad es 38 6 . La única pregunta era cómo38
cumplir con 2-through. Al final necesitaba un*
tercer lugar, así que doblar19
fue:Sugerencia 5:
2017
. ¿Dos caracteres para un número tan grande? Solo use variables incorporadas de dos dígitos:Sugerencia 6:
"18"
. Creo que solo hay una única forma de hacer esto en 3 caracteres. Use el 18 incorporado, conviértalo en una cadena y luego en su representación de cadena.Sugerencia 7:
' "\"\""
. Probablemente la parte más difícil del rompecabezas. En particular, necesitaba obtener"\"\""
solo tres caracteres. El truco consistía en obtener la representación de cadena de la cadena vacía dos veces. Eso llevó a:LA
+
no es necesario, pero se necesitaba un 8-a través.Sugerencia 8:
!{}
. El bloque debía ir en el código, por lo que solo quedaban dos caracteres!
, lo que significaba usar otro literal:Una alusión:
-3u3
. Con elu
en su lugar desde el 8 al otro lado, comencé a colocar-3
y3
en las esquinas donde ninguna otra pista se preocupaba por ellos. Pero luego necesitaba unm
en la parte inferior. Creo que hay varias maneras de obtener una3
con_m_
, pero la más sencilla estaba tomando la raíz cuadrada de 9:Sugerencia C:
-1
. Ya tenía el decremento allí, así que puse un lugar0
donde a nadie más le importaba:Insinuar E:
Stack: ""
. Bueno, esa fue la más simple. Simplemente llame al depurador:fuente
COTO, Javascript ES4, 37 Darks
5+Math.PI
oMath.PI+5
; pero esto último dejaría que 'M' y 'h' se cruzaran en otras expresiones, parecía poco probable."\x48I"
.xxxa
, evaluando a cero, entonces -a + a? a + -a? 3 + -a?a+-a
se veía mejor ya que me dio lo que parecía un char en una cadena en 1dn.{x:5}xxa'x
. Como el valor devuelto es 5, debe extraerlo del objeto, lo{x:5}['a']
que significa que el carácter final que falta también es un:{a:5}['a']
t={}=51
y funcionó. ¡No sabía eso!5xxax"pac"
=> "2pac". Esto tiene que ser5-a+"pac"
, de alguna manera, por lo que el segundo personaje tiene que ser ''. para el literal de coma flotante.[xx"xxxx]
, devolviendo "90". Entonces, esto tiene que ser una matriz literal con el valor extraído; solo hay espacio para un valor, así que tenemos[xx"xx][0]
. No hay espacio para dos cuerdas allí, pero tampoco"9"+0
o en9+"0"
forma.6<<I
resultó ser la respuesta, dejando +0 para agregar al final.I-I<4
,I-6<4
, etc.)-x..]xxx4
. El "..." me arrojó: solo hay un par de formas en que puede ser una sintaxis legal y es por eso que pregunté si ES4 es lo que se pretendía: ¿era esta una característica extraña de esa especificación abandonada? Pero luego vi que se trataba de un arenque rojo;-""
es NaN, así que-"..]"xx4
debe ser lo que hay allí: una comparación con NaN, devolviendo falso; '==' servirá, pero necesita mirar la última respuesta para confirmar ...=-10
. Para ser sincero, también miré la versión anterior de 9dn, y me di cuenta de que debe ser algo=top
(para recuperar una ventana). La variable asignada a podría ser ao I, no importa.Rompecabezas complicado!
fuente
rompecabezas de Python de grc
Para todas las largas expresiones de punto flotante, hice un programa en C ++ para generar expresiones matemáticas de Python por la fuerza y las evalúa. Se supone que todos los números son de coma flotante y solo admite operadores +, -, *, /, //, ** y ~. Lo usé para obtener cada pista de más de 5 caracteres, excepto
a**9*27%b
el hash. Con 6 o menos espacios en blanco, termina en un par de segundos, mientras que hay un poco de espera para 7.fuente
Solución al rompecabezas MATLAB de COTO
Supongo que jugué golf bastante bien, ya que hay 14 espacios.
Este script de prueba:
produce el siguiente resultado:
fuente