Vous ne voyez pas d'emoji? Cliquez ici .
Vous simulerez un distributeur automatique. Les éléments sont 56 emojis différents, qui peuvent être représentés comme deux caractères de substitution UTF-8, de: 🍅 (U + D83C U + DF45) à 🍼 (U + D83C U + DF7C). En HTML, ces emojis peuvent être représentés sous forme UTF-16 comme & # x1F345 à & # x1F37C . Dans la base 10, le premier caractère UTF-8 a la valeur 55356 . La valeur du deuxième caractère varie de 57157 à 57212 . Voici un programme CJam qui génère tous les emojis pertinents. Pour éviter toute confusion, ce défi sera marqué en caractères et non en octets . Certains emojis ont 2 caractères, certains sont 3. http://www.lettercount.com vous donnera un décompte précis pour ce défi.
Prix 💵💵💵
Il existe 8 catégories de prix différentes:
- 1,00 $: 🍅🍆🍇🍈🍉🍊🍋
- 1,50 $: 🍌🍍🍎🍏🍐🍑🍒
- 2,00 $: 🍓🍔🍕🍖🍗🍘🍙
- 2,50 $: 🍚🍛🍜🍝🍞🍟🍠
- 3,00 $: 🍡🍢🍣🍤🍥🍦🍧
- 3,50 $: 🍨🍩🍪🍫🍬🍭🍮
- 4,00 $: 🍯🍰🍱🍲🍳🍴🍵
- 4,50 $: 🍶🍷🍸🍹🍺🍻🍼
Affichage du distributeur automatique
C'est ce que l'utilisateur voit au démarrage du programme et après avoir effectué un achat. Vous pouvez utiliser des numéros réguliers au lieu de numéros emoji, mais les numéros emoji ont l'avantage d'être de la même largeur que les autres emojis. Si vous utilisez des numéros emoji, vous pouvez soustraire 14 caractères de votre score, car les numéros emoji sont de 3 caractères chacun.
1️⃣2️⃣3️⃣4️⃣5️⃣6️⃣7️⃣
A 🍅🍆🍇🍈🍉🍊🍋
B 🍌🍍🍎🍏🍐🍑🍒
C 🍓🍔🍕🍖🍗🍘🍙
D 🍚🍛🍜🍝🍞🍟🍠
E 🍡🍢🍣🍤🍥🍦🍧
F 🍨🍩🍪🍫🍬🍭🍮
G 🍯🍰🍱🍲🍳🍴🍵
H 🍶🍷🍸🍹🍺🍻🍼
Si l'utilisateur entre G5qui sélectionne 🍳. La saisie E6sélectionne 🍦.
Ajouter de l'argent 💸💸💸
Pour ajouter de l'argent, l'utilisateur doit saisir /puis le code d'une pièce ou d'un billet. Les pièces sont (N) nickel (0,05 $), (D) ime (0,10 $) et (Q) uarter (0,25 $). Les factures sont (O) ne (1,00 $), (F) ive (5,00 $), (T) en (10,00 $). Chaque fois que l'utilisateur ajoute une facture ou une pièce, le programme doit sortir Balance: [New Balance]. Un seul billet ou pièce peut être ajouté à chaque fois. Voici un exemple contenant trois lignes de saisie:
/D
Balance: $0.10
/Q
Balance: $0.35
/F
Balance: $5.35
Sélection d'articles
L'utilisateur sélectionne un article en entrant le code article, comme B2ou C3. Si l'utilisateur n'a pas ajouté d'argent, le programme doit sortir Item Cost: [Cost of Item]. Si l'utilisateur a ajouté de l'argent, mais qu'il ne suffit pas d'acheter l'article, la sortie devrait l'être Insufficient Funds. Item Cost: [Cost of Item]. Si l'utilisateur a toutefois ajouté assez d' argent, le programme doit générer: Item at [Item Location] Purchased. Remaining Balance: [Balance - Cost of Item]. Ensuite, sur sa propre ligne, imprimez les emoji de l'article acheté. Imprimez ensuite l'intégralité du distributeur automatique (voir «Affichage du distributeur automatique») avec l'article acheté remplacé par 🚫 (U + D83D U + DEAB) Base 10: (55357 57003).
Fin du programme
Si l'utilisateur achète un article qui ramène son solde à 0,00 $, le programme devrait se terminer automatiquement. Alternativement, si l'utilisateur entre "Terminé" à tout moment, le programme doit donner à l'utilisateur son solde restant en monnaie. Le changement doit être uniquement en Nickels, Dimes et Quarters, et doit être la plus petite quantité de pièces possible. Par exemple, si le solde restant est de 1,45 $, la sortie devrait être QQQQQDD.
Sample Run
(L'entrée commence par "-")
1️⃣2️⃣3️⃣4️⃣5️⃣6️⃣7️⃣
A 🍅🍆🍇🍈🍉🍊🍋
B 🍌🍍🍎🍏🍐🍑🍒
C 🍓🍔🍕🍖🍗🍘🍙
D 🍚🍛🍜🍝🍞🍟🍠
E 🍡🍢🍣🍤🍥🍦🍧
F 🍨🍩🍪🍫🍬🍭🍮
G 🍯🍰🍱🍲🍳🍴🍵
H 🍶🍷🍸🍹🍺🍻🍼
-E1
Item Cost: $3.00
-/F
Balance: $5.00
-E1
Item at E1 Purchased. Remaining Balance: $2.00
🍡
1️⃣2️⃣3️⃣4️⃣5️⃣6️⃣7️⃣
A 🍅🍆🍇🍈🍉🍊🍋
B 🍌🍍🍎🍏🍐🍑🍒
C 🍓🍔🍕🍖🍗🍘🍙
D 🍚🍛🍜🍝🍞🍟🍠
E 🚫🍢🍣🍤🍥🍦🍧
F 🍨🍩🍪🍫🍬🍭🍮
G 🍯🍰🍱🍲🍳🍴🍵
H 🍶🍷🍸🍹🍺🍻🍼
-Done
QQQQQQQQ
Codes invalides
- Si l'entrée commence par
/mais n'est pas une entrée d'argent valide, sortezMoney not Accepted. - Si l'entrée est un article qui a déjà été acheté, la sortie
Item out of stock - Si l'entrée est une combinaison de chiffres et de lettres qui n'est pas dans la plage (comme
A0ouJ2, sortez "Code invalide" - Pour toutes les autres entrées non valides, affichez "Erreur"
Bonus (-15%): Confiture
Lors de la vente d'un article, il y a 10% de chances que la machine se bloque et que l'article se coince. Sortie JAM!!!une fois. Dans ce cas, l'utilisateur doit saisir "punch" ou "kick". Chaque fois que l'utilisateur le fait, il y a 20% de chances que l'article se libère et se vende normalement. Jusqu'à ce que le bourrage disparaisse, les seules entrées reconnues sont "punch" et "kick". Toutes les autres entrées ne font rien. Voici un exemple:
-A4
Item at A4 purchased. Remaining Balance: $1.00
JAM!!!
-punch
-kick
-kick
-punch
-punch
🍚
(Le bourrage a été éliminé. Reprenez normalement.)
Bonus (-10%): ID
Si l'utilisateur essaie d'acheter une boisson alcoolisée (tout article de la dernière rangée sauf le biberon), vous devez exiger une preuve d'âge. Pour ce faire, vous demandez à l'utilisateur de multiplier deux nombres aléatoires entre 13 et 19 (inclus). Sortie ID required: [13-19]x[13-19] = ?. Si l'utilisateur répond correctement, l'achat peut passer. Sinon, imprimez 🔞 (U + D83D U + DD1E) base 10: (55357 56606)
Défi alternatif: Minecraft
Ce défi semble être quelque chose de possible dans Minecraft. Pour réussir à créer une version Minecraft de ce programme, le joueur doit
- Avoir une grille 8x7 pour sélectionner parmi 56 articles uniques
- Pouvoir ajouter de l'argent au solde (peut-être utiliser différents types de pierres pour les différentes dénominations décrites ci-dessus.)
- Donnez à l'utilisateur l'article qu'il / elle sélectionne s'il a mis suffisamment d'argent
- Renvoyez à l'utilisateur le montant approprié de la modification à la fin.
Le mode de compatibilité
Je ne peux prendre de saisie qu'au début du programme
- Ne vous inquiétez pas, vous pouvez créer un programme qui prend toutes les entrées à l'avance. Si votre programme n'est pas terminé après avoir évalué toutes les entrées, supposez que "Terminé" est appelé à la fin. Si vous utilisez cette méthode, vous ne pourrez prétendre à aucun bonus.
Je ne peux pas voir / sortir les emojis
- Vous pouvez copier et coller vos entrées et sorties dans cet extrait de pile (ou ici ). Il peut comprendre à la fois les emojis unicode et les codes HTML pour les emojis. Si votre sortie semble correcte sur cette page, votre programme réussit. Essayez de coller certains exemples d'entrées / sorties pour voir à quoi cela ressemble.
function parse() {
var o = document.getElementById("output");
var text = document.getElementById("in").value;
o.innerHTML = text.replace(/\n/g,"<br/>").replace(/ /g," ");
twemoji.parse(o);
}
<head>
<script src="//twemoji.maxcdn.com/twemoji.min.js"></script>
</head>
<body>
<h1>Emoji to Image</h1>
<textarea id="in" rows="10" cols="50"></textarea>
<input type="submit" onclick="parse()">
<div id="output"></div>
</body>
Voici une version abrégée en mode compatibilité de l'affichage du distributeur automatique que vous pouvez tester dans l'extrait de pile:
1⃣2⃣3⃣4⃣5⃣...
A🍅🍆🍇🍈🍉...
B
...
Je peux sortir des emojis, mais pas sur STDOUT.
- Apparemment, le terminal Mac OS X est le seul connu à pouvoir émettre des emojis. Si vous n'êtes pas en mesure de sortir des emojis dans votre terminal, vos autres options sont
- Envoyer toutes les sorties dans un fichier.
- Affichez toutes les sorties dans une fenêtre.
- Utilisez la technique décrite dans «Je ne peux pas afficher / émettre des emojis».
- Apparemment, le terminal Mac OS X est le seul connu à pouvoir émettre des emojis. Si vous n'êtes pas en mesure de sortir des emojis dans votre terminal, vos autres options sont
$symbole fait partie du jeu de caractères ASCII, il est donc sûr de supposer à peu près tous les claviers et langues peuvent le gérer. Il s'agit du seul symbole monétaire du jeu de caractères ASCII 7 bits. En conséquence, d'autres symboles tels que le symbole GBP ou le symbole EUR € peuvent être rendus incorrectement en raison de codages de chaînes incompatibles, mais cela ne se produit pratiquement jamais avec $.
$symbole a une signification particulière dans la plupart des langages de programmation, donc ne pas l'avoir disponible sur le clavier serait une sérieuse limitation. Je tape ceci sur mon clavier espagnol et il est en fait plus facile d'obtenir $ (shift + 4) que € (alt gr + E) afin que vous puissiez voir que ce dernier symbole a été ajouté après coup.
$ can be replaced with your local currencyn'a pas beaucoup de sens si vous exigez ensuite que les pièces soient (N) ickels (D) imes et (Q) uarters. Je vous suggère de le supprimer car cela ajoute de la confusion.