Je dirais surtout que même IE11 l'a supprimée cette abomination !
Je dirais surtout que même IE11 l'a supprimée cette abomination !
Je l'ignore, ça passe toujours sur Chrome en tout cas. Mais c'est vrai que toutes les méthodes DOM font des kilomètres, document.getElementsByTagName, document.querySelectorAll...
Bon pour que cet énoncé soit faisable, je propose de passer document.querySelectorAll en paramètre :
Comme ça Bovino pourra dormir sur ses deux oreilles, et je peux écrire mon code sous la barre des 140 caractères
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 (function negatifPage($){ })(function(s){ return document.querySelectorAll(s); })
137 car
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 (function negatifPage($){ for(i=0;s=getComputedStyle(e=$('*')[i++]);)for(p in s)if(/(^c|dC)olor$/.test(p))e.style[p]=s[p].replace(/\d+/g,function(n){return 255-n}) })(function(s){ return document.querySelectorAll(s); })
J'ai donné +1, non pas pour le code, mais pour l'adaptabilité de l'énoncé du problème au code. Si on reprend depuis le début, on voit qu'il y a eu pas mal d'accommodements, mais l'essentiel y est.
Si tu penses que c'est facile de toujours trouver de bons énoncés du premier coup
C'est pour ça que je vous ai incité à m'envoyer vos propositions (et merci à Kaamo et Barsy au passage). Le précédent était trop court, celui-ci trop long... le prochain sera le bon ! En attendant je suis certain qu'il reste de nombreuses améliorations sur celui-ci.
Comment ça trop long ?
65 caractères
*Bovino style*
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 (function(){ document.styleSheets[0].addRule('html','-webkit-filter:invert()') })()
Un ptit bonus pour comptabilité Opéra et IE9+ (en 102 caractères), en utilisant invert de outline-color (non implémenté sur les autres navigateurs) :
Pour Firefox, il ne semble pas connaitre addRule mais -moz-filter:invert() doit pouvoir fonctionner.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 (function(){ document.styleSheets[0].addRule("body:before","content:'';position:fixed;outline:2999px solid invert") })()
ps : pour inverser dans l'autre sens il faut ajouter un 0% : -webkit-filter:invert(0%).
EDIT : j'avais mal lu l'énoncé
Interdiction d'utiliser cette propriété pour les autres éléments que les images
Oui j'avais anticipé la plaisanterie
Là j'essaie de me débarasser du if() et d'utiliser autre chose qu'un String.replace, mais je ne trouve rien de plus court...
Moi non plus ... pas faute d'avoir cherché pourtant.
même si tu ne passes pas en paramètre la méthode tu obtiens un 161 caractères ce qui est tout à fait honorable compte tenu du sujetBon pour que cet énoncé soit faisable, je propose de passer document.querySelectorAll en paramètre :
pour ma part... j'apprends beaucoup !
si je comprends bien :
un code "synthétique", c'est de l'intelligence "artificielle", non ?
Big UP !
Je suis pas sûr de te suivre jreaux62
Au passage, une présentation en anglais sur la minification en Javascript très sympa que je viens de trouver : https://docs.google.com/presentation...nt#slide=id.i0
Code : Sélectionner tout - Visualiser dans une fenêtre à part "vous0connaissiez0ça0?".split(0)
Houla ! Ce n'est pas moi qu'il faut suivre.... au contraire !
C'est moi qui essaie de suivre...
Je faisais juste le lien entre "synthétique" et... "artificielle"
Je comprends surtout que vous vivez sur une "autre planète" !
celle là je doit admettre que je ne la connaissait pas, gain 2 quand même.Envoyé par SylvainPV
Je reprendrais le lien à tête bien plus reposée, il y a du gain dans l'air même si beaucoup a déjà été abordé dans les exercices quetuvous avez proposés.
J'avais survolé le doc il y a quelques temps (quand j'avais testé le codage en 6 caractères). D'ailleurs, c'est (encore) par le créateur de JSFuck (pour ceux qui ont suivi le codage du simulateur de Sylvain en 6 caractères).
En fait, toutes ces réalisations sont à lire/voir à ce Martin Kleppe (surtout son doc sur le binaire et les "bitwise operators")
edit : et pour NoSmoking, il y a même du Gogle Map API
c'est impressionnant comme il y a des gens qui ont du temps pour ce genre de futilitésEnvoyé par Kaamo
Bon pour le dixième énoncé je propose d'innover un peu.
Numéro 10: thème libre
A chacun de proposer un code de moins de 140 caractères remplissant la fonction de son choix. Les mêmes règles que les énoncés précédents s'appliquent, avec quelques précisions en plus :
- vous pouvez déclarer et passer ce que vous voulez comme arguments à votre fonction du moment qu'il s'agit de variables dont dépend le résultat de la fonction (un nombre, une phrase, un élément HTML...)
- vous pouvez accompagner le code de plusieurs cas d'utilisations ou d'une page de test
- ce n'est pas un concours, plus un étalage des talents et idées de chacun. Essayez quand même de récolter un max de pouces verts et d'en mettre aux créations des autres
- vos créations doivent miser sur l'originalité, la technicité et la qualité de présentation. Les explications et commentaires sur votre code sont les bienvenus
Si vous cherchez de l'inspiration, je vous suggère de voir le concours js1k. En 140 caractères on ne fait pas grand chose, mais on n'a pas besoin de grand chose pour en mettre plein la vue
Pas encore eu le temps de me pencher sur la chose mais j'ai quelques petites idées ... notamment le tic tac toe (ou sa version quantum mais ça serait peut-être un peu trop), du puissance 4, un pendu, etc
Ou sinon j'ai pensé aussi à un décodeur image > ascii art. J'avais vu que c'était possible avec canvas.
Et vous, vous avez des idées ?
J'étais parti sur un traceur de rosaces. Pas le plus compliqué mais dès qu'on s'attaque au canvas les caractères défilent vite...
http://jsfiddle.net/J7kUq/1/
Je n'arrive pas à descendre sous les 165 caractères, donc je pense que je vais partir sur autre chose
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 (function(C,f){ c=C.getContext('2d'); c.transform(2,t=0,0,1,148,R=74); F=f; X=Math.cos; setInterval("c.fillRect(R*(r=X(F*t))*X(t),R*r*Math.sin(t+=.01),1,1)",5); })(document.querySelector("canvas"), 8/3);
Dans le projet js1k, ils donnent ceci en entrée :
Peut-être pourrais - tu gagner 10 caractères ainsi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 <!doctype html> <html> <canvas></canvas> <script> var b = document.body; var c = document.getElementsByTagName('canvas')[0]; var a = c.getContext('2d'); // start of submission // *** YOUR SCRIPT *** // end of submission // </script> </html>
En tout cas, chapeau l'artiste, c'est beau !
@SylvainPV pour ta rosace.
je n'ai pas compris l'intérêt de cette ligne de code
Code : Sélectionner tout - Visualiser dans une fenêtre à part F=f;
et plus loin tu as écrit Math.sin. Tu peux gagner encore des caractères en remplaçant Math.sin par X car sin(Pi/2-A)=cos(A)
Code : Sélectionner tout - Visualiser dans une fenêtre à part X=Math.cos;
Je me suis posé la même question quelques posts en arrière.je n'ai pas compris l'intérêt de cette ligne de code
Quand tu passes une String à setInterval, elle est interprétée avec eval dans le scope global. Or, dans le scope global, f est inconnue car elle est propre au scope de la fonction.
En faisant F=f; (c'est du "global leak" mais bon, çça dépanne parfois ) la variable sera bien dans le scope global.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager