L'interview: The Front Nine
Il s'agit du premier d'une série de défis inspirés par la programmation des questions d'entrevue d'emploi.
Vous entrez dans le bureau où se trouve votre futur patron potentiel. "Entrez et asseyez-vous", dit-il. Vous vous asseyez nerveusement, en vous assurant que votre tenue accrocheuse mais professionnelle est sans rides. Il vous pose de nombreuses questions sur votre formation, vos expériences de travail antérieures, etc. Vous y répondez principalement honnêtement, en ajoutant un peu d'embellissement ici et là pour vous faire mieux sonner. Il se penche en avant et recommence à parler.
"Avez-vous déjà entendu parler du golf à code?" Pourquoi, oui, vous aimez le code de golf, et faites-le fréquemment pendant votre temps libre. "Génial. La dernière partie de l'entretien est un examen technique. Il vous sera demandé d'écrire du code pour résoudre une série de problèmes ..." Il vous tend une feuille de papier. Vous jetez un coup d'œil dessus. Peasy facile. Maintenant, pourquoi at-il posé des questions sur le golf à code?
"Vous serez noté en fonction de la taille totale de vos solutions à ces problèmes. Si vous pouvez obtenir un score inférieur à tous les autres candidats, le travail vous appartient." Oh. "Comme le golf, il y a 18 problèmes, divisés en deux séries de 9. N'hésitez pas à utiliser n'importe quelle langue que vous aimez pour les résoudre. Nous avons des compilateurs et des interprètes pour chaque langue dont vous avez entendu parler, et certainement quelques-uns que vous n'avez pas 't. Bonne chance! "
Les tâches
Tâche 1: table de multiplication
Étant donné un nombre n
en entrée, affichez une table de multiplication pour les entiers positifs dans la plage [1, n]
. n
sera dans la plage [1, 12]
. Tous les nombres doivent être alignés à gauche dans le tableau. Utilisez le caractère x
pour le coin supérieur gauche.
Exemples:
n=4
x 1 2 3 4
1 1 2 3 4
2 2 4 6 8
3 3 6 9 12
4 4 8 12 16
n=10
x 1 2 3 4 5 6 7 8 9 10
1 1 2 3 4 5 6 7 8 9 10
2 2 4 6 8 10 12 14 16 18 20
3 3 6 9 12 15 18 21 24 27 30
4 4 8 12 16 20 24 28 32 36 40
5 5 10 15 20 25 30 35 40 45 50
6 6 12 18 24 30 36 42 48 54 60
7 7 14 21 28 35 42 49 56 63 70
8 8 16 24 32 40 48 56 64 72 80
9 9 18 27 36 45 54 63 72 81 90
10 10 20 30 40 50 60 70 80 90 100
Tâche 2: RMS ordinale
Étant donné une chaîne de caractères ASCII, affichez la moyenne quadratique moyenne de leurs ordinaux ASCII. La chaîne ne contiendra jamais d'octet NULL (ordinal 0).
Exemples:
Input: The Interview: The Front Nine
Output: 95.08290393488019
Input: `1234567890-=qwertyuiop[]\asdfghjkl;'zxcvbnm,./
Output: 91.38101204135423
Tâche 3: Mouvement de projectile
Compte tenu de la vitesse et de l'angle initiaux avec l'horizon d'un projectile tiré depuis le sol, émettez la distance horizontale qu'il parcourra avant l'atterrissage. La vitesse initiale sera donnée en mètres par seconde, l'angle sera donné en degrés et la distance en mètres. Supposons la gravité terrestre ( g=9.81 m/s/s
) et ignorez les effets relativistes. Pour des raisons de ce problème, vous pouvez supposer que la Terre est plate (vous n'aurez pas besoin de prendre en compte la courbure de la Terre lors de vos calculs). L'angle donné sera dans la plage [0, 90]
. Votre réponse doit être précise à au moins deux décimales (l'arrondi est autorisé).
Exemples:
velocity=50, angle=45
Result: 254.84 (rounded)
velocity=10, angle=60
Result: 8.82798576742547
Tâche 4: etaoin shrdlu
Étant donné une chaîne de caractères ASCII imprimables non nuls (ordinaux dans la plage [32,127]
), sortez la chaîne, avec ses caractères triés par leurs fréquences dans l'ordre décroissant. En cas d'égalité, ordre par ordinal ASCII, croissant.
Exemples:
Input: "Hello, World!"
Output: "llloo !,HWder"
Input: "Programming Puzzles and Code Golf"
Output: " oooPPaaddeeggllmmnnrrzzCGfisu"
Tâche 5: indice de Fibonacci
Étant donné un nombre, déterminez s'il s'agit d'un nombre de Fibonacci et, s'il l'est, sortez son index (à partir de 1) dans la séquence. S'il ne s'agit pas d'un nombre de Fibonacci, sortez 0. Dans le cas de 1, qui est dans la séquence deux fois, sortez l'occurrence la plus ancienne (index 1).
Exemples:
Input: 1
Output: 1
Input: 144
Output: 12
Input: 4
Output: 0
Tâche 6: Anagrammes
Étant donné trois chaînes de lettres anglaises minuscules ( [a-z]
), sortez une chaîne qui utilise toutes les lettres de la première chaîne, commence par la deuxième chaîne et se termine par la troisième chaîne. Si une telle chaîne ne peut pas être construite, affichez une chaîne vide. Les chaînes d'entrée auront toujours au moins une lettre. Le "milieu" de la chaîne de sortie (entre la chaîne de préfixe et de suffixe) peut être vide, si les chaînes de préfixe et de suffixe utilisent ensemble toutes les lettres de la chaîne source.
Exemples:
Input: geobits bi es
Possible output: bigtoes
Input: mariatidaltug digital trauma
Output: digitaltrauma
Input: mego go lf
Output: (empty string)
Étape 7: Remplir les blancs
Étant donné une liste de chaînes et un caractère de remplissage, affichez le résultat du remplissage de toutes les chaînes à la longueur de la chaîne la plus longue avec le caractère de remplissage, trié par ordre croissant selon la longueur d'origine des chaînes, en préservant l'ordre d'origine dans le cas. d'une cravate. Vous devriez être capable de gérer des listes de n'importe quelle longueur finie, contenant des chaînes de n'importe quelle longueur finie, limitées uniquement par des contraintes de mémoire.
Exemples:
Input: ["hello","world","this","is","a","test"], 'x'
Output: ["axxxx","isxxx","thisx","testx","hello","world"]
Input: ["I'm","a","lumberjack","and","I'm","okay"], '!'
Output: ["a!!!!!!!!!","I'm!!!!!!!","and!!!!!!!","I'm!!!!!!!","okay!!!!!!","lumberjack"]
Tâche 8: apporter des changements
Étant donné un nombre dans la plage [0.01,0.99]
, affichez le nombre de chacune des 4 pièces américaines standard qui devraient être utilisées pour représenter cette valeur de sorte que le nombre total de pièces soit minimisé. L'entrée aura toujours exactement 2 places derrière la décimale.
Référence de la valeur de la pièce:
Penny: 0.01, Nickel: 0.05, Dime: 0.10, Quarter: 0.25
Exemples:
Input: 0.75
Output: [0,0,0,3]
Input: 0.23
Output: 3 pennies, 0 nickels, 2 dimes, 0 quarters
Tâche 9: fusion de plages
Étant donné une liste finie de 2 tuples contenant des entiers qui représentent des plages, affichez le résultat de la fusion de toutes les plages chevauchantes ou adjacentes. Toutes les plages auront au moins une longueur de 1 et la valeur de départ sera toujours inférieure à la valeur de fin. L'ordre de sortie n'a pas d'importance.
Exemples:
Input: (2,3), (4,5), (6,9), (0,7)
Output: (0,9)
Input: (-3,4), (2,5), (-10,-4)
Output (-10,-4), (-3,5)
Input: (2,3), (5,6), (6,8)
Output: (5,8), (2,3)
Règles
- C'est le code-golf , donc la réponse la plus courte (en octets) l'emporte.
- Votre score sera la somme du nombre d'octets pour toutes vos solutions.
- Les failles standard sont interdites.
- L'entrée et la sortie peuvent être effectuées de la manière considérée comme standard pour votre langue.
- Vous pouvez écrire des programmes ou des fonctions complets pour chaque défi, et pouvez échanger entre les deux à travers les défis.
- Vous devez utiliser le même langage pour tous les défis. Si les différences de version sont suffisamment importantes pour qu'elles soient généralement considérées comme des entrées distinctes dans les défis, vous devez utiliser la même version tout au long. Par exemple, si vous utilisez Python, vous devez utiliser Python 2 ou Python 3 pour tous les défis.
- Vous devez résoudre tous les défis. Les réponses qui ne résolvent que certains des défis seront considérées comme non compétitives.
- Vous pouvez utiliser des langages intégrés ou des bibliothèques standard.
Classement
L'extrait de pile au bas de cet article génère le classement à partir des réponses a) en tant que liste des solutions les plus courtes par langue et b) en tant que classement général.
Pour vous assurer que votre réponse apparaît, veuillez commencer votre réponse avec un titre, en utilisant le modèle Markdown suivant:
## Language Name, N bytes
où N
est la taille de votre soumission. Si vous améliorez votre score, vous pouvez conserver les anciens scores dans le titre, en les rayant. Par exemple:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Si vous souhaitez inclure plusieurs nombres dans votre en-tête (par exemple, parce que votre score est la somme de deux fichiers ou que vous souhaitez répertorier les pénalités de drapeau d'interprète séparément), assurez-vous que le score réel est le dernier numéro de l'en-tête:
## Perl, 43 + 2 (-p flag) = 45 bytes
Vous pouvez également faire du nom de la langue un lien qui apparaîtra ensuite dans l'extrait de code:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes