Imprimir "N NE E SE S SW W NW"


47

Esto parece casi trivial, pero dado que después de un esfuerzo no pude superar la solución literal en J, pensé que podría ser un desafío decente (aunque, para ser claros, este no es un desafío específico de J).

El título lo dice todo. Simplemente necesita escribir un programa o función (sin argumentos) que devuelva o imprima:

N NE E SE S SW W NW

Puede usar nuevas líneas en lugar de espacios.

Una función sin argumentos que devuelve una matriz de cadenas como

['N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW']

También es aceptable.

Las letras pueden ser mayúsculas o minúsculas, pero no pueden mezclarse.


99
Quizás permitirles que salgan en cualquier orden sería un poco más interesante
Jo King

3
@JoKing Claro, lo eliminaré. Honestamente, no esperaba que nadie enviara respuestas que usaran el valor literal completo, eso no está en el espíritu de la pregunta. Como afirmo, surgió porque no pude superar el literal en J, a pesar de que la cadena tiene una regularidad y estructura de algún tipo. El punto es explotar esa regularidad para vencer a una respuesta literal. Malo para mí por no ser más explícito. Permitirles cualquier orden también lo derrota, así que no quiero hacer ese cambio.
Jonás

3
@UnrelatedString La idea más prometedora que he tenido es tener en cuenta que las direcciones se corresponden con i elevado a la potencias 0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5. Desafortunadamente, el código J requerido para luego mapear esos resultados en letras terminó siendo más costoso que un literal.
Jonás

1
Ah, inteligente! Me pregunto si el mapeo podría funcionar mejor para los enteros gaussianos, 1, 1+i, i, -1+i, -1, -1-i, -i, 1-ipor lo que tienes una parte real o imaginaria por dirección cardinal en lugar de dos. Sin embargo, probablemente sea más difícil generarlos, a menos que haya alguna forma de redondear esos poderes de i lejos de 0. No sé lo fácil o difícil que sería en J, pero es una idea.
Cadena no relacionada

3
Parece que las entradas también deberían mostrar la ingenua versión de "echo this string" en su idioma para comparación, y juzgando que se debe hacer con el% acortado.
Dewi Morgan

Respuestas:


18

Lienzo , 12 bytes.

