introduction
Votre défi aujourd'hui (inspiré par ce défi ) est d'écrire un certain nombre d'extraits, de fonctions ou de programmes complets qui produisent chacun des émoticônes ascii, sans réutiliser les caractères.
Défi
La liste des émoticônes ascii valides pour ce défi est ici et dans le bloc de code au bas de ce post.
Chaque extrait doit figurer sur une ligne distincte de votre soumission.
Vous ne pouvez utiliser qu'une seule langue pour tous les extraits.
Chaque extrait doit soit sortir sur stdout, soit renvoyer une chaîne contenant l'émoticône et une nouvelle ligne de fin facultative, et rien d'autre .
Vous ne pouvez pas utiliser un caractère plus d'une fois dans tous les extraits, mais utiliser plusieurs fois un caractère dans un seul extrait est correct.
Vous ne pouvez utiliser aucun caractère qui ne se trouve pas dans la page de codes de votre langue (ou ascii, si votre langue n'utilise pas de page de codes personnalisée) dans aucun des extraits. Autrement dit, vous êtes limité aux seuls caractères qui peuvent être encodés dans un octet.
Aucun extrait ne peut prendre aucune entrée.
Les failles standard ne sont pas autorisées.
Votre score est le nombre d'extraits uniques qui impriment chacun une émoticône ascii différente dans le fichier texte ci-dessus.
Le score le plus élevé gagne!
Bonne chance!
Émoticônes autorisées, espace séparé:
:-) :) :-] :] :-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 <_< >_>
EDIT: Toutes mes excuses, il y avait un caractère Unicode dans l'une des émoticônes qui m'ont manqué. J'ai depuis supprimé l'émoticône qui le contient. J'espère que cela ne causera pas trop de désagréments.
la source
Réponses:
Lenguage , 131
J'ai mis toutes les émoticônes que je représente dans le format
<emoticon> <byte> <length>
où le programme est<byte>
répété plusieurs<length>
fois.la source
×
!Haskell , 3
Voici un début à une solution haskell.
xD
Essayez-le en ligne!
Celui-ci est juste une chaîne normale, il utilise les caractères
"xD
:]
Essayez-le en ligne!
Il s'agit d'une chaîne désucrée utilisant par contre pour construire une liste de caractères. Il utilise l'émoticône
:]
car les deux:
et]
sont déjà utilisés. Au total, cela utilise les caractères':][
.8)
Essayez-le en ligne!
C'est là que les choses commencent à devenir un peu plus intéressantes. Puisque nous avons besoin d'un moyen de faire une chaîne sans les caractères
"
ou'
nous utilisons lashow
fonction.show
prend quelque chose de visible et en fait une chaîne. Ici, nous montrons le tuple(88,8,8,8)
. En particulier, cela se termine par8)
la chaîne que nous voulons, donc nous8
supprimons les premiers caractères de la chaîne en utilisantdrop 8
. Les caractères uniques de cette solution sontdrop 8(shw,)
Si nous pouvions trouver une autre façon de faire des
Char
s, je serais probablement en mesure d'en faire une quatrième.mempty
, pourrait être utilisé à la place de la[]
réponse 2, et il existe des moyens d'extraire la,
réponse de la réponse 3.la source
chr
fromData.Char
, transformer chaque caractère en une chaîne avec:[]
et ensuite++
tous ensemble.Charbon de bois, 10
Ce ne sont que ceux que je peux faire sans utiliser la
cat
capacité de Charcoal , ce qui me permettrait d'ajouterXP
et|-0
.Essayez-les en ligne! J'ai ajouté des
D⎚
commandes pour séparer les extraits qui les espacent, bien que ce ne soit pas parfait, car le code devrait vraiment être tout sur une seule ligne. Explication:Le
←
fait que le littéral de chaîne)%
soit imprimé vers la gauche, c'est-à-dire inversé.Le code de caractère pour
:
est 58. Le code de caractère pour(
est 5 fois 8. (Ils sont tous deux annulés ici au cas où j'aurais besoin d'un séparateur plus tard.)C'est
:
un littéral. Le¹
imprime une ligne de longueur 1 horizontalement, ce qui est juste un-
. Le↓
fait imprimer la deuxième ligne verticalement, ce qui donne le|
.L'
⮌
inverse la chaîne littérale];
.Le
<_
est un littéral de chaîne et le‖O
fait<
qu'il soit reflété de l'autre côté du_
.Le
=
est une chaîne littérale et le↗÷χχ
dessine une ligne de longueur 10/10 soit 1 en diagonale, c'est à dire/
.Les nombres
9-1
et0
sont convertis en chaîne et s'impriment donc sous forme de chiffres, tandis que0
le milieu est logiquement annulé, ce1
qui en fait une autre façon d'imprimer a-
. (Et je ne l'ai même pas encore utilisé comme littéral!)Cela prend la chaîne littérale
D^B
et la convertit en un tableau, qui devrait normalement s'imprimer verticalement, mais la direction d'impression est remplacée par la verticale, ce qui entraîne ... une sortie inversée à nouveau!Cela recherche les caractères aux positions 3 et 23 dans l'alphabet majuscule (indexé 0).
Le
↶⁴
fait pivoter le sens d'impression de 180 °, provoquant ainsipx
une nouvelle impression du littéral de chaîne .la source
↶⁴px
quandxp
cela fonctionnerait aussi bien.Gelée , 6
+1 à venir ?? dylnan a suggéré d'utiliser
ṭ
pour libérerȮ
, mais peut-il être utilisé?Six programmes complets:
;] xp ; D : 0 XP 8-0
“;]
⁾xp
⁽8Ạb⁹Ọ
”:®ṭ
24,16ịØA
7‘.NṾṖ⁺
31 octets distincts utilisés, confirmation ici .
la source
”:ṭ@¬
vous permettrait d'utiliserȮ
dans un autre programme”:®ṭ
est plus court aussi.0”:0
fonctionne trop-
.¶
et le caractère de nouvelle ligne mappe sur le même octet).Rubis , 7
= \ Essayez-le en ligne! Un littéral de chaîne
> _> Essayez-le en ligne! Un autre littéral de chaîne
: p Essayez-le en ligne! Imprime le
:p
symbole, y compris la syntaxe (:
) car il utilise lap
méthode%) Essayez-le en ligne! Encore une autre chaîne littérale
XP Essayez-le en ligne! Ici, la notation de document (essentiellement un littéral de chaîne multiligne)
;] Essayez-le en ligne! Tableau de 2 caractères (
':'
et']'
) joint à'-'
D8 Essayez-le en ligne! La chaîne source d'une expression régulière
__
Mention honorable Essayez-le en ligne! Exécute le code en bash, retourne
emoticon
avec une fin\n
la source
Python 2, 4
Cette réponse est un début assez simple. Pour les deux premiers, nous utilisons simplement les deux syntaxes de chaînes différentes de python. Pour le troisième, nous utilisons la même méthode que ma réponse Haskell où nous faisons un tuple obtenir sa représentation de chaîne et le découper. Pour la dernière partie , nous utilisons la
chr
fonction de rendre les personnages:
et)
et les additionner.xD
= \
8)
:)
la source
=/
.R , 4
Essayez-le en ligne!
Une première tentative de solution R. La nécessité d'utiliser des crochets pour tout appel de fonction réduit considérablement les possibilités. Le premier extrait est un appel
quote
auquel renvoie simplement son argument - Merci @BLT de m'avoir montré un moyen de le faire sans parenthèses, me permettant d'utiliserintToUtf8
sur la ligne suivante.J'ai utilisé une autre astuce que @Giuseppe a mentionnée dans un commentaire à une autre question une fois pour épeler
quote
sanso
ett
.la source
mtcars[4,5]
) mais pas de dés jusqu'à présent.intToUtf8
+
= quote; + XP pour libérer les parenthèses? (je ne sais pas comment le faire apparaître sans la mise en forme Markdown - le + est entouré de pointillés)Fission , 3
| ;-)
Essayez-le en ligne!
XP
Essayez-le en ligne!
: o
Essayez-le en ligne!
Il n'y a que 3 façons de produire quelque chose dans Fission, nous voici donc
la source
Perl 5, 6
:-)
:)
: -3
=]
B ^ D
XP
Essayez-le en ligne .
la source
Javascript, 5
Trois triviaux, puis deux intéressants:
xD
XP
<_ <
: 3
Il ne reste aucun caractère pour les littéraux de chaîne pour le quatrième, donc nous obtenons des chaînes en concaténant avec un tableau. Le deux-points vient de l'écriture d'une fonction qui utilise un deux-points, puis de sa conversion en chaîne.
8)
Celui-ci fonctionne de manière très similaire au quatrième, mais utilise des méthodes légèrement différentes pour tout faire.
Merci à @ steve-bennett d'avoir suggéré d'utiliser le
String
constructeur et.slice
comme alternative à la concaténation avec des tableaux et à l'indexation. Réussi à en retirer +1 point.la source
String.fromCharCode(58)+String.fromCharCode(91)
serait probablement une version plus simple de la dernière.String(D=>1).slice(0,2)
/>_>/.source
new RegExp().toString().substring(3,5)
[((new Date)+[]).charAt(18), ~2].join(name)
0+String(-3)