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 lashowfunción.showtoma 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 que8soltamos 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
Chars 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
chra 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
cathabilidad de Charcoal , que me permitiría agregarXPy|-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‖Ohace<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-1y0se0convierten en cadena y, por lo tanto, se imprimen como dígitos, mientras que el del medio se niega lógicamente convirtiéndolo en1otra forma de imprimir a-. (¡Y ni siquiera lo he usado como literal todavía!)Esto toma el literal de cadena
D^By 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 cadenapxque va a imprimirse invierte una vez más.fuente
↶⁴pxcuándoxpfuncionarí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ịØA7‘.NṾṖ⁺31 bytes distintos utilizados, confirmación aquí .
fuente
”:ṭ@¬le permitiría usarloȮen otro programa”:®ṭes más corto.0”:0funciona 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
:psímbolo incluyendo la sintaxis (:) ya que está usando elpmé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
emoticoncon un final\nfuente
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
chrfunció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
quoteque simplemente devuelve su argumento : gracias @BLT por mostrarme una forma de hacerlo sin paréntesis, lo que me permite usarintToUtf8en la siguiente línea.Usé otro truco que @Giuseppe mencionó en un comentario a otra pregunta una vez para deletrear
quotesinoyt.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
Stringconstructor y.slicecomo 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)/>_>/.sourcenew RegExp().toString().substring(3,5)[((new Date)+[]).charAt(18), ~2].join(name)0+String(-3)