Beaucoup d'entre vous ont peut-être déjà interagi avec des Russes russes sur Internet, et un sous-ensemble d'entre vous a peut-être remarqué la méthode un peu étrange dont ils disposent pour s'exprimer.
par exemple удали игру нуб)))
là où les )))
sont ajoutés pour mettre l'accent sur l'énoncé précédent, j'ai travaillé sur une théorie selon laquelle le rapport de )
'au reste de la chaîne est directement proportionnel à la quantité d'emphase implicite, bien que je trouve souvent difficile de calculer le rapport. à la volée, comme je tente également de faire face à une série d'abus, je voudrais donc le code le plus court possible pour m'aider à calculer ce que devrait être la chaîne résultante, pour une valeur d'enthousiasme comprise entre 0 et 500%, compte tenu de l'original , chaîne peu enthousiaste, cela facilitera grandement mes recherches car je n’aurai pas à taper des scripts volumineux à chaque fois que je souhaite tester mon hypothèse.
Alors, le challenge:
écrivez un programme complet ou une fonction qui, avec deux arguments, une chaîne de longueur inconnue et un nombre, au format entier (entre 0 et 500) ou au format décimal (entre 0 et 5, avec 2 points de précision)
- retourne / affiche la chaîne originale, suffixée d'un nombre de
)
' - le nombre correspondra au rapport entre le nombre saisi et la longueur de la chaîne.
- Donc, si le nombre 200 ou 2.00 a été fourni, 200% de la chaîne doit être suffixé comme
)
's - le nombre de parenthèses arrondies à des décimales importe peu.
- Un script est requis pour prendre en charge les caractères ASCII imprimables.
- ne doit prendre en charge qu’un seul format numérique de votre choix.
Exemples:
"codegolf" 125 = codegolf))))))))))
"codegolf" 75 = codegolf))))))
"noob team omg" 0.5 = noob team omg))))))
"hi!" 4.99 = hi!)))))))))))))))
Exemple de code (PowerShell) (avec entrée décimale):
Function Get-RussianString ([string]$InputStr,[decimal]$Ratio){
$StrLen = $InputStr.Length
$SuffixCount = $StrLen * $Ratio
$Suffix = [string]::New(")",$SuffixCount)
return $InputStr + $Suffix
}
Get-RussianString "codegolf" 0.5
codegolf))))
C'est du code-golf, donc le code le plus court gagne!
)
pour insister comme un!
? Est-ce un problème d'encodage?!
s, mais ils les tapent tels quels , ce n'est pas très commun, mais c'est assez emblématique.)
est réduit émoticône:)
. Il est utilisé très commun entre les jeunes pour autant que je sache.)
n'est pas une emphase, c'est simplement le smiley. Autant que je sache, il est plus difficile de taper:
avec une disposition de clavier russe, donc ils sourient sans yeux.:
sur une mise en page russe (КЕН) que de taper^
sur un QWERTY. Mais en effet, le)
est une version réduite de:)
. Il est beaucoup plus facile d'appuyer sur la touche Maj-0 et de la maintenir enfoncée que d'alterner plusieurs fois les touches.Réponses:
Gelée , 7 octets
Essayez-le en ligne!
Utilise le format décimal.
Comment?
la source
Perl 6, 21 octets
la source
Common Lisp,
595250Des parenthèses? Je suis dedans.
Détails
Chaîne de contrôle de format
~a
: joli argument d'impression (ici la chaîne donnée)~v@{...~}
: bloc d'itération, limité à V itération, où V est pris comme argument, à savoir l'(* ...)
expression. L'itération est censée parcourir une liste, mais lorsque vous ajoutez le@
modificateur, la liste est la liste d'arguments restante de la fonction de formatage. Il doit y avoir au moins un élément dans la liste itérée (sinon nous sortons, sans tenir compte de V). C'est pourquoi il existe un argument supplémentaire pour formater (0).Comme aucun élément de la liste n'est consommé par le format, la boucle est infinie mais heureusement, elle est également délimitée par V, c'est-à-dire le nombre de parenthèses à imprimer.
Edit: merci à Michael Vehrs d’avoir fait remarquer qu’il n’était pas nécessaire d’arrondir l’argument numérique (la question permet de tronquer / arrondir comme on veut, donc le comportement par défaut fonctionne ici).
la source
format
accepte un argument décimal àv
. Peut-être que Common Lisp aussi?format
accepte ...", car Scheme standardformat
ne supporte pas~r
; et Guileformat
suit l'exemple de Common Lisp.JavaScript ES6,
383130 octetsla source
s=>n=>s+')'.repeat(s.length*n)
(il serait alors appelé ainsif("hi!")(4.99)
)Python 2 , 29 octets
s dans la chaîne, p est le pourcentage (entier).
Essayez-le en ligne!
la source
05AB1E ,
9 à8 octetsEssayez-le en ligne!
Fonctionne pour les nombres entier et décimal, ordre des arguments:
f(String, Double)
la source
ï
est fait implicitement pour l'×
argument float.Python, 30 octets
Utilise l’entrée décimale.
Essayez-le en ligne!
la source
Pyth, 8 octets
Test en ligne! Prend d'abord le taux d'excitation, puis la corde pour s'enthousiasmer.
Explication:
la source
PowerShell , 33 octets
Essayez-le en ligne!
Prend en charge le format décimal.
la source
R,
624642 octetsFonction anonyme qui prend des chaînes
a
et des décimalesn
, affiche la sortie sur stdout.la source
Pyth, 9 octets
Prend deux lignes d’entrée: chaîne et ratio (décimal).
Essayez-le sur pyth.herokuapp.com
Explication
A
dénote le premier argument d'une fonction,B
son second argument.la source
TI-Basic, 33 octets
Prend une entrée décimale.
la source
Perl 5, 29 octets
(Le nombre est le premier argument, la chaîne est la seconde.)
Essayez-le en ligne!
la source
CJam , 9 octets
Essayez-le en ligne!
Chaîne d'entrée sur la première ligne, rapport d'emphase compris entre 0 et 5 sur la seconde.
Explication
la source
MATL,
11108 octetsCette solution utilise la forme décimale de la deuxième entrée
Essayez-le en ligne!
Explication
la source
sB ~, 17 octets
A expliqué:
Les parenthèses sont fermées automatiquement
Voici la sortie du compilateur, si cela vous intéresse:
Cette version du compilateur a été écrite le 27/01/2017 à 23h12, soit quelques minutes après la publication de cette question. Voici donc une version qui fonctionne sur la version la plus ancienne du compilateur, écrite une heure plus tôt:
iS$,N?S$;')'*(N*l(S$))
(22 octets)la source
PostgreSQL, 102 octets
Détails
Utilise le format de saisie entier.
Ceci a simplement pour effet d'ajouter à la longueur cible la chaîne d'entrée avec des parens.
Appelé avec
la source
Bash + coreutils, 45 octets
Essayez-le en ligne!
Entrée entière.
la source
echo $1`jot -b \) -s '' $[${#1}*$2/100]`
40 octets :) essayez-leGroovy, 27 octets
Solution simple
Programme de test:
la source
Rebol, 39 octets
la source
Clojure, 40 octets
Solution assez ennuyeuse:
Réduit simplement la
str
fonction sur une liste de parenthèses fermantes avec une chaîne comme paramètre initial.Voir en ligne: https://ideone.com/5jEgWS
Solution pas si ennuyeuse (64 octets):
Convertit la chaîne d'entrée à un symbole (pour se débarrasser des guillemets) et applique de façon répétée la fonction
list
sur elle générer suite infinie comme ceci:(a (a) ((a)) (((a))) ... )
. L'nth
élément Takes le convertit en chaîne et remplace toutes les parenthèses ouvrantes par rien.Voir en ligne: https://ideone.com/C8JmaU
la source
#(.replaceAll(str(nth(iterate list %)(*(count %)%2)))"[(\"]""")
1 octet de moins (yay). Je voulais faire de la composition mais je ne peux pas l'obtenir en dessous de 70 octets.")"
pour\)
enregistrer un octet.SimpleTemplate, 92 octets
Prend la chaîne en tant que premier paramètre et le "ratio" en tant que second.
Le rapport est compris entre 0 et 5, avec 2 décimales.
Comme vous pouvez le constater, ce n'est pas optimal.
Le 2
{echo}
il pourrait être réduit à 1.En raison d'un bogue dans le compilateur, ce code ne peut pas être réduit beaucoup plus loin.
Ungolfed:
Si aucun bug n’existait, le code ressemblerait à ceci, 86 octets:
la source
C # Interactive,
77 à67 octetsC # interactive est doux.
la source
using System;
ou pleinement qualifierMath
. Aussi, vous ne savez pas si vous pouvez le faire en interactif, mais vous pouvez compilerFunc<string, Func<int, string>>
pour sauvegarder des octets, c'ests=>p=>s+new...
Math.Round
lancer unint
appel téléphoniqueFloor
Floor
Ceiling
SmileBASIC, 29 octets
la source
3*4.99
=14.97
, seulement14
ou15
serait acceptable comme réponses, la version de 29 octets devrait fonctionner correctement, désolé!Gol> <> (Golfish), 17 octets
Essayez ici .
La ligne du haut lit les caractères (
i
) jusqu'à trouver une nouvelle ligne (ASCII 10a
), puis diminue (v
).Ensuite, nous ignorons un caractère (la nouvelle ligne) avec
~
, poussons la longueur de la pile (l
), lisons un float (I
), multiplions les deux et répétons (R
) poussons le caractère ")" à plusieurs reprises. Enfin, inversez la pile (r
), sortez-la et arrêtez (H
).la source
PHP, 50 octets
prend une chaîne et un nombre décimal comme arguments de ligne de commande; coupe le rembourrage. Courez avec
-r
;panne
la source
Ruby, 25 octets
J'utilise des lambdas . Le programme de test serait quelque chose comme:
la source
Clojure, 68 octets
Une fonction anonyme qui accepte les entrées décimales.
Littéralement le premier programme Lisp que j'ai écrit! Je m'amuse déjà.
la source
#(...)
et vous en débarrasserprint
(puisque les retours de fonction devraient être acceptables). Vous pouvez changerreduce
pourapply
pour lastr
fonction et vous pouvez changer")"
pour\)
, ce qui fait la même chose. Ainsi, le code final devrait être:#(str %(apply str(repeat(*(count %)%2)\)))))
.(#(...) "codegolf" 125)
devez ajouter 125 % de la longueur de "codegolf" au lieu de 125 fois la longueur de "codegolf". Ainsi, le programme fixe serait:,#(str %(apply str(repeat(*(count %)%2 1/100)\))))
ce qui correspond à 49 octets.C ++ 14, 43 octets
Comme lambda sans nom modifie son entrée, supposant
s
est similaire àstd::string
(a.append(int,char)
et supposantp
être de type virgule flottante:Usage:
la source
Haskell , 37 octets
Essayez-le en ligne! Usage:
"codegolf" ! 125
Une version qui prend un nombre décimal: (41 octets)
Essayez-le en ligne! Usage:
"codegolf" ! 1.25
la source