>X½+T)AuS{⁹‟

Pruébalo aquí!

La cuerda, simplemente comprimida.


2
¿Puedes explicar cómo funciona esto con un poco más de detalle?
Dillanm

2
@Dillanm no hay mucho más que decir: Canvas tiene un compresor incorporado (debe ser accesible con ctrl + o → cadena de compresión) que, aquí, simplemente almacena los caracteres necesarios ( "NESW ") y luego en base-5 almacena al individuo caracteres.
dzaima

56

bash (24 bytes)

usando la expansión de la llave

echo N {N,,S}E S {S,,N}W

tiene la misma longitud que la codificación rígida

echo N NE E SE S SW W NW

sin embargo, se vuelve más interesante al generar más puntos de la brújula

echo N NNE NE ENE E ESE SE SSE S SSW SW WSW W WNW NW NNW

expansión de llaves

echo N {{N,,E}N,,{E,,S}S}E S {{S,,W}S,,{W,,N}N}W

de lo contrario, si se pudiera cambiar el orden (17 bytes), el truco es que sin comillas, el parámetro de cadena vacía desaparece

echo {N,,S}{W,,E}

1
¡Eso es interesante, no sabía que podría tener una posición vacía es la expresión de la llave!
falla

1
@flawr Útil al hacer chrooting:mount -t proc{,,}
gronostaj

77
Ocp file{,.bak}
Oliphaunt

43

Mornington Crescent , 4395 3823 bytes

Take Northern Line to Bank
Take District Line to Parsons Green
Take District Line to Paddington
Take Bakerloo Line to North Wembley
Take Bakerloo Line to Charing Cross
Take Bakerloo Line to Charing Cross
Take Bakerloo Line to Charing Cross
Take Bakerloo Line to Charing Cross
Take Northern Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Barbican
Take Circle Line to Bank
Take Circle Line to Aldgate
Take Circle Line to Embankment
Take Bakerloo Line to Charing Cross
Take Bakerloo Line to Charing Cross
Take Bakerloo Line to Charing Cross
Take Bakerloo Line to Charing Cross
Take Northern Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Bayswater
Take Circle Line to Hammersmith
Take Circle Line to Baker Street
Take Circle Line to Bank
Take Circle Line to Embankment
Take Northern Line to Stockwell
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Farringdon
Take Circle Line to Hammersmith
Take Circle Line to Blackfriars
Take Circle Line to Bank
Take Circle Line to Moorgate
Take Northern Line to Waterloo
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Westminster
Take Circle Line to Hammersmith
Take Circle Line to Tower Hill
Take Circle Line to Bank
Take Circle Line to Edgware Road
Take Circle Line to Liverpool Street
Take Central Line to Mile End
Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Circle Line to Victoria
Take District Line to Mile End
Take District Line to Bank
Take Circle Line to Bank
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Barbican
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Bayswater
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Baker Street
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Farringdon
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Embankment
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Blackfriars
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Moorgate
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Westminster
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Tower Hill
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Aldgate
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Edgware Road
Take Circle Line to Paddington
Take Circle Line to Bank
Take Circle Line to Bank
Take Northern Line to Mornington Crescent

Pruébalo en línea!

Dado que es un poco esperable que leas todo eso, permíteme darte una visión general rápida de mi enfoque. La idea principal es almacenar 3 copias de los caracteres N, E, S, Wen varias estaciones de la línea Circle, a través del Banco - Hammersmith. Estos personajes se construyen desde el comienzo del nombre de una estación en Charing Cross. Luego, construya   desde el medio del nombre de una estación bien elegida usando Mile End y Charing Cross, y almacénelo en el Banco para que pueda recogerse en Hammersmith en la concatenación. Finalmente, concatene los personajes uno por uno en Paddington, copiándolos nuevamente a través de Bank - Hammersmith si es necesario reutilizarlos más tarde.


Creo que la solución actual es bastante óptima con esta estrategia, al menos en términos de número de estaciones visitadas: solo 2 veces usé una estación solo para el tránsito:

  1. llegar a Seven Sisters (vía la estación Victoria)
  2. y para volver a Mornington Crescent (a través del Banco).

Todas las demás visitas a la estación fueron, si no olvidé una, ya sea almacenar / recuperar algo útil o (parte de) usar la capacidad de la estación.

En cuanto a las longitudes de línea, he tratado de elegir los nombres más cortos en Circle Line, pero puede haber una mejora menor allí. Es posible que almacenar algo en el Distrito pueda reducir algunos bytes.


Dos ideas para jugar golf un poco más: 1. tome 'NE', 'SW', 'NW', 'SE' de una sola estación (usando, por ejemplo Ne, asden, Swiss Cottage, Acton To wny Mansion Hou se) 2. Intente explotar el Paddington hecho de que hace más fácil concatenar `` W en lugar de W . Esto requiere un poco más de gastos generales para 'actualizar' Paddington, por lo que no puede ganar nada.
Lagarto discreto

44
¿Utiliza esto las reglas de bucle de Dollis Hill? Si es así, creo que se puede mejorar mediante el uso de una parábola de Argyle Street, y tal vez incluso una versión ligeramente modificada del protocolo Webb-Ellis.
Richard Ward,


24

brainfuck , 142 139 131 119 bytes

++++++++++[>+++>+++++++>++++++++>+++++++++<<<<-]>>>--.<<++.>>.<-.<.>.<.>>+++++.<.<.>>.<<.>>.>---.<<<.>>>.<<<.>>-----.>.

Pruébalo en línea!

Simplemente realice un bucle 10 veces para llenar las celdas con 30, 70, 80 y 90, luego retroceda y avance y ajuste los valores de las celdas para imprimir los caracteres requeridos. No muy diferente del estándar "¡Hola, mundo!".


77
Jajaja, nunca he entendido cómo alguien puede "jugar al golf" estos idiomas oscuros. Es bastante difícil entender lo que hace el código en primer lugar (se dice que proviene del fondo C ++ / Java)
mackycheese21

10
@ mackycheese21 ¿qué? ¿C ++ no te enseñó a amar la manipulación de punteros?
candied_orange

12
brainfuck puede ser esotérico, pero seguro que no lo llamaría oscuro
Cadena no relacionada

3
@candied_orange C ++ me enseñó a odiar la manipulación del puntero y huir cada vez que alguien mencionaba std :: :)
mackycheese21

1
@UnrelatedString oscuro, no. Obtuso, sí.
Rico

