Su desafío es escribir un programa que muestre el color de un cuadrado dado del tablero de ajedrez. Así es como se ve un tablero de ajedrez:
Puedes ver que el cuadrado a1 es oscuro y h1 es un cuadrado claro. Su programa necesita salida dark
o light
, cuando se le da un cuadrado. Algunos ejemplos:
STDIN: b1
STDOUT: light
STDIN: g6
STDOUT: light
STDIN: d4
STDOUT: dark
Las normas:
- Debe proporcionar un programa completo que utilice STDIN y STDOUT para generar
dark
olight
. - Suponga que la entrada siempre es válida (
[a-h][1-8]
) - Este es el código de golf , por lo que gana la menor cantidad de bytes.
Marcador
var QUESTION_ID=63772,OVERRIDE_USER=8478;function answersUrl(e){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"http://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>
Respuestas:
GS2 ,
1715 bytesEl código fuente usa la codificación CP437 . Pruébalo en línea!
Verificación
Cómo funciona
fuente
Python 2,
4138 bytes3 bytes gracias a Mego por el entrelazado de cadenas
Toma entrada como
"g6"
. Eso es claro y oscuro entrelazado.fuente
int(input(),35)
es la parte brillante. Pensé en el entrelazado de cadenas, pero su método de entrada guarda la mayoría de los bytes.Hexagonía ,
3432 bytesDesplegado y con rutas de ejecución anotadas:
Diagrama generado con el sorprendente HexagonyColorer de Timwi .
La ruta púrpura es la ruta inicial que lee dos caracteres, calcula su diferencia y toma el módulo 2.
<
Luego actúa como una rama, donde se1
imprime la ruta gris oscuro (resultado )dark
y se imprime la ruta gris claro (resultado0
)light
.En cuanto a cómo calculo la diferencia y el módulo, aquí hay un diagrama de la cuadrícula de memoria (con valores tomados para la entrada
a1
):Diagrama generado con el IDE esotérico aún más sorprendente de Timwi (que tiene un depurador visual para Hexagony).
El puntero de memoria comienza en la fila etiquetada en el borde , donde leemos el carácter.
}
se mueve al borde etiquetado como col , donde leemos el dígito."
se mueve al borde etiquetado como diff donde-
calcula la diferencia de los dos.'
se mueve a la celda sin marcar donde colocamos el2
, y se{=
mueve a la celda etiquetada como mod donde calculamos el módulo%
.Esto podría ser golfable por unos pocos bytes reutilizando algunos de los
;
, pero dudo que se pueda jugar mucho, ciertamente no hasta la longitud lateral 3.fuente
CJam, 18 bytes
Demostración en línea
Disección
fuente
:-)
:^)
sed, 37
Explicación
s/[1357aceg]//g
elimina todas las coordenadas indexadas impares. El búfer de patrón resultante tiene una longitud de 1 para "claro" o una longitud de 0 o 2 para "oscuro"./^.$/
coincide con los patrones de 1 longitud,c
cuelga el patrón para "iluminar" yq
uits. De lo contrario, el patrón sec
cuelga a "oscuro".fuente
q
es redundante, y puede verificar la oscuridad primero con/../
, tio.run/##K05N@f@/WD/a0NjUPDE5NT1WXz@dS19PTz85JbEomys5JzM9o@T//…Pyth, 18 bytes
Interprete la entrada como un número base 35, corte
lightdark
por la mitad, imprima.fuente
ShadyAsFuck, 91 bytes / BrainFuck, 181 bytes
Mi primer programa BrainFuck real, gracias a Mego por la ayuda y por señalarme al archivo de algoritmos. (Eso significa que realmente no lo hice por mi cuenta, sino que copié algunos algoritmos existentes. Todavía una experiencia =)
Esta es, por supuesto, la traducción de mis respuestas brainfuck:
Desarrollado con este intérprete / depurador .
Robé dos fragmentos de código para
divmod
yif/else
desde aquí. (¡Gracias a @Mego!)Ahora tenemos la configuración de celdas
>sum 2
, ahora realizamos el algoritmo divmod:La salida del divmod se ve así,
0 d-n%d >n%d n/d
pero también ponemos a cerod-n%d
la siguiente celda:Rellene una celda hasta el valor
100
para una salida más fácil:Ahora la configuración es
>cond 0 100
y para aplicar elif/else
algoritmo necesitamos dos variables temporales, así que elegimos la configuracióntemp0 >c temp1 100
fuente
Python 2, 45 bytes
Toma entrada como
"a1"
. Pruébalo en líneafuente
"ldiagrhgt"[expression::2]
debería funcionar mientras se guarda un byte o dosEn serio , 19 bytes
Toma entrada como
"a1"
Pruébelo en línea (deberá ingresar manualmente la entrada; a los enlaces permanentes no les gustan las comillas)
fuente
Código de máquina de Turing, 235 bytes
Usando la sintaxis de la tabla de reglas definida aquí.
fuente
JavaScript (ES6), 45 bytes
fuente
TI-BASIC, 66 bytes
Probado en una calculadora TI-84 +.
Aquí hay una variación más interesante en la tercera línea, que lamentablemente es exactamente del mismo tamaño:
Uno pensaría que TI-BASIC sería decente en este desafío, ya que involucra el módulo 2. No lo es; Estas soluciones parecen ser las más cortas posibles.
Gastamos muchos bytes para obtener ambos caracteres en la cadena, pero lo que realmente cuesta son las trece letras minúsculas de dos bytes.
fuente
Befunge-93 ,
39373331 bytesTodo el crédito a Linus que sugirió esta solución de 31 bytes:
Pruébelo con este intérprete .
Explicación
Al
<
principio, envía el puntero de instrucciones a la izquierda, donde se ajusta a la derecha. Luego lee dos caracteres de la entrada como ASCII, los resta y hace un módulo por 2. Comoa
y1
son ambos impares (en términos de código ASCII), esto funciona. Elv
vuelve a dirigir el puntero de instrucción a la baja ...... en el
_
, que envía el puntero de instrucciones a la izquierda si la parte superior de la pila es 0 y a la derecha de lo contrario. Los caracteres de "claro" u "oscuro", respectivamente, se introducen en la pila en orden inverso. Ambas rutas golpean^
a la izquierda, lo que envía el puntero de instrucciones hacia arriba ...... al segmento de salida.
:
duplica la parte superior de la pila,#
salta sobre,
y hacia el_
, lo que envía el puntero de instrucciones a la derecha si la parte superior de la pila es 0 y se deja de lo contrario. Cuando la pila está vacía, la parte superior de la pila (después:
) es 0, por lo que el puntero de instrucción golpea el@
que detiene la ejecución. De lo contrario, golpea el,
, que genera la parte superior de la pila como un personaje, y luego lo#
salta sobre:
y sobre el>
, lo que inicia el proceso nuevamente.fuente
rad"v>"k
sin espacio?dar k
". Pruébelo en el intérprete en línea vinculado.<>:#,_@ v%2-~~\n"^"light"_"krad
, arregla la nueva línea.Japt ,
2322 bytesJapt es una versión abreviada de Ja vaScri pt . Interprete
Cómo funciona
Usando la nueva versión 0.1.3 (lanzada el 22 de noviembre), esto se convierte en 17 bytes , más corto que todos menos GS2:
O, alternativamente, una fórmula mágica: (26 bytes)
fuente
Java,
157127124 bytesfuente
interface i{static void main
ya que todo en una interfaz es público por defectoTeaScript , 23 bytes
Lamentablemente las cuerdas
dark
ylight
no se pueden comprimir.fuente
Ruby,
tachado 4436 bytesfuente
puts
con$><<
(sin espacio).puts
parap
C, 55 bytes
Pruébalo en línea
Gracias DigitalTrauma por muchos consejos de golf.
fuente
(
despuésputs
s;main(){puts(strtol(gets(&s),0,19)&1?"light":"dark");}
. Asume que el ancho entero es lo suficientemente grande como para contener 3 caracteres de cadena. También debería poder hacerlomain(s){puts(strtol(gets(&s),0,19)&1?"light":"dark");}
por 54, aunque por alguna razón gets () está devolviendo la basuras
si no es global, por lo que se produce un defecto.BotEngine ,
16514x11 = 154Aquí está con los diferentes segmentos de ruta resaltados:
(Los caracteres que no están en el espacio no resaltados sirven como argumentos para las instrucciones
e
yS
, cada una de estas instrucciones usa el símbolo a la izquierda (en relación con la dirección de desplazamiento del bot) como argumento)fuente
𝔼𝕊𝕄𝕚𝕟, 26 caracteres / 34 bytes
Try it here (Firefox only).
fuente
C, 49 bytes
fuente
gets(&c)%256+c/256
?gets(&c)
. He actualizado mi presentación en consecuencia.Clojure, 63 bytes
Ahorro unos dignos 2 bytes citando "claro" y "oscuro" con una comilla simple para que Clojure lo tome como un literal, en lugar de envolver cada palabra entre comillas. También guardo algunos bytes usando pr en lugar de println.
Alguna información sobre citas en Clojure
fuente
Minkolang 0.12 ,
2824 bytesPruébalo aquí
Explicación
fuente
C, 46 bytes
Espera un entorno donde
int
s se almacenan little-endian, y son al menos dos bytes.Explicación
c
es decirargc
, inicialmente contiene01 00 00 00
.gets
leerá dos caracteres, digaa (0x61)
y1 (0x31)
, y los almacenarác
, que ahora esrepresentando el número 0x3161, o 12641.
Esencialmente, en este problema, dado
c = x + 256*y
, queremos calcular(x + y) mod 2
e imprimir una cadena en consecuencia. Para hacer esto, podría haber escritoc % 255 % 2
, como entoncesSin embargo,
37
también funciona:x
está en el rango 49-57 inclusive (dígitos 1-8), entoncesx % 37 == x - 37
.y
está en el rango 97-104 inclusive (minúscula ah), entoncesy % 37 == y - 74
.Esto significa que podemos simplificar a
y simplemente voltee las cuerdas para corregir la paridad.
fuente
Haz , 127 bytes
Una explicación Azul claro: lea un carácter desde la entrada en el haz, guarde el valor del haz en la tienda, lea un carácter desde la entrada en el haz.
Azul oscuro: agrega la tienda a la viga disminuyendo la tienda a 0 mientras incrementa la viga
Verde claro: una construcción de prueba incluso impar. El bucle saldrá hacia la izquierda si el haz es par o hacia la derecha si es impar.
Verde oscuro: salidas oscuras
Tan - Emite luz
fuente
O ,
2217 bytesEsto hace lo que debe hacer, sin beneficios adicionales.
fuente
Laberinto ,
48464542 bytesGracias a Sp3000 por guardar dos bytes.
Pruébalo en línea!
Explicación
El comienzo del código es un callejón sin salida divertido. Recuerde que Labyrinth asume un número infinito de ceros cuando requiere operandos en la parte inferior de la pila. El código comienza uno a la
-
derecha, que intenta restar dos números, por lo que la pila se convierte en:Luego
,
lee el primer personaje,a
diga:El
"
es un no-op, pero también es un callejón sin salida, por lo que el puntero de instrucciones gira y comienza a ir hacia la izquierda. Luego`
lee el otro personaje,2
diga:Esta vez,
-
resta esos dos números:La IP ahora sigue la curva del "corredor". El
#
obtiene la profundidad de la pila, haciendo caso omiso de los ceros implícitas, que convenientemente pasa a ser2
:Y
%
calcula el módulo:En este punto, la IP está en un cruce. Si la parte superior de la pila es cero, se moverá hacia adelante, donde se
100.97.114.107.@
imprimedark
. Pero si la parte superior de la pila no es cero (específicamente,1
), se moverá hacia la derecha, donde se0:::8.5.3.4.116.@
imprimelight
(tenga en cuenta que podemos omitir el inicio1
, porque ya hay una1
en la pila, y podemos guardar en el repetido10
en108
,105
,103
,104
al hacer unas cuantas copias de la10
cuando nos llegar allí).fuente
Matlab, 51 bytes
No creo que esto necesite ninguna explicación =)
fuente
> <> , 31 bytes
Aquí estoy pensando "tiene que haber una mejor manera ..."
fuente
Perl,
2927 bytesEste código requiere el
-p
interruptor, que he contado como 1 byte.Pruébelo en línea en Ideone .
Cómo funciona
Debido al
-p
cambio, Perl lee una línea de entrada y la almacena$_
././
es una expresión regular que coincide con un caracter. Esto tiene dos implicaciones:Como el partido es exitoso,
/./
devuelve 1 .El post-partido (segundo carácter de entrada) se almacena en
$'
.$'+ord
agrega el entero que representa el segundo carácter de entrada al punto de código (ord
) del primer carácter de la variable implícita$_
.&
toma el AND bit a bit del valor de retorno de/./
y la suma$'+ord
, devolviendo 1 es la suma si es impar, 0 si es par.?light:dark
devuelve claro si la expresión anterior devolvió 1 y oscuro de lo contrario.Finalmente
$_=
asigna el resultado$_
, que Perl imprime automáticamente, debido al-p
cambio.fuente