Quelque temps après cet incident …
Il y a quelques - uns d' entre nous qui sont contre cet ordre souillant de jQuery. C'est une présence profane, dont il faut exterminer . Je vous invite donc, fidèles au Nouveau Royaume de Réforme, à créer un programme qui éliminera cette résistance. Tout le code doit être validé et recherché pour TOUTE et CHAQUE trace de jQuery. Et, bien sûr, votre soumission doit être courte (il y a eu une autre réduction de budget, et malheureusement, c'était dans le département de stockage). Et il ne peut pas avoir de caractères souillés.
Pour vous aider à la vitesse, un caractère souillant est l' un des caractères suivants: jJqQuUeErRyY$x0
. Comme cela a été dit, l'utilisation de ces caractères est strictement interdite, même dans votre propre programme. Alors ne les utilisez pas. AUSSI nous sommes d'accord avec les signes du dollar en chiffres. Donc, tout le formulaire n+(.nn)*$
est OK (vous ne devriez toujours pas utiliser 0
.)
Votre programme / code / etc. doit valider un programme d'entrée. S'il contient des caractères de profanation , vous devez sortir This programmer is guilty of Heresy. He must be burnt.
; si aucun de ces caractères n'est trouvé, vous devez sortir Program validated. Clearance level 2 given.
.
Bonus et pénalités
- J'admire personnellement le personnage le personnage
~
. Pour chaque deux que vous utilisez, je vous donne -1 octet. (c'est-à-dire que tous les autres~
sont gratuits.) - Vous pouvez choisir précisément un caractère parmi les exclus; vous pouvez ensuite utiliser ce caractère dans tous ses cas, CEPENDANT: il y a une pénalité initiale de + 50% octets, puis une pénalité de +5 octets pour chaque instance de ce caractère.
- -90% si vous n'utilisez aucun des caractères adjacents à
jquery
(juste pour être super sûr) dans votre code source. Ce sont (en plus):iIkKpPsSzZXdDfF
- -20% si, lorsque vous recevez une chaîne non valide, ainsi que la sortie du texte susmentionné, vous remplacez tous les caractères non valides
-
par une exécution de 1,*
une exécution inférieure à 10 et[]
une exécution plus longue. - -50 octets si vous ne trouvez pas
JavaScript/i
ouSimplex
comme ayant des caractères souillés.
Implémentation de référence
function validate() {
var str = document.getElementById("input").value;
var str2 = str.replace(/[jquery0]/gi,"").replace(/x/g,"").replace(/(\d+\.*\d*\d*\$)|\$/g,"$1"); // thanks Doorknob!
var val;
if (str2 == str) {
val = "Program validated. Clearance level 2 given.";
} else {
val = "This programmer is guilty of Heresy. He must be burnt.";
}
document.getElementById("output").value = val;
}
textarea{width: 600px;}
<textarea id="input" onkeyup="validate()"></textarea>
<br><br>
<textarea id="output" disabled></textarea>
la source
Ee
restriction sera difficile ...Those who are blind cannot see, those who are deaf cannot speak. Those who use jQuery cannot be tolerated.
Réponses:
CJAM,
16013913.4 octetsCe qui précède est un hexdump qui peut être inversé avec
xxd -r -c 18
. Essayez-le en ligne.Le code lui-même comprend 142 octets . Il contient un total de seize caractères ~ ( -8 octets ), mais aucun caractère adjacent à jQuery ( -90% ).
Comment ça fonctionne
Le match
n+(.nn)*$
se résume vraiment à un chiffre suivi d'un signe dollar .Tout d'abord,
ajoute -94 à tous les points de code de cette chaîne et évalue le résultat.
Le code exécuté est:
la source
Minkolang 0.9 , 346-3 = 343 octets
Programme le plus long à ce jour.
Essayez-le ici.
Explication
La première ligne fait trois choses: 1) constituer la pile avec les caractères interdits, 2) mettre un élément indispensable
x
au bon endroit (l'espace à la fin), et 3) parcourir l'entrée en sautant sur la ligne appropriée .Les deuxième et quatrième lignes font la même chose: remplacez chaque espace de la ligne suivante par le caractère approprié. Ils sautent à la ligne suivante à la fin.
Les troisième et cinquième lignes poussent simplement la chaîne requise sur la pile et l'impriment.
la source
PHP, (204 * 1,5 + 5) * .1 = 31,1
Ce vidage a été effectué à l'aide de gnuwin32
hexdump
. Inverser avechex2bin
.(Je suis confus quant à l'ordre dans lequel appliquer le bonus / la pénalité, j'ai donc supposé que l'ordre était écrit.)
Utilise le caractère "e" dans eval. Grâce à la magie d'inversion des chaînes PHP, cela parvient à éviter tous les autres caractères jquery et near-jquery.
La chaîne inversée contient ce code (formaté pour plus de clarté)
Étant donné que ce code n'a pas d'instruction de retour,
eval
renvoie null et<?=eval
ne fait donc rien. (C'est juste pour éviter<?php
)la source
[jquery$x0]
et[1-9]+(\.[1-9]{2})?\$
. Soit dit en passant, le capitalX
ne doit pas être considéré comme un caractère souillant, donc la deuxième expression régulière doit être remplacée par'/[1-9]+(\.[1-9]{2})?\$|X/'
.> <> , 184 octets
Cela peut être un peu plus court avec les non imprimables, mais voici une version imprimable juste pour le plaisir. Ne fonctionnera pas avec l'interpréteur en ligne car il le met en dehors de la boîte à code.
Ce programme code les deux chaînes comme
qui est chaque point de code soustrait de 155. De même,
code les caractères interdits, avec des points de code soustraits de 160.
La dernière ligne définit simplement les coordonnées
(forbidden char, 10)
à 1, formant une table de recherche. La quatrième ligne vérifie ensuite chaque caractère d'entrée à l'aide de la table de recherche, émettant le message d'hérésie si 1 autre continuation. Sur EOF, nous montons pour afficher le message d'autorisation.la source
"Javascript" 840 * 2 + 14 * 5 = 1750;)
Je suis tellement proche, j'ai juste besoin de trouver un moyen de me débarrasser des r
La pile ne me laisse pas coller le code ici car il y a plusieurs caractères ASCII non imprimables dans les chaînes, alors voici un hexdump de xxd
la source