14

Brain-Flak , 204 bytes

((((((((((((((((()()()){}()){}){}())){}{}))<([([][]){}()]{})(([][]){}[])>)<([][]
()())>)[[]]()())<([]()()())>)<((([]())[][]){}[][()])>)<([][()()])>[[]()])<([][((
)()){}])>)((()()())){}{})<((()()()()()){})>)

Pruébalo en línea!


44
Puntos deducidos por envoltura.
Rico

12

MarioLANG , 249 221 bytes

+
+
+
+
+
+
+
+
+  ((+++++++++)))<
+>==============="
)++++++++)+++((-[!)--.)++.(.---------.).(.).)++.((.).).(.).++++.(.).(.(+++++++++.))
=================#================================================================.

Pruébalo en línea!



10

Fórmula Excel, 59 57 bytes

Lo siguiente debe ingresarse como una fórmula de matriz ( Ctrl+ Shift+ Enter):

=SUBSTITUTE(ADDRESS(1,{14,369,5,499,19,517,23,387},4),1,)

Después de ingresar la fórmula como una fórmula de matriz, resáltela en la barra de fórmulas y evalúela usando F9para devolver el resultado, por ejemplo:

Antes de:
Antes de la evaluación de la fórmula

Después:
Antes de la evaluación de la fórmula

Cómo funciona

La ADDRESSfunción devuelve una cadena que representa una referencia basada en dos parámetros, rowy col. El tercer parámetro controla qué tipo de referencia se devuelve, una referencia absoluta o relativa. Por ejemplo, =ADDRESS(1,2,4)vuelve "B1".

Podemos suministrar una matriz ADDRESSy usarla como una fórmula de matriz para devolver múltiples resultados, por ejemplo, =ADDRESS(1,{1,2,3},4)devoluciones "A1","B1","C1".

Por lo tanto, en mi respuesta, la matriz suministrada ADDRESSson solo los números de columna relacionados con los puntos de brújula requeridos, por ejemplo, la columna 14 es la columna N, la columna 369 es la columna NE.

Sin embargo, no hemos terminado aquí, ya que todas las referencias devueltas tienen la fila incluye, por ejemplo, N1, NE1. Por lo tanto, simplemente usamos SUBSTITUTEpara eliminar el 1de todas las referencias.


1
Sería =IF(1,"N NE E SE S SW W NW")valido?
Restablece a Monica el

3
@quid ¡Sí, de hecho! Sin embargo, estaba buscando una alternativa que no requiriera que la cadena se citara textualmente.
i_saw_drones

¿Como funciona esto?
anatolyg

@anatolyg He agregado una sección de explicación, espero que sea comprensible.
i_saw_drones


7

Carbón , 14 bytes

”{⊟“�_Zn↖⦄RüΦ≦

Pruébalo en línea! El enlace es una versión detallada del código ... que es solo la cadena que se imprimirá, ya que el desverbosificador automático se encarga de la compresión de la cadena.

La impresión de la cadena sin comprimir toma 19 bytes, ya que el carbón imprime ASCII imprimible literalmente. La mejor respuesta algorítmica que pude encontrar lamentablemente toma 20 bytes:

E⁸ΦSNWE›³﹪⁻﹪⁺⁵×⁶μχι⁸

Pruébalo en línea! Salidas que utilizan el formato de matriz (costaría dos bytes unir los elementos en los espacios). Funciona notando que las letras de la cadena SNWEse usan solo cuando el índice externo actual es igual o está a 1 distancia (módulo 8) en cualquier dirección desde el elemento correspondiente de la lista de índices 4,0,6,2.


7

brainfuck , 117 bytes

+++++[>++++++>+>+++>>++++>+++++<<<<<<-]>++[>++>++>+>++>++[<]>-]>>-.>.<.<.>>.<<.>>.>-.<<<.>>.>.<.>.>--.<<.>>.<<.<.>>>.

Pruébalo en línea!

Este código creará primero los caracteres "EN SW" en la memoria y luego se moverá hacia adelante y hacia atrás para imprimirlos. El espacio está en el medio, porque se imprime con mayor frecuencia. N y S y W y E nunca aparecen juntos, por lo que están en lados opuestos de la memoria. Para la optimización, algunos de los decrementos finales ocurren durante la fase de salida.


1
OK, esa es una respuesta genial. Supongo que me ganaste en este. +1 para -1 :-)
ElPedro

