Skip to content

Instantly share code, notes, and snippets.

View Cycymomo's full-sized avatar

Cyril Moreau Cycymomo

View GitHub Profile
function PlusOuMoins(){
var nombreMystere = Math.floor(Math.random()*1000);
var essais = 10;
return function(n){
//console.log(n,nombreMystere);
if(essais--){
return n<nombreMystere ? 1 : n>nombreMystere ? -1 : 0;
} else {
throw "game over";
}
// 140bytes - http://www.developpez.net/forums/d1362763/webmasters-developpement-web/javascript/ludique-defis-code-en-tweet/
/* smaller ... but global leak :p */
(function(d,p){
x=d,y=p,setInterval("t=(x-new Date)/6e4;y(~~(t/1440)+'j '+~~(t/60)%24+'h '+~~t%60+'m '+~~(t*60)%60+'s')",1e3)
})(new Date(+new Date()+1728e5),function(msg){console.log(msg);});
/* Outputs
1j 23h 59m 59s
1j 23h 59m 58s
1j 23h 59m 57s
// 140bytes - http://www.developpez.net/forums/d1362763/webmasters-developpement-web/javascript/ludique-defis-code-en-tweet/
/* 97b: */
function deromanize(s){
for(l=s.length,a=b=0;l;a-=i<b?d:-d,b=i)i='IVXLCDM'.search(s[--l]),d=(i%2?5:1)+'e'+(i>>1);return a
}
/* 99b: */
function deromanize(s){
for(l=s.length,a=b=0;i=j=' IVXLCDM'.search(s[--l]);a+=i<b?-d:d,b=i)for(d=1;--j;d*=j%2?5:2);return a
}
@Cycymomo
Cycymomo / explainDuckTyping.md
Last active December 20, 2015 02:59
héritage délégation javascript

En JavaScript, on ne teste pas qu'un objet appartient à telle classe ou implémente telle interface. Cela n'a pas de sens car un objet JavaScript n'entre dans aucun moule préalablement défini

En gros, en JavaScript, tu ne crées pas un objet à partir d'un moule (classe) qui doit implémenter telle interface, mais tu crées un objet A à partir d'un autre objet B. B devient alors le prototype de A. Le prototype "racine" étant [CODEINLINE]Object[/CODEINLINE]. Le nouvel objet B ainsi créé à partir de A aura ses propres méthodes/attributs et aura également accès à celles de A, puis ensuite à celles du prototype de A, etc. On parle de chaîne de prototype. Si la propriété/méthode n'est pas dans B, on check dans son prototype A, puis dans le prototype du prototype A, etc, jusqu'à remonter la pile jusqu'à [CODEINLINE]Object[/CODEINLINE].

Un "équivalent" de l'interface serait plutôt de tester la présence d'attributs ou de méthodes.

En effet, JavaScript répond au style "[URL="http://fr.wikipedia.org/wiki/Duck_typing"]duc

// 140bytes - http://www.developpez.net/forums/d1362763/webmasters-developpement-web/javascript/ludique-defis-code-en-tweet/
/* 98b: */
function romanize(n,a,b,c,d){
for(a='',b=0,c=5;n;b++,c^=7)for(d=n%c,n=n/c^0;d--;a='IVXLCDM'[d>2?b+n-(n&=-2)+(d=1):b]+a);return a
}
/* Explain */
function romanize(n){
for(a='', // final string
@Cycymomo
Cycymomo / pgcd.js
Last active December 19, 2015 23:59
140bytes - Récupérer le pgcd d'un nombre variable de nombres (gcd in english) http://www.developpez.net/forums/d1362763/webmasters-developpement-web/javascript/ludique-defis-code-en-tweet/
// 140bytes - http://www.developpez.net/forums/d1362763/webmasters-developpement-web/javascript/ludique-defis-code-en-tweet/
function pgcd(){
x=function(a,b){return!b?a:x(b,a%b)};return[].reduce.call(arguments,function(a,b){return x(a,b)})
}
@Cycymomo
Cycymomo / formatPrice.js
Last active December 19, 2015 22:39 — forked from codylindley/format price (US)
format price (US)
function formatUSprice(amount)
{
var i = parseFloat(amount);
if(isNaN(i)) { i = 0.00; }
var minus = '';
if(i < 0) { minus = '-'; }
i = Math.abs(i);
i = parseInt((i + .005) * 100);
i = i / 100;
s = new String(i);
// 140bytes - http://www.developpez.net/forums/d1362763/webmasters-developpement-web/javascript/ludique-defis-code-en-tweet/
(function cercle(r){
a='';for(i=~r;i++<r;a+='\n')for(j=-r*2;j++<r*2;)a+=j*j/4<r*r-i*i?'#':' ';return a
})(20);
// 140bytes - http://www.developpez.net/forums/d1362763/webmasters-developpement-web/javascript/ludique-defis-code-en-tweet/
(function parseNumbers(s){
return s.replace(/ ?s?(.)\S*/g,function(a,b){return'zudtqciehn'.search(b)})
})("un deux trois quatre cinq six sept huit neuf zero six six sept");
// 140bytes - http://www.developpez.net/forums/d1362763/webmasters-developpement-web/javascript/ludique-defis-code-en-tweet/
// by @SylvainPV at syllab.fr
(function getNextVendredi13(){
for(d=new Date;d.getDay()+d.getDate()>1;d=new Date(+d+8e7));return d
})()