Compte tenu des 95 caractères imprimables en ASCII plus de nouvelle ligne, séparez-le en deux groupes égaux de 48 caractères (ci-après appelés groupe A et groupe B). Créez un mappage individuel de votre choix (vous avez toute discrétion) entre les deux groupes. En d'autres termes, la A
carte peut correspondre à a
, et vice versa, mais A
peut également correspondre à >
et inversement, si c'est ce dont vous avez besoin pour votre programme.
Une fois que vous avez divisé l'ASCII en deux groupes, écrivez deux programmes et / ou fonctions en n'utilisant que les caractères de chaque groupe. En d'autres termes, écrivez un programme / fonction qui utilise uniquement les caractères du groupe A et un autre programme / fonction qui utilise uniquement les caractères du groupe B.
Ces programmes doivent pouvoir recevoir un caractère en entrée. Le programme écrit avec les caractères du groupe A doit sortir / retourner le même caractère s'il s'agit d'un caractère du groupe A et le caractère du groupe A mappé s'il a reçu un caractère du groupe B; le programme Groupe A doit toujours sortir un caractère du groupe A. De même, le programme du groupe B doit générer le même caractère s’il s’agit d’un caractère du groupe B et le caractère mappé du groupe B si l’entrée est un caractère du groupe A.
Cela peut ne pas être si clair, alors voici un exemple. Si vous supposez que toutes les lettres majuscules font partie du groupe A et que toutes les lettres minuscules appartiennent au groupe B et que vous avez choisi d'affecter votre correspondance un à un pour ces lettres, alors: en voici quelques unes: échantillon entrées / sorties:
Programme A:
Input Output
A A
D D
a A
q Q
Programme B:
Input Output
A a
D d
a a
q q
Autres règles:
- Les deux programmes n'ont pas besoin d'être dans la même langue.
- Ils n'ont pas besoin d'être les deux programmes ou les deux fonctions; l'un pourrait être un programme, l'autre une fonction, c'est bien.
- Ils n'ont pas besoin de travailler de la même manière, d'être de la même longueur, quoi que ce soit du genre; ils doivent simplement respecter les autres règles ci-dessus.
- Oui, un seul de vos programmes peut utiliser des nouvelles lignes et un seul peut utiliser des espaces (il peut s'agir du même programme ou d'un programme différent).
- Vous n'avez pas besoin d'utiliser les 48 caractères de chaque programme.
Les failles standard sont interdites, comme d'habitude. Tous les programmes doivent être autonomes, aucun fichier contenant le mappage que vous choisissez.
Critères de notation: code-golf . Plus précisément, la somme des octets du texte des deux programmes.
Merci de poster votre réponse comme ceci:
Langue - # octets + Langue - # octets = # octets
Une description non équivoque de votre cartographie. Si c'est compliqué, utilisez un tableau comme celui-ci:
ABCDEFGHIJKLMNOPQRSTUVWXYZ (etc.) zyxwvutsrpqonmlkjihgfedcba (etc.)
Ou bien, vous pouvez simplement l'expliquer (les 48 premières cartes sont classées en 48), suivies de votre réponse normalement.
la source
+
et>
, et l'autre utilisant-
et<
. Ensuite, vous devez essayer de générer les opérateurs manquants, tels qu'un,
ou.
dans le programme, qui ne peuvent pas les utiliser.Réponses:
CJam - 11 octets + CJam - 25 octets = 36 octets
Les caractères sont sélectionnés en groupes de 16:
C'est cool que quelques correspondances puissent être obtenues avec la touche Maj :)
Programme A:
Essayez-le en ligne
Programme B:
Essayez-le en ligne
Explication:
Programme A:
Programme B:
la source
\n
), ce n'est pas facile à voir sans inspecter le code HTML. Vous pouvez ajouter uni
à la fin du programme pour afficher le code ASCII à la place (ouci
pour traiter également une entrée de nouvelle ligne, car elle génère une chaîne de nouvelle ligne plutôt qu'un caractère dans ce cas)_0=
pour0=_
que le caractère soit toujoursCJam -
46442611 octets + GolfScript -1421251159368474036 octets = 47 octetsMerci à Peter Taylor pour avoir joué 6 octets hors du programme GolfScript (et en avoir ouvert la voie à beaucoup d’autres).
Merci à Dennis d'avoir joué 15 octets hors du programme CJam et 4 octets hors du programme GolfScript.
Groupe A: tous les caractères avec un code de caractère pair.
Groupe B: tous les caractères avec un code de caractère impair, plus une nouvelle ligne.
J'utilise la correspondance évidente entre les deux, c'est-à-dire que je couple ces caractères qui ne diffèrent que par le bit le moins significatif, ainsi que
~
et\n
. Voici la carte complète (les colonnes):Programme A (CJam, testez-le ici ):
Programme B (GolfScript, testez-le ici ):
Explication
Programme A
(Obsolète, sera mis à jour demain.)
Ce programme doit transformer les codes de caractère impairs en paires, c’est-à-dire mettre le bit le moins significatif à 0. La manière évidente de le faire est d’afficher AND avec 126 (ou 254 etc.), mais il est plus court de le mettre à 1 (via OR au niveau du bit avec 1) à la place, puis décrémentez le résultat. Enfin, nous devons corriger les nouvelles lignes manuellement:
Programme B
(Obsolète, sera mis à jour demain.)
Ce programme peut simplement définir le bit le moins significatif sur 1 via OU au niveau du bit avec 1 maintenant. Mais il doit vérifier manuellement
\v
(code de caractère 0x0B) et<DEL>
(code de caractère 0xFF) et les définir à la~
place. Dans GolfScript, je n'avais pas accès à eval, mais vous pouvez plutôt ajouter une chaîne à un bloc (qui fait alors partie du code de ce bloc), que je pourrais mapper sur l'entrée avec%
:Et comme pour le code généré dans le bloc:
la source
Java - 1088 octets + Java - 1144 octets = 2232 octets
Merci à @ durron597 pour avoir aidé à jouer au golf 1090 octets du premier programme.
Preuve qu'il est possible de faire dans une langue (et un non-esolang en plus).
Utilisez l’astuce Unicode pour convertir le premier en tous les caractères Unicode. La seconde utilise la réflexion pour accéder à System.out afin d’imprimer sur std. en dehors. Il ne pouvait pas utiliser le u parce que c'était utilisé dans le premier programme. Je sais que cela peut être joué davantage au golf, mais je voulais tout d'abord publier une solution valable.
Les groupes sont mappés de façon assez arbitraire, mais au fond, le premier ne nécessitait que u, \ et les chiffres hexadécimaux (dans tous les cas).
Les groupes:
Premier programme:
Équivalent à
Deuxième programme:
Essayez-les ici: https://ideone.com/Q3gqmQ
la source
void x(int z)
FIXÉ! Pyth - 23 octets + Pyth - 30 octets = 53 octets
oups erreur de fixation --- s'il vous plaît soyez patientmême code ASCII que celui de Martin:
Prog # 1: Test en ligne
Prog # 2: Test en ligne
la source