1
Por cierto, olvidé decir, bienvenido al sitio de Code Golf. Espero competir con usted en el futuro ☺
ElPedro

1
¡Bienvenidos! Considere agregar una explicación o un enlace a un intérprete en línea para el programa. Ver otras respuestas para ejemplos. Las respuestas breves de solo código tienden a marcarse automáticamente como de baja calidad.
mbomb007

1
Gracias, puedo agregar una explicación de mi código. También intentaré entender cómo funcionan los enlaces en línea.
Helena

1
@Helena Para el enlace, puede consultar el enlace "Pruébelo en línea" en mi respuesta. Si pega su código y lo ejecuta, puede hacer clic en el ícono del enlace y obtener un código de respuesta de golf perfectamente formateado que simplemente puede copiar y pegar aquí. Funciona como magia y admite muchos idiomas. Vale la pena intentarlo.
ElPedro


5

Jalea ,  16  15 bytes

“¤œỵpq⁵’ṃ“NESW 

Un programa completo que imprime el texto.

Pruébalo en línea!


dieciséis...

“¥Þ¡¦¢¬£æ‘ṃ“¡ɱ⁻»

Un enlace niládico que produce una lista de listas de caracteres (minúsculas).

Pruébalo en línea!


Alternativa 15 como un enlace niládica que produce una lista de caracteres (en minúsculas) (con espacios): “¡XÇŀqỵÑ’ṃ“¡⁴ṁ».


5

Commodore BASIC (TheC64Mini, C64, C128, VIC-20, etc.) 28 bytes BASIC tokenizados utilizados

 0 PRINT"N NE E SE S SW W NW

En Commodore BASIC, no necesita las comillas de cierre en PRINT o LETdeclaraciones de ya que el intérprete lo cerrará automáticamente, esto ahorra un token BASIC.

Alternativamente, uno puede simplemente usar el modo directo de la siguiente manera:

Commodore BASIC 23 personajes PETSCII (+ RETURNpara ejecutar)

?"N NE E SE S SW W NW

No estoy seguro de cómo contar el número de bytes utilizados en esta instancia según el intérprete ?y PRINTusar el mismo número de bytes, y no hay ningún programa almacenado en la memoria.


1
PRINTtambién puede reemplazarse ?, ahorrando cuatro bytes.
James

1
No, eso no es verdad; PRINTy ?usa la misma cantidad de tokens BASIC. No cuento los caracteres PETSCII, ya que no es muy representativo de la cantidad de memoria disponible que está utilizando el intérprete.
Shaun Bebbers

1
Después de todos estos años, todavía estoy aprendiendo cosas nuevas sobre el comodoro. Gracias Shaun! c64-wiki.com/wiki/BASIC_token
James

Aquí hay uno que hice antes (para el C64) -> pastebin.com/NMYzTC7k
Shaun Bebbers

4

Japt , 16 bytes

Devuelve una matriz de cadenas en minúsculas. La cadena comprimida era de 18 bytes, pero se usaba acomo delimitador en su lugar y luego la división en eso resultó más corta.

`nÂà!Z°°nw`qa 

Pruébelo : el pie de página formatea la salida.


4

Deadfish ~ , 138 bytes

{{i}i}c{{d}}cs{i}c{d}ic{{d}}iisicsic{{d}}iisicisddddddc{d}ddddc{{d}}iisicisddddddc{{iiii}}sicisddddddciiiic{{d}d}icisddc{{d}d}ics{i}c{i}dc

Pruébalo en línea!

Por lo tanto, la salida en minúsculas con nuevas líneas es mejor que la predeterminada (mayúsculas con espacios).

Este código fue generado por mi optimizador, escrito en C ++ (¡gracias a squid por otra idea de optimización!):

#include <iostream>
#include <string>
#include <queue>
#include <vector>


int eval(const std::string& actions, int result)
{
    int mult = 1;

    for (int i = 0; i < (int)actions.length(); ++i)
    {
        switch (actions[i])
        {
        case 's':
            result *= result;
            if (result == 256)
                result = 0;
            break;

        case '{':
            mult *= 10;
            break;

        case '}':
            mult /= 10;
            break;

        case 'd':
            if (result > 256 && result - mult <= 256)
                result = (result - mult) % 256;
            else
                result -= mult;
            break;

        case 'i':
            if (result < 256 && result + mult >= 256)
                result = (result + mult) % 256;
            else
                result += mult;
            break;
        }
    }

    return result;
}

