Introducción
Su desafío hoy (inspirado en este desafío ) es escribir una serie de fragmentos, funciones o programas completos, cada uno de los cuales emita varios emoticones ascii, sin reutilizar caracteres.
Desafío
La lista de emoticones ascii válidos para este desafío está aquí y en el bloque de código al final de esta publicación.
Cada fragmento debe estar en una línea separada en su envío.
Solo puede usar un idioma para todos los fragmentos.
Cada fragmento debe salir a stdout o devolver una cadena que contenga el emoticón y una nueva línea final opcional, y nada más .
No puede usar ningún personaje más de una vez en todos los fragmentos, sin embargo, usar un personaje varias veces en un solo fragmento está bien.
No puede usar ningún carácter que no esté en la página de códigos de su idioma (o ascii, si su idioma no usa una página de códigos personalizada) en ninguno de los fragmentos. Dicho de otra manera, está restringido a solo caracteres que pueden codificarse en un byte.
Ningún fragmento puede tomar ninguna entrada.
Las lagunas estándar no están permitidas.
Su puntaje es la cantidad de fragmentos únicos que imprimen un emoticón ascii diferente en el archivo de texto anterior.
¡La puntuación más alta gana!
¡Buena suerte!
Emoticones permitidos, separados por espacios:
:-) :) :-] :] :-3 :3 :-> :> 8-) 8) :-} :} :o) :c) :^) =] =) :-D :D 8-D 8D x-D xD X-D XD =D =3 B^D :-)) :-( :( :-c :c :-< :< :-[ :[ :-|| >:[ :{ :@ >:( :'-( :'( :'-) :') D-': D:< D: D8 D; D= DX :-O :O :-o :o :-0 8-0 >:O :-* :* ;-) ;) *-) *) ;-] ;] ;^) :-, ;D :-P :P X-P XP x-p xp :-p :p :-b :b d: =p >:P :-/ :/ :-. >:\ >:/ :\ =/ =\ :L =L :S :-| :| :$ :-X :X :-# :# :-& :& O:-) O:) 0:-3 0:3 0:-) 0:) 0;^) >:-) >:) }:-) }:) 3:-) 3:) >;) |;-) |-O :-J #-) %-) %) :-###.. :###.. <:-| ',:-| ',:-l <_< >_>
EDITAR: Disculpas, había un personaje Unicode en uno de los emoticones que me perdí. Desde entonces he eliminado el emoticon que lo contiene. Espero que no cause demasiados inconvenientes.
fuente
Respuestas:
Lenguage , 131
He puesto todos los emoticones que estoy representando en el formato
<emoticon> <byte> <length>
donde el programa se<byte>
repite varias<length>
veces.fuente
×
!Haskell , 3
Aquí hay un comienzo en una solución haskell.
xD
Pruébalo en línea!
Esta es solo una cadena normal, usa los caracteres
"xD
:]
Pruébalo en línea!
Esta es una cadena desugared que usa contras para construir una lista de caracteres. Utiliza el emoticón
:]
porque ambos:
y]
ya están en uso. En total esto usa los personajes':][
.8)
Pruébalo en línea!
Aquí es donde las cosas comienzan a ponerse un poco más interesantes. Como necesitamos una forma de hacer una cadena sin los caracteres
"
o'
usamos lashow
función.show
toma algo que se puede mostrar y hace una cuerda. Aquí te mostramos la tupla(88,8,8,8)
. Esto en tupla en particular termina con8)
la cadena que queremos, por lo que8
soltamos los primeros caracteres de la cadena usandodrop 8
. Los caracteres únicos en esta solución sondrop 8(shw,)
Si pudiéramos encontrar otra forma de hacer
Char
s probablemente podría hacer un 4to.mempty
, podría usarse en lugar de[]
en la respuesta 2, y hay formas de extraer la,
respuesta de la respuesta 3.fuente
chr
a partirData.Char
, gire cada carbón en una cadena con:[]
y luego++
todos juntos.Carbón, 10
Estos son solo los que puedo hacer sin usar la
cat
habilidad de Charcoal , que me permitiría agregarXP
y|-0
.¡Pruébalos en línea! Agregué
D⎚
comandos para separar los fragmentos que los espacian, aunque no es perfecto, ya que el código realmente debería estar todo en una línea. Explicación:Esto
←
hace que el literal de cadena)%
se imprima hacia la izquierda, es decir, se invierta.El código de caracteres para
:
es 58. El código de personaje para(
es 5 veces 8. (Ambos se niegan aquí en caso de que necesite un separador más adelante).El
:
es un literal. El¹
imprime una línea de longitud 1 horizontalmente, que es sólo una-
. Esto↓
hace que la segunda línea se imprima verticalmente, lo que da el|
.El
⮌
invierte el literal de cadena];
.El
<_
es un literal de cadena y‖O
hace<
que se refleje al otro lado del_
.El
=
es un literal de cadena y↗÷χχ
dibuja una línea de longitud 10/10, es decir, 1 en diagonal, es decir/
.Los números
9-1
y0
se0
convierten en cadena y, por lo tanto, se imprimen como dígitos, mientras que el del medio se niega lógicamente convirtiéndolo en1
otra forma de imprimir a-
. (¡Y ni siquiera lo he usado como literal todavía!)Esto toma el literal de cadena
D^B
y lo convierte en una matriz, que normalmente se imprimiría verticalmente, sin embargo, la dirección de impresión se anula a vertical, lo que da como resultado ... ¡salida inversa nuevamente!Esto busca los caracteres en las posiciones 3 y 23 en el alfabeto en mayúscula (indexado a 0).
Los
↶⁴
gira la dirección de impresión a través de 180 ° haciendo así que el literal de cadenapx
que va a imprimirse invierte una vez más.fuente
↶⁴px
cuándoxp
funcionaría igual de bien.Gelatina , 6
¿+1 por venir? dylnan sugirió el uso de
ṭ
para liberarȮ
, pero ¿se puede usar?Seis programas completos:
;] xp ; D : 0 XP 8-0
“;]
⁾xp
⁽8Ạb⁹Ọ
”:®ṭ
24,16ịØA
7‘.NṾṖ⁺
31 bytes distintos utilizados, confirmación aquí .
fuente
”:ṭ@¬
le permitiría usarloȮ
en otro programa”:®ṭ
es más corto.0”:0
funciona demasiado liberando táctica-
.¶
y el mapa de caracteres de nueva línea al mismo byte).Rubí , 7
= \ ¡ Pruébelo en línea! Un literal de cadena
> _> ¡ Pruébalo en línea! Otro literal de cadena
: p Pruébalo en línea! Imprime el
:p
símbolo incluyendo la sintaxis (:
) ya que está usando elp
método%) ¡ Pruébelo en línea! Otro literal de cadena
XP Pruébalo en línea! Aquí la notación del documento (básicamente un literal de cadena multilínea)
;] Pruébalo en línea! Matriz de 2 caracteres (
':'
y']'
) unidos con'-'
D8 Pruébelo en línea! La cadena de origen de una expresión regular
__
Mención de honor Pruébelo en línea! Ejecuta el código en bash, regresa
emoticon
con un final\n
fuente
Pitón 2, 4
Esta respuesta es un comienzo bastante simple. Para los dos primeros solo usamos dos sintaxis de cadena diferentes de python. Para el tercero usamos el mismo método que mi respuesta de Haskell donde hacemos que una tupla obtenga su representación de cadena y la corte. Para la última parte se utiliza la
chr
función para hacer que los personajes:
y)
y sumarlos.xD
= \
8)
:)
fuente
=/
.R , 4
Pruébalo en línea!
Un primer intento de una solución R. La necesidad de usar corchetes para cualquier llamada a funciones reduce seriamente las posibilidades. El primer fragmento es una llamada a la
quote
que simplemente devuelve su argumento : gracias @BLT por mostrarme una forma de hacerlo sin paréntesis, lo que me permite usarintToUtf8
en la siguiente línea.Usé otro truco que @Giuseppe mencionó en un comentario a otra pregunta una vez para deletrear
quote
sino
yt
.fuente
mtcars[4,5]
), pero hasta el momento no hay dados.intToUtf8
, etc.) usa corchetes.+
= quote; + XP para liberar los paréntesis? (no estoy seguro de cómo hacer que se muestre sin el formato Markdown, el + está rodeado de comillas)Fisión , 3
| ;-)
Pruébalo en línea!
XP
Pruébalo en línea!
: o
Pruébalo en línea!
Solo hay 3 formas de generar algo en Fission, así que aquí estamos
fuente
Perl 5, 6
:-)
:)
: -3
=]
B ^ D
XP
Pruébalo en línea .
fuente
Javascript, 5
Tres triviales, luego dos interesantes:
xD
XP
<_ <
: 3
No quedan caracteres para los literales de cadena para el cuarto, por lo que obtenemos cadenas concatenando con una matriz. Los dos puntos provienen de escribir una función que usa dos puntos y luego convertirlos en una cadena.
8)
Este funciona de manera muy similar al cuarto, pero utiliza métodos ligeramente diferentes para hacer todo.
Gracias a @ steve-bennett por sugerir usar el
String
constructor y.slice
como alternativa a la concatenación con matrices e indexación. Se las arregló para exprimir +1 punto de él.fuente
String.fromCharCode(58)+String.fromCharCode(91)
probablemente sería una versión más sencilla de la última.String(D=>1).slice(0,2)
/>_>/.source
new RegExp().toString().substring(3,5)
[((new Date)+[]).charAt(18), ~2].join(name)
0+String(-3)