Bienvenue à votre premier jour chez PPCG Inc. En tant que nouveau trieur de documents adjoint junior, vous êtes responsable de vous assurer que tous les documents que nous vous avons envoyés sont archivés par ordre alphabétique. C'est si simple qu'un singe peut le faire. Eh bien, métaphoriquement parlant, car nous avons embauché un singe pour le faire. Devine quoi? Il s'avère que les singes manquent de compréhension de notre alphabet. Quoi qu'il en soit, nous n'avons pas le temps de réparer le gâchis actuel, alors essayez simplement de ne pas aggraver la situation, d'accord? Alors allez-y! Si vous avez faim, il y a des bananes près du refroidisseur d'eau. Bonne chance!
Description de l'emploi
Contribution
- Vous recevrez une liste de chaînes (l'archive) et une chaîne qui doit être ajoutée à cette liste (le document)
- Toutes les chaînes ne contiendront que des lettres majuscules, des lettres minuscules et des espaces
- Les chaînes commenceront et se termineront toujours par une lettre
Tâche
Déterminez la position cible du document: la position qu'il doit recevoir dans l'archive. La position cible peut être déterminée comme suit:
- Pour chaque poste:
- Comptez le nombre de chaînes dans l'archive avant cette position qui sont alphabétiquement avant le document
- Comptez le nombre de chaînes dans l'archive après cette position qui sont alphabétiquement après le document
- Définissez le score de la position comme la somme des deux chefs d'accusation ci-dessus
- La position cible du document est la position avec le score le plus élevé
- En cas d'égalité, toutes les positions avec le score le plus élevé sont également valables comme position cible. Un seul doit être sélectionné.
Lors du tri:
- Les majuscules et les minuscules sont équivalentes
- Les espaces passent avant les lettres
Production
- L'archive avec le document ajouté sous n'importe quelle forme
OU
- La position cible du document, dans un index basé sur 0 ou basé sur 1
Évaluation des emplois
Le moins d'octets gagne!
Exemple d'E / S
Archive:
Applebuck Season
Friendship is Magic
The Ticket Master
Griffon the BrushOff
Boast Busters
Bridle Gossip
Document: Dragonshy
Position scores (0-based index):
0: 0 + 3 = 3
1: 1 + 3 = 4
2: 1 + 2 = 3
3: 1 + 1 = 2
4: 1 + 0 = 1
5: 2 + 0 = 2
6: 3 + 0 = 3
Target position: 1
Réponses:
JavaScript (ES6), 81 octets
Non golfé:
Edit: sauvé beaucoup d'octets grâce à @ user81655.
la source
indexOf
par une variable de résultat définie pendant la carte serait également plus court.Pyth,
4038 octetsCrédits à @Katenkyo pour m'avoir enseigné que
A xnor B
c'est fondamentalementA==B
. (A xor B
c'est aussiA!=B
)Essayez-le en ligne!
Comment ça fonctionne:
Il additionne le XNOR si l'entrée est plus petite que le document et si l'index de l'entrée est plus petit que l'index du document.
Il trouve la position dans laquelle cette somme est maximale, puis la sort.
la source
Python 3,
135167 octetsla source
Rubis, 97 octets
Fonction anonyme, retourne la position cible.
Lors de l'insertion effective dans l'archive, 110 octets :
la source
Pyth,
54524745 octetsAttendez-vous à ce que l'entrée soit une liste, le premier élément est une liste de chaînes (archive), le deuxième élément est une chaîne (document)
Testez ici
la source
0
auquel, si je lis correctement votre code, vous pouvez économiser de l'espace["Applebuck Season","Friendship is Magic","The Ticket Master","Griffon the BrushOff","Boast Busters","Bridle Gossip"]\n "Dragonshy"
comme entrée et utiliser à laE
place de@Q0
et@Q1
peut vous faire économiser quatre octets.AQ
place deJ@Q0K@Q1
.MATL , 32 octets
L'entrée est un tableau de cellules de chaînes (plusieurs chaînes séparées par des espaces et entourées d'accolades) pour l'archive, et une chaîne pour le document. La sortie est basée sur 1. En cas d'égalité, la première position est retournée.
Essayez-le en ligne!
Explication
la source