struct worse
{
    bool operator()(const std::string& a1, const std::string& a2)
    {
        return a1.length() > a2.length();
    }
};

std::string BestStr(int accumulator, int target)
{
    std::priority_queue<std::string, std::vector<std::string>, worse> actions;
    actions.push(std::string(""));
    while (true)
    {
        std::string a = actions.top();
        int new_acc = eval(a, accumulator);
        if (new_acc == target)
            return a + "c";

        actions.pop();

        int last_braces = 0;
        int i = a.length() - 1;
        while (i >= 0 && a[i] == '}' && last_braces < 2)
        {
            ++last_braces;
            --i;
        }
        bool is_last_i = (i >= 0 && a[i] == 'i');
        bool is_last_d = (i >= 0 && a[i] == 'd');
        bool may_add_braces = (i < 0 || a[i] == 's');
        bool may_add_c = (new_acc > 1 && new_acc < 30);

        if (may_add_c)
        {
            actions.push(a + "s");
        }
        if (may_add_braces)
        {
            actions.push(a + "{{}}");
            actions.push(a + "{}");
        }
        for (int braces_back = 0; braces_back <= last_braces; ++braces_back)
        {
            for (int c = 'd'; c <= 'i'; c += 'i' - 'd')
            {
                if ((!is_last_i || c == 'i') &&
                    (!is_last_d || c == 'd') ||
                    braces_back == 0)
                {
                    std::string new_actions = a;
                    new_actions.insert(new_actions.length() - braces_back, 1, (char)c);
                    actions.push(new_actions);
                }
            }
        }
    }
}

std::string DeadfishConvert(std::string s)
{
    std::string result;
    int accumulator = 0;

    for (int c: s)
    {
        result += BestStr(accumulator, c);
        accumulator = c;
    }
    return result;
}

int main()
{
    std::string s1 = DeadfishConvert("N NE E SE S SW W NW");
    std::cout << s1 << '\n';
    std::cout << s1.length() << '\n' << '\n';
    std::string s2 = DeadfishConvert("n ne e se s sw w nw");
    std::cout << s2 << '\n';
    std::cout << s2.length() << '\n' << '\n';
    std::string s3 = DeadfishConvert("N\nNE\nE\nSE\nS\nSW\nW\nNW");
    std::cout << s3 << '\n';
    std::cout << s3.length() << '\n' << '\n';
    std::string s4 = DeadfishConvert("n\nne\ne\nse\ns\nsw\nw\nnw");
    std::cout << s4 << '\n';
    std::cout << s4.length() << '\n' << '\n';
}


4

Archivo por lotes, 19 bytes

La pregunta nunca indicó que tenía que generar N NE E SE S SW W NWy nada más, ni que no podía salir debido a un error después de hacerlo, este código solo arroja un error pero no sale debido a él.

N NE E SE S SW W NW

Salida

>N NE E SE S SW W NW
'N' is not recognized as an internal or external command,
operable program or batch file.

Archivo por lotes, 25 bytes

Solo N NE E SE S SW W NWsalida sin errores ni bloqueos.

@echo N NE E SE S SW W NW

Podría guardar un byte reemplazando el CD con solo comillas, como 'N NE E SE S SW W NW'- obtendrá algo como: N NE E SE S SW W NW - command not found
Dewi Morgan

4

Python2, 59 bytes

''.join(' SEWN'[0xe0619042210504>>i*3&7]for i in range(19))

El número mágico son los índices de tres bits unidos en la cadena de caracteres, orden inverso para que podamos comenzar a iterar en el LSB.


Pasé un tiempo tratando de reducir el número mágico, pero la repetición de la cadena de caracteres mediante la multiplicación para permitir índices adicionales no funciona debido a la necesidad de codificar el espacio, lo mejor que obtuve por la superposición de índices en la búsqueda agregó más caracteres al cadena que dígitos eliminados del número mágico (incluyendo un par de desafortunados no importa en el medio):

''.join('WN S ES W xxE '[0x423659711>>i*2&15]for i in range(19))

¿Por qué simplificar cuando se puede complicar? :-)
GB

4

K (ngn / k) , 23 22 bytes

-1 byte gracias a ngn!

