11402 sujets

JavaScript, DOM et API Web HTML5

Pages :
Salut à tous et à toutes,

Je me suis toujouts dis que les concours de programmation étaient trop peu fréquents,
c'est pourquoi je vous propose un concours de javascript dont les règles sont simples :

-Chaque round dure un maximum de 3 jours.
-Chaque jour si la solution n'est pas trouvée un indice est fourni.
-Une fois l'égnime trouvée, une autre est lancée.
-Tous les problèmes sont possibles à réaliser.
-Il faut impérativement respecter les règles données pour chaque concours.
-Le gagnant est celui qui à écrit le code fonctionnel (qui respecte la norme en vigueur) le plus efficace.
-Vous pouvez proposer des problèmes à résoudre.
-Il est interdit de s'aider sur le topic.

Bonne chance! Smiley lol


Enigme n°1 : Trouvée par Heyoan

Enigme en cours (niveau moyen) :

var sentence = "Javascript is the most used script language in the internet";
var biggestWord = ?;


Ecrire une expression qui retourne le plus grand mot de la phrase

-Aucune variable/propriété/globale ( Smiley biggol ) ne doit être déclarée.
-Aucune closure ne doit être crée.
-Aucune expression régulière ne doit être utilisée.
Modifié par Shinuza (03 Dec 2007 - 18:47)
Enigme n°1 (niveau facile) :

var sentence = "Je suis certain qu'il est au courant";
var heights = ?;


Ecrire une expression qui retourne le nombre de caractères sans les espaces.

-Aucune variable ne doit être déclarée.
-Aucune fonction ne doit être déclarée -anonyme ou pas.
-Aucune expression régulière ne doit être utilisée
Modifié par Shinuza (21 Oct 2007 - 02:10)
OK ! Je me lance :
var heights = (sentence.length - sentence.split(' ').length) + 1;

J'ai bon Smiley murf ?
Heyoan a écrit :
OK ! Je me lance :
var heights = (sentence.length - sentence.split(' ').length) + 1;

J'ai bon Smiley murf ?

Ca fonctionne, mais on peut faire plus simple. Smiley biggrin
Modifié par Shinuza (21 Oct 2007 - 01:05)
Shinuza a écrit :
Ca fonctionne, mais on peut faire plus simple. Smiley biggrin

Alors je me relance Smiley biggol :
var heights = sentence.split(' ').join('').length;

Modifié par Heyoan (21 Oct 2007 - 01:22)
Bingo! C'était ce à quoi je pensais (il est toujours possible de proposer si vous trouvez mieux Smiley cligne )
Enigme n°2 (niveau moyen) :

var sentence = "Javascript is the most used script language in the internet";
var biggestWord = ?;


Ecrire une expression qui retourne le plus grand mot de la phrase

-Aucune variable/propriété/globale ( :aie: ) ne doit être déclarée.
-Aucune closure ne doit être crée.
-Aucune expression régulière ne doit être utilisée.
Modifié par Shinuza (21 Oct 2007 - 02:10)
Shinuza a écrit :
Bingo! C'était ce à quoi je pensais (il est toujours possible de proposer si vous trouvez mieux Smiley cligne )

Cool ! Où ki sont mes kiwizs Smiley biggol Smiley biggol Smiley biggol ?
Question renseignement : C'est quoi une closure ?
J'ai dû mal comprendre parce que sans boucle for et sans variable, je vois pas trop...
Mais c'est sympa l'idée, ça animera le forum javascript.

Je ne propose pas de solution pour cette énigme n°2 pour le moment, parce que j'en ai pas !
Par contre j'ai une idée de problème si vous voulez... en une seule ligne sans point-virgule, extraire les données GET et les mettre dans des variables globales.


[mode coup de pub]
J'en profite pour proposer mon challenge javascript.
Si ce lien n'est pas adapté ici, je peux le virer sans problème. C'était pour vous proposer un truc sympa dans le genre que j'avais fait...
On peut en trouver quelques autres sur le web, par exemple celui-ci.
[/mode coup de pub]
Modifié par QuentinC (21 Oct 2007 - 18:05)
QuentinC a écrit :
Question renseignement : C'est quoi une closure ?
J'ai dû mal comprendre parce que sans boucle for et sans variable, je vois pas trop...
Mais c'est sympa l'idée, ça animera le forum javascript.

Je ne propose pas de solution pour cette énigme n°2 pour le moment, parce que j'en ai pas !
Par contre j'ai une idée de problème si vous voulez... en une seule ligne sans point-virgule, extraire les données GET et les mettre dans des variables globales.


[mode coup de pub]
J'en profite pour proposer mon challenge javascript.
Si ce lien n'est pas adapté ici, je peux le virer sans problème. C'était pour vous proposer un truc sympa dans le genre que j'avais fait...
On peut en trouver quelques autres sur le web, par exemple celui-ci.
[/mode coup de pub]


Une closure c'est le fait d'accèder à variable qui est hors du scope d'une fonction, principe de base :

var ok = "doki";

function test() {
	alert(ok);
}


Sinon, c'est tout a fait possible, indice demain

Smiley lol

Ps : Je note ton enigme Smiley cligne
a écrit :

Une closure c'est le fait d'accèder à variable qui est hors du scope d'une fonction, principe de base :

var ok = "doki";  
function test() { 
alert(ok); 
}

Ah, d'accord. Je connaissais mais j'ignorais le nom.


Je suis fantaisiste, mais essayons toujours :

var sentance = "......";
window.confirm = sentance.split(' ');
window.prompt = [0,0,0];
for (window.prompt[0]=0; window.prompt[0]<window.confirm.length; window.prompt[0]++) {
if (window.confirm[window.prompt[0]].length > window.prompt[1]) {
window.prompt[1] = window.confirm[window.prompt[0]].length;
window.prompt[2] = window.prompt[0];
}
}
alert("Le plus long mot est : " + window.confirm[window.prompt[2]]);


Petites précisions : Je ne déclare pas de variables mais je me contente d'utiliser celles qui existent déjà.
La fonction split admet deux syntaxes, une avex expression régulière et une autre avec une chaîne. Ici j'utilise celle avec une chaîne, donc je n'utilise pas d'expression régulière.

Je joue sur les mots... mais pourquoi pas.
Modifié par QuentinC (21 Oct 2007 - 19:18)
Ca fonctionne, mais tu utilises des propriétés (cf l'intitulé de l'enigme). Reste que tu fais de manière compliqué une operation qui existe déja dans javascript Smiley lol
Salut
var biggestWord = (sentence.split(' ').sort(function() { return arguments[1].length - arguments[0].length; }))[0];


Comme Quentin, j'utilise des propriétés (length, arguments) mais n'en déclare pas (cf l'intitulé de l'enigme).

Je crois que c'est pour ça que je n'aime pas ces concours, les règles ne sont jamais bien définies Smiley ohwell
jeje a écrit :
Salut
var biggestWord = (sentence.split(' ').sort(function() { return arguments[1].length - arguments[0].length; }))[0];


Comme Quentin, j'utilise des propriétés (length, arguments) mais n'en déclare pas (cf l'intitulé de l'enigme).

Je crois que c'est pour ça que je n'aime pas ces concours, les règles ne sont jamais bien définies Smiley ohwell

Pas mal Smiley jap
Il existe plus simple, mais je note Smiley biggthumpup
Enfin, je dirais plus élégant, pas forcement plus simple, pour l'instant ta réponse est la meilleure Smiley lol
Pages :