Je sais qu'il y a eu beaucoup de défis concernant "les deux meilleurs golfeurs selon le code au monde", mais celui-ci est un peu plus unique, puisqu'il fait partie du premier tour d'une série de (futurs) défis les impliquant.
Votre tâche consiste à écrire un programme ou une fonction renvoyant deux chaînes ASCII différentes, sans espace, correspondant à celle qui a plus de réputation au moment où le programme est exécuté, entre Dennis ♦ et Martin Ender ♦ . La difficulté réside dans le fait que vous devez générer la chaîne exacte "tie" dans le cas où la réputation est identique (peu probable), et que les deux chaînes ASCII autres que des espaces blancs mentionnées ci-dessus doivent être différentes de "tie" * .
Aucune entrée ne peut être prise, tels que les noms d'utilisateur ou les identifiants d'utilisateur. Comme d'habitude, les raccourcisseurs d'URL sont interdits, de même que les failles communes.
Exemples:
Let the chosen string for Dennis be "D" and the chosen one for Martin Ender be "M" (should be specified)
If Dennis' rep > Martin Ender's rep => D
If it's the other way around => M
If it's a tie => tie
IMPORTANT! Voter sur les messages de Dennis & Martin dans le seul but de créer une égalité afin de tester les solutions ci-dessous constitue un vote ciblé qui est interdit sur le réseau Stack Exchange. Si vous souhaitez vérifier qu'une solution génère correctement les résultats,
tie
modifiez les identifiants qu'il contient par ceux de deux utilisateurs que vous savez liés. Voir ce post Meta pour plus de détails.
* Je pense que personne n'aurait utilisé ça, de toute façon
la source
Réponses:
05AB1E ,
6564 octetsCode:
Utilise le codage 05AB1E .
Explication:
•в=6{•
convertit le nombreв=6{
de la base 255 à la base 10, ce qui donne 1201208478 . La première moitié étant l'ID de Dennis (12012) et la seconde moitié étant l'ID de Martin (8478). Diviser en morceaux de 5 en utilisant5ô
pour obtenir le tableau suivant:Heureusement, nous pouvons laisser le zéro initial de l'ID de Martin, puisque cela fonctionnera toujours (vérifiez le lien avant de cliquer pour voir le zéro principal).
Nous
vy
parcourons maintenant ce tableau en utilisant et construisons la chaîne suivante à partir de ce code 05AB1E:Considérant que
ÿ
l’élément actuel de l’itérateur (utilisant l’interpolation de chaîne) est à essayer en ligne!Une fois le lien
.w
créé, toutes les données du lien sont lues, ce qui génère une énorme quantité de texte. Pour gratter la réputation de cela, nous devons diviser la chaînetitle="reputation"
. Ou dans une version plus compressée:’„Ö="ˆ"’
. Séparez ce morceau de chaîne (avec¡
) et obtenez le deuxième élément (avec1è
) et conservez les 100 premiers caractères (avecт£
).Maintenant, notre texte gratté ressemble un peu à ceci:
Cette partie est facile, nous enlevons simplement tout ce qui reste sauf les chiffres pour rester le numéro de réputation, pour lequel nous avons un builtin (
þ
). Nous terminons la boucle et enveloppons tout dans un tableau}})
.Enfin, nous pouvons traiter les numéros de réputation:
Ce qui entraîne soit
D
,M
soittie
.la source
1è) and keep the first **100 characters** (with т£
. " Est-elle supposée être complètement en code-blocs, ou devrait-elle être " deuxième élément (avec1è
) et conserver les 100 premiers caractères (avecт£
). " À la place? Je suppose une faute de frappe, mais si c'est supposé être comme ça, je suis confus ..Dennis: 140,033
;Martin: 140,003
, mais j’ai essayé votre code ici tio.run/nexus/05ab1e#@/… , cédétie
. Ne devrait-il pas sortir à laD
place?.w
nécessite un accès Web, qui est limité sur TIO (il exécute 05AB1E en mode sans échec). Dans l'interprète hors ligne, cela devrait fonctionner.PowerShell v3 +,
14712311910310196 Octets24 octets enregistrés en utilisant une sortie vrai / faux au lieu des noms.
A sauvé 4 autres en restructurant les derniers contrôles.
sauvé 16 en obtenant seulement les réputations des deux utilisateurs de la demande, évite de devoir utiliser
|% r*n
plusieurs fois, signifie également que nous pouvons nous débarrasser d'un million de crochets et de deux variables inutiles.-2 grâce à TessellatingHeckler - l'utilisation d'un caractère d'échappement au lieu de deux guillemets doubles pour l'URL, a également supprimé
@
le tableau qui n'était pas nécessaire (oopsie)utilisé un
.ToString
tour étrange que je ne savais pas existé jusqu’à présent recommandé par TessellatingHeckler -5, et finalement inférieur à 100.Version qui renvoie les noms:
cela semble assez compliqué à cause du raccourcissement des noms de paramètres.
n'importe où
|% r*n
apparaît nous obtenons leReputatioN
, et|% d*
est leDisplay_name
utilise
Invoke-RestMethod
(aliasirm
) pour interroger l'API, stocke le résultat nomméItems
(obtenu avec|% I*
) dans les deux variables$a
&$b
, une pour chaque golfeur, l' astuceToString
(|% T*g
) donne l'une des valeursD
,M
ouTie
si le nombre est impair / pair / zéro.la source
103! = 9.902900716486180407546715254581773349090165822114492483005280554699... × 10^163
long bytes ..? : PToString
travailler comme ça avec +/- chiffres, se souviendra pour l'avenir.Python 2 , 160 octets
Pas la réponse la plus courte en Python, mais la plus courte jusqu'à présent qui ne repose sur aucune hypothèse.
Imprime
1
si Martin a plus de représentant,-1
si je le fais.la source
JavaScript (ES6),
167156146144141132 132103 octetsStupide
fetch
et sonPromise
enchaînement stupide et coûteux !En supposant, comme autorisé actuellement, Dennis & Martin seront toujours les 2 utilisateurs les mieux classés. Doit être exécuté à partir du niveau racine de
api.stackexchange.com
. Retourne unPromise
objet (comme cela est maintenant autorisé par consensus ) contenanttie
ou l'objet JSON pour celui qui a le plus de représentants à ce moment. Si l'objet JSON n'est pas considéré comme une sortie valide, ajoutez 5 octets pour.link
.link
plutôt que la première lettre de ladisplay_name
, ce qui leur permet également de mieux résister à l'avenir, car ils changent de nom d'utilisateur pour commencer par la même lettre!L'essayer
Alternative
S'il arrive un moment où Dennis et Martin ne sont pas au sommet et que nous voulons toujours savoir qui a le plus de représentants entre eux, nous aurions besoin de ce qui suit, au coût de 10 octets supplémentaires.
la source
.display_name[0]
à.display_name
, ou une alternative encore plus courte qui est encore unique pour les deux:.link
. ;) Ou juste le JSON entier, mais je ne suis pas sûr que ça rentre dans le popup d'alerte.link
, cependant, j'utilisais une requête d'API filtrée pour ne renvoyer que les informations dont j'avais besoin.alert
un objet JSON, cependant, ne fera que s'afficher[object Object]
.Python 3,
160157151 octets-3 octets grâce à @KevinCruijssen
Imprime un lien vers l'utilisateur ayant plus de réputation
Suppose qu'ils sont sur les n ° 1 et n ° 2
Sans faire d'hypothèses, Python 2, 157 octets :
la source
Python,
226225221 bytesJ'ai l'impression que c'est trop long.
Imprime
"True"
si Martin a plus de représentant que Dennis,"False"
si Dennis a plus de représentant que Martin et"tie"
s'ils ont le même (théoriquement. Je ne peux pas tester ceci: P).https
->http
pour 1 octet grâce à @KevinCruijssen!re as r, r.sub
->re, re.sub
pendant 4 octets grâce à @ovs!la source
https
tohttp
? I know PPCG is completely https now, but perhaps it auto-directs to HTTPS when you navigate to HTTP in Python, just as it does in a browser?re as R
. Just useimport requests as r,re
andre.sub
cmp
function to save some bytes by replacing the last three lines with something likeprint['tie',0,1][cmp(f('8478'),f('12012'))]
PHP, 167 Bytes
prints -1 for Dennis , 1 for Martin Ender. tie in case of a tie
la source
Python 2,
228223204199 bytesI did this on a mobile hotspot so... it's not great...
Assumes both of them will always be in the same hundred thousand.Doesn't assume anything now. :DPrints
True
if Dennis has more reputation than Martin,False
otherwise andTie
if they are... tied.la source
Bash + jq,
140133 bytesFormatted and explained
First, we
curlw3m the API(and use:--compressed
, or short--com
to un-gzip)That's some JSON. Notice the order ist stable, not based on reputation. JQ then processes the JSON, which is what it's made for.
We use
1/x
above to generate an division-by-zero error when min==max, so in a tie situation. The||echo tie
in bash catches that.Note that a warning is printed on stderr by JQ in that case, but we consider only stdout the actual result of the program ;)
la source
w3m
instead ofcurl --com
to save a few bytes. Also, I think it's worth mentioning that this requires jq 1.5, as jq 1.4 didn't raise an error for division by zero.Stackexchange API Data Explorer,
184180 bytesThanks to @Kevin Cruijssen for -4 bytes
Prints 1 for Dennis and 2 for Martin
Since i only yesterday learned about the SEADE this should be very beatable.
Try it here
la source
'D'
and'M'
to0
and1
.