"WNES"@5\7108085518230

Pruébalo en línea!

J , 34 30 bytes

echo(#:3510)<;.1'NNEESESSWWNW'

Pruébalo en línea!


Galen, porque J repitiendo el literal sería más corto. Me encantaría ver ese ritmo ... No he logrado hacerlo
Jonás

1
Sí, el eco sería de 4 + 19 bytes. No tengo mejores ideas para hacerlo.
Galen Ivanov

1
para k: si intercambiamos " "<-> "W"( 0<-> 4en la base 5), el espacio estará al final y podemos eliminarlo porque la indexación de cadenas fuera de límites da un espacio de todos modos:"WNES"@5\7108085518230
ngn

@ngn ¡Gracias!
Galen Ivanov

1
@GalenIvanov bueno para bases de datos de alto rendimiento también :) Arthur diseñado k como el lenguaje subyacente para kdb +
NGN


3

Brachylog , 19 bytes

"NNEESESSWWNW"ḍ₄ḍᵐc

Pruébalo en línea!

Salidas como una lista. ḍ₄ḍᵐcahorra dos bytes al escribir siete espacios y hacer que todo el predicado sea literal de cadena, por lo que al menos vincula PHP ...

"NNEESESSWWNW"         The string "NNEESESSWWNW"
              ḍ₄       split into quarters
                 ᵐ     with each quarter
                ḍ      split in half
                  c    and concatenated
                       is the output.

Traté de ser inteligente 3⟦{;"NESW"↺₍h₂a₀ᶠ}ᵐc, pero no podía obtener SE o NW correctamente, y de todos modos es un byte más largo.


3

Espacio en blanco , 151 bytes

[S S S T    T   N
_Push_3_W][S S T    T   T   S N
_Push_-6_N][S S T   T   T   S T S S N
_Push_-52_space][S S S T    T   N
_Push_3_W][S T  S S T   N
_Copy_0-based_1st_(space)][S S S T  T   N
_Push_3_W][S S T    T   N
_Push_-1_S][S T S S T   S N
_Copy_0-based_2nd_(space)][S S T    T   N
_Push_-1_S][S T S S T   N
_Copy_0-based_1st_(space)][S S T    T   T   T   T   N
_Push_-15_E][S S T  T   N
_Push_-1_S][S T S S T   S N
_Copy_0-based_2nd_(space)][S T  S S T   S N
_Copy_0-based_2nd_(E)][S T  S S T   N
_Copy_0-based_1st_(space)][S T  S S T   N
_Copy_0-based_1st_(E)][S S T    T   T   S N
_Push_-6_N][S T S S T   S N
_Copy_0-based_2nd_(space)][S S T    T   T   S N
_Push_-6_N][N
S S N
_Create_Label_LOOP][S S S T S T S T S S N
_Push_84][T S S S _Add][T   N
S S _Print_as_character][N
S N
N
_Jump_to_Label_LOOP]

Se agregaron letras S(espacio), T(tabulación) y N(nueva línea) solo como resaltado.
[..._some_action]agregado solo como explicación.

Pruébelo en línea (solo con espacios en bruto, pestañas y nuevas líneas).

Explicación:

  1. Empuje los valores unicode menos la constante 84 para los caracteres "WN W WS S ES E EN N" en la pila (tenga en cuenta que la cadena se empuja hacia atrás). Además, utilizo algunas copias de los valores previamente introducidos para guardar bytes siempre que sea posible.
  2. Luego comienza un ciclo infinito, que hace lo siguiente:
    1. Agregue la constante 84 al valor Unicode actual
    2. Imprimirlo como personaje en STDOUT

La constante 84es generada por este programa Java que escribí para otro desafío que respondí en Whitespace .


3

MathGolf , 20 17 bytes

ÿnesw▒∙╫m+mÉîÄ╪^─

-3 bytes gracias a @maxb .

Pruébalo en línea.

Explicación:

ÿnesw      # Push 4-char string "nesw"
           #  STACK: "nesw"
          # Split to a list of characters
           #  STACK: ["n","e","s","w"]
          # Triplicate it
           #  STACK: ["n","e","s","w"],["n","e","s","w"],["n","e","s","w"]
          # Rotate the top one once towards the left
           #  STACK: ["n","e","s","w"],["n","e","s","w"],["e","s","w","n"]
 m+        # Append the top two together
           #  STACK: ["n","e","s","w"],["en","se","ws","nw"]
   m       # Map the strings in the top list to:
    ÉîÄ╪   #  Rotate the string the 1-based index amount of times towards the right
           #   STACK: ["n","e","s","w"],["ne","se","sw","nw"]
