Cette question mettra en vedette un mécanicien du jeu "Path Of Exile" dans ce jeu, il y a des choses appelées MAPS ce sont des objets que vous pouvez utiliser pour ouvrir des zones de haut niveau, vous pouvez également combiner 3 d'entre eux pour en obtenir un amélioré qui sera la tâche de ce défi. Les combinaisons de mise à niveau sont les suivantes:
A Crypt Map 68 -> Sewer Map
E Dungeon Map 68 -> Channel Map
I Grotto Map 68 -> Thicket Map
O Dunes Map 68 -> Mountain Ledge Map
U Pit Map 68 -> Cemetery Map
T Tropical Island Map 68 -> Arcade Map
N Desert Map 68 -> Wharf Map
S Sewer Map 69 -> Ghetto Map
H Channel Map 69 -> Spider Lair Map
R Thicket Map 69 -> Vaal Pyramid Map
D Mountain Ledge Map 69 -> Reef Map
L Cemetery Map 69 -> Quarry Map
C Arcade Map 69 -> Mud Geyser Map
M Wharf Map 69 -> Museum Map
W Ghetto Map 70 -> Arena Map
F Spider Lair Map 70 -> Overgrown Shrine Map
G Vaal Pyramid Map 70 -> Tunnel Map
Y Reef Map 70 -> Shore Map
P Quarry Map 70 -> Spider Forest Map
B Mud Geyser Map 70 -> Promenade Map
V Museum Map 70 -> Arena Map
K Arena Map 71 -> Underground Sea Map
J Overgrown Shrine Map 71 -> Pier Map
X Tunnel Map 71 -> Bog Map
Q Shore Map 71 -> Graveyard Map
Z Spider Forest Map 71 -> Coves Map
Ó Promenade Map 71 -> Villa Map
É Underground Sea Map 72 -> Temple Map
Á Pier Map 72 -> Arachnid Nest Map
Í Bog Map 72 -> Strand Map
Ú Graveyard Map 72 -> Dry Woods Map
Ü Coves Map 72 -> Colonnade Map
Ö Villa Map 72 -> Catacomb Map
Ä Temple Map 73 -> Torture Chamber Map
Ë Arachnid Nest Map 73 -> Waste Pool Map
Ï Strand Map 73 -> Mine Map
Æ Dry Woods Map 73 -> Jungle Valley Map
Œ Colonnade Map 73 -> Labyrinth Map
Ñ Catacomb Map 73 -> Torture Chamber Map
Ÿ Torture Chamber Map 74 -> Cells Map
1 Waste Pool Map 74 -> Canyon Map
2 Mine Map 74 -> Dark Forest
3 Jungle Valley Map 74 -> Dry Peninsula Map
4 Labyrinth Map 74 -> Orchard Map
5 Cells Map 75 -> Underground River Map
6 Canyon Map 75 -> Arid Lake Map
7 Dark Forest Map 75 -> Gorge Map
8 Dry Peninsula Map 75 -> Residence Map
9 Orchard Map 75 -> Underground River Map
0 Underground River Map 76 -> Necropolis Map
? Arid Lake Map 76 -> Plateau Map
! Gorge Map 76 -> Bazaar Map
( Residence Map 76 -> Volcano Map
) Necropolis Map 77 -> Crematorium Map
- Plateau Map 77 -> Precinct Map
/ Bazaar Map 77 -> Academy Map
\ Volcano Map 77 -> Springs Map
| Crematorium Map 78 -> Shipyard Map
= Precinct Map 78 -> Overgrown Ruin Map
* Academy Map 78 -> Village Ruin Map
† Springs Map 78 -> Arsenal Map
‡ Shipyard Map 79 -> Wasteland Map
§ Overgrown Ruin Map 79 -> Courtyard Map
[ Village Ruin Map 79 -> Excavation Map
] Arsenal Map 79 -> Waterways Map
_ Wasteland Map 80 -> Palace Map
~ Courtyard Map 80 -> Shrine Map
{ Excavation Map 80 -> Maze Map
} Waterways Map 80 -> Palace Map
© Palace Map 81 -> Abyss Map
€ Shrine Map 81 -> Abyss Map
< Maze Map 81 -> Colosseum Map
> Vaal Temple Map 81 -> Colosseum Map
µ Abyss Map 82
» Colosseum Map 82
Ces lignes suivent ce schéma:
Symbol of the map | Name of the map | Level of the map | Map received from combining
Notez que la carte des abysses et du Colisée ne se combine pas en cartes de niveau supérieur car elles sont le niveau le plus élevé.
ENTRÉE:
Votre entrée sera une chaîne de symboles qui correspond aux symboles de la carte, par exemple AAAEE qui signifierait 3 x carte de crypte et 2 x carte de donjon.
SORTIE:
La sortie sera à nouveau une chaîne de symboles qui représenterait la combinaison la plus élevée possible des cartes d'entrée. Toute combinaison de sortie est autorisée tant qu'elle présente chaque carte.
EXEMPLES:
INPUT: A
OUTPUT: A
INPUT: AAA
OUTPUT: S
INPUT: AAAEEEIII
OUTPUT: SHR or HRS or RHS or SRH
INPUT: AAAAAAAAAE
OUTPUT: WE or EW
INPUT: »»»»»
OUTPUT: »»»»»
SCORING:
Votre score sera calculé à l'aide de cette formule, qui est également utilisée dans le jeu pour calculer la réduction des dégâts:
POINTS = 1000 - (ByteCount / (ByteCount + 1000) * 1000);
POINTS BONUS:
Si vous ajoutez un encodage à la fois à l'entrée et à la sortie, multipliez vos points par 1,2, exemple 3A au lieu de AAA. Vous pouvez omettre l'entrée standard si votre réponse le soutient.
Si votre programme autorise les noms de carte réels en entrée / sortie, puis multipliez vos points par 1,5, vous pouvez ignorer la partie "carte" du nom de la carte afin qu'un exemple d'entrée " crypt crypt crypt " et de sortie " égout " soit correct. Votre script n'a également plus besoin de comprendre l'entrée standard si vous utilisez cette méthode. Cette méthode nécessite également un espace entre les noms à la fois en entrée et en sortie.
Si votre chaîne de sortie passe de la carte de niveau le plus bas à la plus élevée, multipliez vos points par 1,08, les cartes de même niveau n'ont pas besoin d'être triées d'une manière particulière.
Vous pouvez combiner les 3 points bonus.
RÉPONSE AVEC LE PLUS DE POINTS GAGNE!
la source
AEIAEIAEI
?2AEA
pourAAEA
? Ou sera-ce3AE
?Réponses:
Haskell, 306 octets, points = 766 * 1,2 * 1,08 = 992,343Je pourrais extraire quelques octets de plus si quelqu'un me battait, mais pour l'instant je vais le laisser tel quel.
Haskell, 284 octets, points = 779 * 1,2 * 1,08 = 1009,346J'ai quand même pressé quelques octets de plus.
Haskell, 248 octets, points = 801 * 1,2 * 1,08 = 1038,462
Je vais également laisser quelques tableaux que j'ai faits pour que d'autres puissent les utiliser:
Vous le lisez de haut en bas, deux lettres à la fois (ou ignorez les colonnes impaires). Trois A font un S, Trois S font un W et ainsi de suite. Les chaînes qui se terminent s'enroulent simplement dans la première colonne de la ligne suivante. Pas trois cartes font un>.
Voici les chaînes de cartes que vous pouvez créer sans répétition:
la source
C #,
364361 octets, points = 734,754 x 1,08 = 793,534Autant faire bouger le ballon avec un gros ...
Je n'ai pas encore pensé à un moyen intelligent de mapper les caractères encodés apparemment aléatoires à leur valeur relative, j'ai donc utilisé une méthode de force brute pour l'instant.
Cela implémente la fonction bonus 3 grâce à la méthode de regroupement, qui me rapporte 58 points intéressants.
Edit: Réécriture de la boucle de sortie dans join / zip
la source
SWI-Prolog, 354 octets, points = 738,552 * 1,08 = 797,64
Attend les entrées sous forme de chaînes de codes, par exemple
a(`AAAEEEIII`,Z).
sortiraZ = "SRH"
.Je vais voir ce que je peux faire pour les deux autres bonus ...
la source
Javascript, 432 octets, points = 698,32 * 1,08 * 1,2 = 905,02ECMAScript 6, 417 octets, points = 705,72 * 1,08 * 1,2 = 914,61
Pas de version de minifieur en ligne: (la dernière version a été transmise via un minifieur )
Courir avec Babel
Testé avec les entrées suivantes:
AAA
AAAEEEIII
3A3E3I
»»»»»
5»
Solution générale
Fondamentalement, utiliser l'expression régulière autant que possible
Rien d'extraordinaire ici, il suffit de remplacer une correspondance pour la sortie respective.
Pour le bonus 1.2
Regexing les chiffres et la lettre suivante, le code lisible va comme ceci:
Comme vous pouvez le voir,
s.match(y) - 0
la chaîne correspondante est soustraite de 0, c'est-à-dire pour forcer une analyse syntaxique sans réellement appelerparseInt()
.Array(p).join(s.match(z)[1])
Joint également fondamentalement un tableau d' élémentsp
vides , avec le caractère trouvé dans la correspondance, c'est un moyen facile d'imprimer une lettre (disonsE
) unp
nombre de fois.Pour le bonus 1.08
Algorithme de tri:
la source
Javascript (ES6), 389 octets, points = 719.942 * 1.08 * 1.2 = 933.045
En tête, du moins pour l'instant ...
Essayez-le ici:
Afficher l'extrait de code
Le bonus 1.2 est quelque peu délicat dans sa mise en forme. Si vous souhaitez saisir un nombre normal, placez-le
1
devant.Fondamentalement, cela analyse tous les personnages qui ont une mise à niveau (tous sauf
µ
et»
), puis trouve tous les ensembles de trois de ce personnage et les remplace par le caractère amélioré. Le tri après chacun.replace
était le meilleur moyen de s'assurer que cela fonctionne toujours correctement, donc c'était un bonus automatique. Le bonus 1.2 était un peu plus difficile, mais je l'ai réglé en 45 octets. Le bonus de 1,5 n'en vaut tout simplement pas la peine, car il nécessite une tonne de plus d'encodage et doublerait au moins la longueur.Comme toujours, les suggestions sont les bienvenues!
la source