^          # Zip; creating pairs with the top two lists
           #  STACK: [["n","ne"],["e","se"],["s","sw"],["w","nw"]]
          # Flatten this list
           #  STACK: ["n","ne","e","se","s","sw","w","nw"]
           # (after which the entire stack is output implicitly as result)

1
17 bytes . Este fue un desafío divertido. Lo intenté antes, pero terminé donde lo hiciste. Creo que lo máximo que podría hacer con esto es 1 byte más, pero no pude encontrar una forma más corta.
maxb

@maxb Ah buen enfoque. Debo admitir que esos códigos de tamaño de bloque X ( Éy Äen este caso) todavía me confunden un poco a veces ... A veces no estoy seguro de cuándo debo usar esos bloques de código o no. Tu m+no usa uno por ejemplo. Pero tu Äes un bloque de código de tamaño 1. Intenté mÅî╪todavía ver qué sucedió, por eso ahora entiendo por qué hay un bloque de código de tamaño 1 Äpara empezar. :)) Gracias por los -3 bytes, sin embargo. Todavía hay mucho que aprender que veo.
Kevin Cruijssen

1
Buena explicación! Intenté hacer una solución sin convertirla en una lista de caracteres, pero el comando zip fue un poco inestable. Para los bloques de código, piense en ellos como reemplazos, utilizados en lugar de {}. mÅî╪crea la asignación, pero no tiene un ciclo for dentro de la asignación. Si escribe m{î{╪}}, quizás sea más fácil ver que el código es "map to: loop <index> times, and rotate the string each loop". La razón por la m+que no tiene uno es que ciertos comandos tienen bloques implícitos de 1 byte (mapa, filtro, reducción, etc.), pero îno es un comando destinado a usarse en combinación con un bloque.
maxb

1
@maxb De hecho, sabía que los bloques de código eran una variante más corta {...}, pero olvidé que integer{es un bucle for. :) Ahora îÄ╪tiene mucho más sentido. ¡Gracias por la explicación!
Kevin Cruijssen


2

Semilla , 6014 bytes

27 32429737401852232227804295321578416370544555457622262891879921280324727410131817586348135470079420921373938348260737299348550007805068404867624897650263347568409592608258945989033792510474363164709158118555665232935403908551415888090695760298337219819413274977014408722140235669339108001709528995376914900494019798521214727367535169036319615676199584661126257462974800782884967804763256678000063025237472650538076831876942979826335539886276642624472204985016283691316313249488093825552581263195700506490263014623798470563718844847334940964632636436478404543496272112184140337568637349767918641524452384959486975049813859244670160569884744538279036643294867674161431756929550170395739925307134312406291063668809195567313928307910934660574895433141956111513050736041440669472422865481546405020220238818265794921314653725749392385549924210837964649297239381603259476675148489582680939048820717739905271461370132524025785160026801625672272913416389786086946626728842588663673416395169524016926695769334183833366462685756958054189820999370092892855665559717806826530952610964256124463840218293029538229042911551526509745973128558291005365222643503139067010483637086697955919587162384655443959408291567894061028044826636171014388153130769792397282335858985323269310727311039012381122390183102126191168963870116881629339035600546009305431793687183913979054151312200573069395058914262857368132993952655571167118263728070696377852599343989848263167312887211748226689125561718255196655446099711296568221690530717651328503948183228932786503716890383195810396161663632504174142420921735055441162618914957825032056019218584287089599270312541933094119409995775035365862244691419255488688879630142415739738796957474249592086989231999568273454247198389863139439897248192949030226324637037937607004428557202644332945222019553599908855943840883606735602486216245714280716148378430738983808375466562604692991701163078094015860708365913183037140180020776525026891135163345427911749533164462233906885068864798951466382247930357444595606617682531499045805835102155190109668901179666311163071611393282924908189215675892953256826649762594463293867383921972181952997833560371571545190945543033351108064265894854803319008655145213765667074789305055723258530694850418765677462165413557272747961130459219342146615095862014137406489375157766959799291089215740196734079295172946350338663239451562589633216908805028629767462044463310475859283605554743731396818983359527612902567406307270838160926586311672252276690909354125055468912844343806046309796590149977323343332039095076680537362333773750051043281967620781236684580688649899599894791764969639275247700776637892615729757899608628514791667795106390376246890330575517824338764219021396958188958235055290896924249770944905659304681507478975095888248103169710912376599445302527257479613158446721050489233911736089191439017996962182413511012900366501119556105789078275149705515012300827868862038071066912823449506913958912235923323638505757204526506327010926007595704417253684932596231606733027284263178479840785607928320603259662026791082244015829365605451084366715394628351636563955621161378688550003390556445245074739462307110100863024184316465734324401688465928827408449165190271528329602702373730346394803239394173490819727873116531045433457650881080122796159241596543253982402471104065237941729677594379317274541529006952959000152687275974001138315010176843925599438278290218390644740919129323109582279220437886915496736885058271413958305953151184342725824729076581370881383360210631877985352671536000503948280559301633936877162466145026758809907939645467704805892486147550057845773849575278620555906080753862688722846292689494961297512113753414009189522365247542490200336579292488067953461299023326925661887077747288500270026888774635820948696015812357241781814592351848858954139716506111479475207696790949277211077720834891880913260866501916732427370806066035548982017315826213049658915419681842381914237502216614528174237875875738156132703973666564945026254499265910704148825037630761619650949635972980035630316257135212349181639940504547722767898302879234673272154028964478458469466250102554612059368293497511404163963705442187242769706586819405113285219700159125119338601931670779192478917206878107091618448093140705173062420040261126935373689918208815797991761563304607704283868972915636425613833785564679990574095368828308776724486415005128506687942819070129022911666887363253202695416103545769073021185132010920185208632024811337544715055406031297413168802089421761798020616230024290524096396092608042069087607272534874457093977610919233750725135220581682913316085638068663247820037223692942067994551786014033707387642820855601334002540339334606906772532939337779748305357112540312103757754695577077583846897693527091162962000082213332051059005644562753372638247584982354478224403477604356150912451128591138652721098074872513196253790561736352841309810909110001754673250730698454675988798465247376421075019414107337634079281061629221783859449063069175434073835673063716565555614782886016441814199915418848976070834414782427725187820926042778984081922550398210353288229598805397201850487997254871012213762289412828417039945896819359898337616122446201299182152276549340911589671291124887672310931868023491872685227548726494469798568145715500153324646857181224645073236602344526749192704938665584870007079941922775292601106345725659322322536675461008337648982039319953181733660980694781559207671567197161027796266390879206526082137700937056380629087949633487181507979286568656291044492869916694352395542638882544967807857391058161838343109606346401310155771709714142586733985703451391374159045025205718989407293651441039802247981386993858491342422355232055341447145969376687615001834650283116652856369804298047720786536278306210551862061566639283704928517998916884505819581251906693306116531467413995747910736025576089721150597919824878333808115757216261812226145636769545796913912159437533454858286778214791559458862216426856243544801486923659355580455048265633089421966932180992

Genera el siguiente programa befunge:

"WN W WS S ES E EN N">:#,_@

2

Hodor , 177 bytes

hodor.hod("HoOodoOorhodor  HoOodoOorhodor HooodorrHodor  HooodorrHodor  HODOR?!? HooodorrHodor  HODOR?!?  HODOR?!? Hooodorrhodor  Hooodorrhodor  HoOodoOorhodor Hooodorrhodor ");

Pruébalo en línea!


2

Ensamblaje (x86, Linux), 68 bytes

$ od -x a
0000000 457f 464c 0001 0000 0000 0000 0000 0500
0000020 0002 0003 001b 0500 001b 0500 0004 0000
0000040 13b2 31b9 0000 cd05 2580 0020 0001 cd40
0000060 4e80 4e20 2045 2045 4553 5320 5320 2057
0000100 2057 574e
0000104
$ ./a
N NE E SE S SW W NW$

Fuente:

BITS 32
org 0x05000000
db 127,"ELF"
dd 1,0
dd $$
dw 2,3
dd 0x0500001B,0x0500001B
dd 4
mov dl,19
mov ecx,m
int 128
db 37
dw 32,1
inc eax
int 0x80
m db 'N NE E SE S SW W NW'

¿Código tomado principalmente del más corto ELF para "Hola mundo \ n"?



Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.