Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1567 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2  3  4
Auteur Sujet :

vérifierr stppp uune boucle d'étoile croissante

n°2054494
black_lord
Truth speaks from peacefulness
Posté le 04-02-2011 à 22:48:25  profilanswer
 

Reprise du message précédent :
[:drapo] epic
 
j'attends que masklinn nous sorte un langage obscur :o


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
mood
Publicité
Posté le 04-02-2011 à 22:48:25  profilanswer
 

n°2054521
Trap D
Posté le 05-02-2011 à 09:48:13  profilanswer
 

black_lord a écrit :

[:drapo] epic
 
j'attends que masklinn nous sorte un langage obscur :o

En whitespace par exemple ? http://compsoc.dur.ac.uk/whitespace/

n°2054543
gilou
Modérateur
Modzilla
Posté le 05-02-2011 à 14:40:39  profilanswer
 

Y'a aussi le GOTO++ un langage 100% français [:zyx] qui est pas mal dans son genre.
Avec des instructions qui peuvent être réalisées de manière aléatoire...  

Citation :

Probabilité de sauter une ligne
 
Pour qu'une ligne ait une certaine probabilité de ne pas être exécutée, rajouter ! immédiatemment suivi de chiffres. Ces chiffres sont la probabilité en pourcentage que la ligne ne soit pas exécutée.
 
!25 GOTOPRINTDUTEXTE() «Trois chances sur quatre d'être affiché»
!75 GOTOPRINTDUTEXTE() «Une chance sur quatre d'être affiché»

:D
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2054618
gilou
Modérateur
Modzilla
Posté le 06-02-2011 à 10:35:41  profilanswer
 

Ça faisait plus d'une décennie que j'avais pas écrit une ligne dans ce langage, j'étais un poil rouillé.

Code :
  1. \ Il faut avoir confiance dans le Forth, petit padawan!
  2. : STAR [CHAR] * EMIT ;
  3. : STARS ( #stars -- ) 0 ?DO STAR LOOP ;
  4. : TRIANGINC ( #width -- ) 0 DO I 1+ STARS CR LOOP ;
  5. : TRIANGDEC ( #width -- ) DUP 0 DO I SPACES DUP I - STARS CR LOOP DROP ;
  6. : DRAWALL ( #width -- ) DUP TRIANGINC CR TRIANGDEC ;
  7. \ Appel avec X DRAWALL ou X est la largeur voulue


Vu la simplicité du code, il devrait pas être trop difficile de le transcrire en Postscript.
 
A+,
 


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2054698
Profil sup​primé
Posté le 06-02-2011 à 22:43:34  answer
 

Putin vous êtes tous fous  [:tinostar]

n°2054858
tpierron
Posté le 07-02-2011 à 15:53:06  profilanswer
 

gilou a écrit :

Il devrait pas être trop difficile de le transcrire en Postscript.


Oué, moi aussi chuis un peu rouillé, mais bon à l'arrache :

Code :
  1. %!PS-Adobe-3.0
  2. /strcat
  3. { exch dup length    
  4.  2 index length add string    
  5.  dup dup 4 2 roll copy length
  6.  4 -1 roll putinterval
  7. } bind def
  8. /triangle {
  9.  /sz exch def
  10.  /dir exch def
  11.  /str () def
  12.  {
  13.    /str str (*) strcat def
  14.    dir 0 lt
  15.    { str }
  16.    { str == }
  17.    ifelse
  18.    sz 0 gt
  19.    { /sz sz 1 sub def }
  20.    { exit }
  21.    ifelse
  22.  } loop
  23.  dir 0 lt
  24.  {
  25.    pstack
  26.  } if
  27. } def
  28. 1 10 triangle
  29. -1 10 triangle


 
Cette version utilise la sortie standard (en général pour le debug) de l'interpréteur postscript. Celle-ci utilise la page de rendu:
 

Code :
  1. %!PS-Adobe-3.0
  2. /Helvetica findfont
  3. 15 scalefont
  4. setfont
  5. /strcat % (a) (b) -> (ab)  
  6. { exch dup length    
  7.  2 index length add string    
  8.  dup dup 4 2 roll copy length
  9.  4 -1 roll putinterval
  10. } bind def
  11. /triangle {
  12.  /sz  exch def
  13.  /dir exch def
  14.  /y   exch def
  15.  /x   exch def
  16.  /str () def
  17.  dir 0 lt
  18.  { /y 20 sz mul y add def } if
  19.  {
  20.    /str str (*) strcat def
  21.    x y moveto str show
  22.    /y y 20 dir mul add def
  23.    sz 0 gt
  24.    { /sz sz 1 sub def }
  25.    { exit }
  26.    ifelse
  27.  } loop
  28. } def
  29. 72  72 1 10 triangle
  30. 200 72 -1 10 triangle
  31. showpage


 
Suffit de copier/coller ça dans la console de ghostscript par exemple.
 
J'voulais aussi faire une version avec les circuits redstone de Minecraft (en utilisant une série de torche comme un "écran" 1bit de Nx1px  [:kbchris] , où N = nombre de torches), mais c'est déjà bien bordélique avec N = 3 :( .

n°2054860
gilou
Modérateur
Modzilla
Posté le 07-02-2011 à 15:59:32  profilanswer
 

Citation :

Oué, moi aussi chuis un peu rouillé, mais bon à l'arrache :

Je voulais pas installer gs sur la bécane temporaire que j'utilise, et l'interpréteur gratos que j'ai trouvé rops, a pas l'air de vouloir s'installer, donc j'avais pas moyen de tester le ps écrit, sinon, je l'aurais fait. Je me souviens d'une époque ou il y avait un concours pour avoir la plus petite signature en postscript, c'était assez monstrueux ce qu'on pouvait faire en qques lignes.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2054890
Profil sup​primé
Posté le 07-02-2011 à 18:05:38  answer
 

Si il y a un amateur, je prendrai comme un cadeau la version Lisp.  :)


Message édité par Profil supprimé le 07-02-2011 à 18:05:58
n°2054918
Un Program​meur
Posté le 07-02-2011 à 20:17:50  profilanswer
 

Du scheme (très procédural et testé avec guile)

 
Code :
  1. (define first-diff
  2.   (lambda (src dst)
  3.     (let ((i 0))
  4.       (while (and (< i (string-length src))
  5.                   (eqv? (string-ref src i) (string-ref dst i)))
  6.              (set! i (+ i 1)))
  7.       i)))
  8. (define transform
  9.   (lambda (src dst)
  10.     (if (< (string-length src) (string-length dst))
  11.           (set! src (string-join (list src
  12.                                        (make-string (- (string-length dst) (string-length src)) #\ ))
  13.                                  "" )))
  14.     (if (< (string-length dst) (string-length src))
  15.           (set! dst (string-join (list dst
  16.                                        (make-string (- (string-length src) (string-length dst)) #\ ))
  17.                                  "" )))
  18.     (while (not (equal? src dst))
  19.            (display src)
  20.            (newline)
  21.            (let ((i (first-diff src dst)))
  22.              (string-set! src i (string-ref dst i))))
  23.     (display dst)
  24.     (newline)))
  25. (transform "***" "" )
  26. (transform "" "***" )


Message édité par Un Programmeur le 07-02-2011 à 20:18:13

---------------
The truth is rarely pure and never simple (Oscar Wilde)
n°2054922
Trap D
Posté le 07-02-2011 à 20:25:26  profilanswer
 

Trap D a écrit :

Si jamais il fait du Scheme un jour:

Code :
  1. (define (build-line n m)
  2.   (build-string n (lambda (i) (if (< i m) (integer->char 32) (integer->char 42)))))
  3. (define (cont-build-lines_1 n m k)
  4.   (if (= m n)
  5.       (k '())
  6.       (cont-build-lines_1 n (+ m 1) (lambda (v) (k (append (list (build-line n m)) v))))))
  7. (define (build-lines n)
  8.   (cont-build-lines_1 n 0 (lambda (v) v)))
  9. (define (hajaritta n)
  10.   (andmap (lambda (x)
  11.             (print x)
  12.             (newline))
  13.        (build-lines n)))



Une version Scheme était déjà en page 2 :cry:  

mood
Publicité
Posté le 07-02-2011 à 20:25:26  profilanswer
 

n°2054946
Un Program​meur
Posté le 07-02-2011 à 21:04:08  profilanswer
 

Pour compenser: plain TeX
 

Code :
  1. \let\nl\par
  2. \def\mkstr#1of#2.{{\n=0\loop\ifnum\n<#1#2\advance\n by1\repeat}}
  3. \def\triangle#1of#2and#3.{%
  4.   \i=0\j=#1%
  5.   \loop
  6.   \ifnum\i<#1
  7.      \mkstr\i of#2.%
  8.      \mkstr\j of#3.%
  9.      \advance\i by 1
  10.      \advance\j by -1
  11.      \nl
  12.   \repeat}
  13. \tt
  14. \triangle 10 of*and\ .
  15. \triangle 10 of\ and*.
  16. \vfill\eject\bye


---------------
The truth is rarely pure and never simple (Oscar Wilde)
n°2055004
art_dupond
je suis neuneu... oui oui !!
Posté le 08-02-2011 à 09:59:47  profilanswer
 

en logo :p
 

Code :
  1. cs
  2. to star :size
  3.     pendown right 90 repeat 6 [right 60 fd :size bk :size] fd :size penup repeat 2 [fd :size] pendown left 90 penup
  4. end
  5. to cr :number :size
  6.     bk 3 * :size right 90 bk 3 * :size * (:number - 1) left 90
  7. end
  8. to triangle :number :size
  9.     if :number < 1 [stop]
  10.     repeat :number [star :size]
  11.     cr :number :size
  12.     triangle :number - 1 :size
  13. end
  14. triangle 10 5


 
http://www.calormen.com/logo/
 
edit : moins fatiguant pour la gelonitsa :)

Code :
  1. cs right 90
  2. to star :size
  3.     penup fd 3*:size pendown repeat 6 [bk :size right 60 fd :size] penup
  4. end
  5. to uturn :t :size
  6.     ifelse (:t % 2) [right 90] [left 90]
  7.     fd 3*:size
  8.     ifelse (:t % 2) [right 90 bk :size] [left 90 fd 2*:size]
  9. end
  10. to triangle :number :size :t
  11.     if (:number < 1) [stop];
  12.     repeat :number [star :size]
  13.     uturn :t :size
  14.     triangle (:number-1) :size (:t+1)
  15. end
  16. triangle 10 5 1


Message édité par art_dupond le 18-02-2011 à 22:29:36

---------------
oui oui
n°2055029
gilou
Modérateur
Modzilla
Posté le 08-02-2011 à 11:09:57  profilanswer
 

Un Programmeur a écrit :

Pour compenser: plain TeX
 

Code :
  1. \let\nl\par
  2. \def\mkstr#1of#2.{{\n=0\loop\ifnum\n<#1#2\advance\n by1\repeat}}
  3. \def\triangle#1of#2and#3.{%
  4.   \i=0\j=#1%
  5.   \loop
  6.   \ifnum\i<#1
  7.      \mkstr\i of#2.%
  8.      \mkstr\j of#3.%
  9.      \advance\i by 1
  10.      \advance\j by -1
  11.      \nl
  12.   \repeat}
  13. \tt
  14. \triangle 10 of*and\ .
  15. \triangle 10 of\ and*.
  16. \vfill\eject\bye



Mais comment n'y ais-je pas pensé  [:jsuistropcon]  
Merci!
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2056271
gilou
Modérateur
Modzilla
Posté le 12-02-2011 à 13:56:36  profilanswer
 

Vu que ptitchep se posait la question, en sed:

Code :
  1. echo "**********" | sed ':loop p;s/\(\*\)\(\1*\)/ \2/g;t loop;:pool p;s/\( \)\(\1*\)/*\2/;t pool;d'


C'est probablement améliorable.
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2056434
Trap D
Posté le 13-02-2011 à 16:00:24  profilanswer
 

Vous l'attendiez tous, j'en suis sur, la version en WhiteSpace.
Je ne peux pas donner le code source tel qu'il devrait être (uniquement espace, tabulations et line-feed) car il y a des modifs de ces caractères dues à l'éditeur.
Donc si vous faites les modifs (space -> espace (ascii 32), tab -> tabulation (ascii 9) et lf ->line-feed (ascii 10) et que vous enregistrez dans un fichier ça marche avec le  compilo C++ qui se trouve ici : http://www.burghard.info/Code/Whitespace/index.html.
Les lignes qui commencent par % sont des commentaires
 

% initialisation
 
 % mettre 0 sur la pile
 [space,space,space,lf,
  % lire un nombre (le nombre d'etoiles NE (heap = 0)
  tab, lf,tab,tab,
  % mettre 1 sur la pile
  space, space, space,tab, lf,
  % mettre 0 sur la pile
  space,space,space,lf,
  % ranger le nombre (nombre de blancs NB (heap = 1))
  tab,tab,space,
 
  % debut du prog, boucle sur l'affichage
  % mettre un label a cet endroit (Lbl1 = 0)
  lf,space,space,space,space, lf,
 
  % afficher d'abord les espaces
  % mettre 32 dans la case heap 2
  % mettre 2 sur la pile
  space, space, space,tab, space, lf,
  % mettre 32 sur la pile
  space,space,space,tab,space,space,space,space,space,lf,
  % stocker
  tab, tab, space,
 
  % on met le nombre d'espaces dans la case 3
  % on met d'abord 3 sur la pile
  space, space, space,tab, tab, lf,
  % on met ensuite 1 sur la pile
  space, space, space,tab, lf,
  % on retrieve
  tab, tab, tab,
  % puis on store
  tab,tab,space,
  % on appelle la sub
  lf,space,tab,space,tab,tab,tab,tab,lf,
 
 
  % on affiche ensuite les etoiles
  % on met 42 dans la case heap 2
  % on met 2 sur la pile
  space, space, space,tab, space, lf,
  % on met 42 sur la pile
  space,space,space,tab,space,tab,space,tab,space,lf,
  % on store
  tab, tab, space,
  % on met le nombre d'etoiles dans la case 3
  % on met d'abord 3 sur la pile
  space, space, space,tab, tab, lf,
  % on met ensuite 0 sur la pile
  space, space, space,space, lf,
  % on retrieve
  tab, tab, tab,
  % puis on store
  tab,tab,space,
  % on appelle la sub
  lf,space,tab,space,tab,tab,tab,tab,lf,
 
  % on doit maintenant passer à la ligne
  % on met 10 sur la pile
  space, space, space,tab, space, tab, space, lf,
  % on ecrit le caractère
  tab, lf, space, space,
 
  % on doit maintenant décrementer le nombre d'étoiles
         % on recupere le nombre d'etoiles
  % on met d'abord 0 sur la pile
  space, space, space,space, lf,
  % on met ensuite 0 sur la pile
  space, space, space,space, lf,
  % on retrieve
  tab, tab, tab,
  % on met 1 sur la pile
  space, space, space,tab, lf,
  % on effectue la soustraction
  tab, space,space,tab,
  % on double le top
  space,lf,space,
  % on va a la fin du prog si 0
  lf,tab,space,space,tab,space,tab,lf,
  % on store
  tab, tab, space,
 
  % on augmente de 1 le nombre d'espace
  % on recupere le nombre d'etoiles
  % on met d'abord 1 sur la pile
  space, space, space,tab, lf,
  % on met ensuite 0 sur la pile
  space, space, space,tab, lf,
  % on retrieve
  tab, tab, tab,
  % on met 1 sur la pile
  space, space, space,tab, lf,
  % on effectue l'addition
  tab, space,space,space,
  % on store
  tab, tab, space,
  % on va au debut de prog (Lbl 0)
  lf,space,lf, space,space,lf,
  % c'est la fin du prog
  % on met le label Llb6 (= 5)
  lf,space,space,space,tab, space,tab,lf,
  % 37 on termine le programme
  lf,lf,lf,
 
  % on ecrit maintenant la routine d'affichage
  % on pose le Lbl
  lf, space, space, space,tab,tab,tab,tab,lf,
 
  % on recupere le nombre a afficher (en heap 3)
  % on push 2 sur la pile
  space,space, space,tab,tab,lf,
  %  on retrieve
  tab,tab,tab,
  % si zero an va a la fin de la routine
  lf,tab,space, space,tab,tab,tab,tab, space, lf,
  % on recupere le caractère a afficher (situe en 2)
  space,space, space,tab,space,lf,
  % on retrieve
  tab,tab,tab,
  % on affiche le caractère
  tab, lf, space, space,
  % on decremente le nombre a afficher puis on le stocke
  % on push 3 sur la pile
  space,space, space,tab,tab,lf,
  % on push 3 sur la pile (pour pouvoir ensuite le stocker ensuite)
  space,space, space,tab,tab,lf,
  % on retrieve
  tab, tab, tab,
  % on met 1 sur la pile
  space, space, space,tab, lf,
  % on effectue la soustraction
  tab, space,space,tab,
  % on store
  tab, tab, space,
  % on saute en debut de routine
  lf, space, lf, space,tab,tab,tab,tab,lf,
  % on indique que c'est la fin de la routine
  lf, space, space, space,tab,tab,tab,tab,space,lf,
  % on met fin de routine
  lf, tab, lf],

n°2056442
gilou
Modérateur
Modzilla
Posté le 13-02-2011 à 16:54:35  profilanswer
 

[:acherpy]  
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2057411
black_lord
Truth speaks from peacefulness
Posté le 16-02-2011 à 22:36:14  profilanswer
 

En erlang, je débute, ça doit être améliorable

 
Code :
  1. -module(star).
  2. -export([starrer/2]).
  3.  
  4. starrer(c,0)   -> ok;
  5. starrer(c,N)   -> starrer(p,N), starrer(c,N-1);
  6. starrer(p,0)   -> io:format("~n" );
  7. starrer(p,N)   -> io:format("*" ), starrer(p,N-1).
 

edit : pour l'invoquer, en l'ayant sauvegardé sous star.erl


[angband:~/erlang] erl
Erlang R14A (erts-5.8) [source] [smp:2:2] [rq:2] [async-threads:0] [kernel-poll:false]

 

Eshell V5.8  (abort with ^G)
1> c(star).
{ok,star}
2> star:starrer(c,4).
****
***
**
*
ok


Message édité par black_lord le 16-02-2011 à 22:40:26

---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
n°2057424
gilou
Modérateur
Modzilla
Posté le 16-02-2011 à 23:12:43  profilanswer
 

Ça fait un peu penser à du Prolog, l'erlang, au vu de la syntaxe :)
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2057434
0x90
Posté le 17-02-2011 à 00:48:05  profilanswer
 

C'est du js, donc pas très original, quoique:

Code :
  1. document.write('<pre>');
  2. for (var i=177147,j=i--; j>.7; i-=j/=3)
  3.    document.write(i.toString(3).replace(/1/g,' ').replace(/2/g,'*')+'\n');


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°2057448
gatsu35
Blablaté par Harko
Posté le 17-02-2011 à 08:52:32  profilanswer
 

C'est de l'obfuscation que tu nous fais là :D
putain bien joué l'utilisation d'une base 3, mais en base 2 tu aurais pu faire la même chose avec du décalage de bits ? nan ?

Message cité 1 fois
Message édité par gatsu35 le 17-02-2011 à 08:56:44

---------------
Blablaté par Harko
n°2057455
Trap D
Posté le 17-02-2011 à 09:34:59  profilanswer
 

gilou a écrit :

Ça fait un peu penser à du Prolog, l'erlang, au vu de la syntaxe :)
A+,

Erlang a d'abord été écrit en Prolog je crois. :pt1cable:  
Voila un code Prolog possible :

etoile(N) :-
       etoile(0, N, L, []),
       atomic_list_concat(L, A),
       writeln(A).
 
 
etoile(_, 0) --> [].
 
etoile(N, K) -->
 etoile_1(N, ' '),
 etoile_1(K, '*'),
 {N1 is N + 1,
  K1 is K - 1},
 ['\n'],
 etoile(N1, K1).
 
etoile_1(0, _) --> [].
 
etoile_1(N, C) -->
 {N > 0},
 [C],
 {N1 is N - 1},
 etoile_1(N1, C).


Message cité 1 fois
Message édité par Trap D le 17-02-2011 à 09:36:23
n°2057460
0x90
Posté le 17-02-2011 à 09:50:47  profilanswer
 

gatsu35 a écrit :

C'est de l'obfuscation que tu nous fais là :D
putain bien joué l'utilisation d'une base 3, mais en base 2 tu aurais pu faire la même chose avec du décalage de bits ? nan ?


 
En base 2 le toString() élimine les zero devant, on pourrait le faire à l'envers et faire un reverse à la fin, ou ajouter un 1 devant et le couper à la sortie, mais ça prendrait plus de place.


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°2057471
gilou
Modérateur
Modzilla
Posté le 17-02-2011 à 10:59:33  profilanswer
 

Trap D a écrit :

Erlang a d'abord été écrit en Prolog je crois. :pt1cable:  
Voila un code Prolog possible  

Merci :jap:  
J'en aurais bien écrit, mais je me suis rendu compte qu'après des années de non utilisation, j'avais vraiment tout oublié de ce langage ou presque.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2057474
gatsu35
Blablaté par Harko
Posté le 17-02-2011 à 11:02:44  profilanswer
 

0x90 a écrit :


 
En base 2 le toString() élimine les zero devant, on pourrait le faire à l'envers et faire un reverse à la fin, ou ajouter un 1 devant et le couper à la sortie, mais ça prendrait plus de place.


J'ai pensé le faire ce matin, avec un décalage de bits, mais bébé s'est réveillé trop tot :(


---------------
Blablaté par Harko
n°2057555
ptitchep
Posté le 17-02-2011 à 15:04:51  profilanswer
 

gilou a écrit :

Vu que ptitchep se posait la question, en sed:

Code :
  1. echo "**********" | sed ':loop p;s/(*)(1*)/ 2/g;t loop;:pool p;s/( )(1*)/*2/;t pool;d'


C'est probablement améliorable.

 

A+,


Merci :-)
En plus simple (merci au collègue qui m'a expliqué sed au lieu de bosser):

Code :
  1. !/bin/bash
  2.  
  3. echo Nombre:
  4. read nb
  5. printf -v f %"$nb"s ; printf "%s\n" "${f// /*}" | sed ':loop p;s/\*/ /;t loop;:pool p;s/ /\*/;t pool;d'

Message cité 1 fois
Message édité par ptitchep le 17-02-2011 à 15:36:30

---------------
deluser --remove-home ptitchep
n°2057563
black_lord
Truth speaks from peacefulness
Posté le 17-02-2011 à 15:12:32  profilanswer
 

ptitchep a écrit :


En plus simple (merci au collègue qui m'a expliqué sed au lieu de bosser):

Code :
  1. !/bin/bash
  2.  
  3. echo Nombre:
  4. read nb
  5. printf -v f %"$nb"s ; printf "%s\n" "${f// /*}" | sed ':loop p;s/\*/ /;t loop;:pool p;s/ /\*/;t pool;d'



 [:petoulachi]


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
n°2057597
ptitchep
Posté le 17-02-2011 à 17:12:08  profilanswer
 

Je parle du sed.
Après j'ai juste rajouté la possibilité de choisir le nombre d'étoiles...

 

edit: d'ailleurs le printf est un copié-collé d'un recherche google à l'arrache, il y a peut-être moyen de faire aussi plus simple.


Message édité par ptitchep le 17-02-2011 à 17:15:05

---------------
deluser --remove-home ptitchep
n°2057639
_iOn_
Substrat pensant
Posté le 17-02-2011 à 23:45:00  profilanswer
 

Un peu facile votre truc, ça se fait en un ligne de python  [:cerveau erf]  
 

Code :
  1. def g(n):
  2.     for v in (''.join(u) for u in (list(reversed(r[0])) for r in zip(reversed(list(s + (n - len(s)) * [" "] for s in (w * [chr(42)] for w in ((sum(ord(c) // ord('1') for c in s) for s in (bin(2**k - 1)[2:] for k in range(1, n + 1)))))))))) : print(v)


---------------
Any sufficiently complex bug is indistinguishable from magic.
n°2057643
Profil sup​primé
Posté le 18-02-2011 à 00:07:57  answer
 

_iOn_ a écrit :

Un peu facile votre truc, ça se fait en un ligne de python  [:cerveau erf]  
 

Code :
  1. def g(n):
  2.     for v in (''.join(u) for u in (list(reversed(r[0])) for r in zip(reversed(list(s + (n - len(s)) * [" "] for s in (w * [chr(42)] for w in ((sum(ord(c) // ord('1') for c in s) for s in (bin(2**k - 1)[2:] for k in range(1, n + 1)))))))))) : print(v)



 
Ca fait deux ça ? ou bien ....

n°2057646
_iOn_
Substrat pensant
Posté le 18-02-2011 à 00:15:04  profilanswer
 

erreur d'arrondi


---------------
Any sufficiently complex bug is indistinguishable from magic.
n°2057647
Profil sup​primé
Posté le 18-02-2011 à 00:27:29  answer
 

_iOn_ a écrit :

erreur d'arrondi


 
C'est approximatif de toute manière je pense.
 
Combine de caractère max sur une ligne de python ?
Sur Ada 256 à l'époque.


Message édité par Profil supprimé le 18-02-2011 à 00:27:37
n°2057652
gatsu35
Blablaté par Harko
Posté le 18-02-2011 à 06:38:37  profilanswer
 

_iOn_ a écrit :

Un peu facile votre truc, ça se fait en un ligne de python  [:cerveau erf]  
 

Code :
  1. def g(n):
  2.     for v in (''.join(u) for u in (list(reversed(r[0])) for r in zip(reversed(list(s + (n - len(s)) * [" "] for s in (w * [chr(42)] for w in ((sum(ord(c) // ord('1') for c in s) for s in (bin(2**k - 1)[2:] for k in range(1, n + 1)))))))))) : print(v)



Tu as besoin d'utiliser autant de FOR ?  
 
il y en a un qui a posté du python 2 semaines plus tôt :  

mr simon a écrit :

Code :
  1. #!/usr/bin/python
  2. print "\n".join([('*'*i).rjust(10) for i in xrange(10,0,-1)])




---------------
Blablaté par Harko
n°2057658
esox_ch
Posté le 18-02-2011 à 07:35:59  profilanswer
 

C'est offusqué :o


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2057915
_iOn_
Substrat pensant
Posté le 18-02-2011 à 20:59:38  profilanswer
 

En effet, je n'avais pas pensé à cette solution.
Astucieux, mais la mienne conserve l'avantage de l'élégance.


---------------
Any sufficiently complex bug is indistinguishable from magic.
n°2057962
gatsu35
Blablaté par Harko
Posté le 19-02-2011 à 08:32:36  profilanswer
 

je ne vois pas trop l'élégance dans 5 for imbriqués :D


---------------
Blablaté par Harko
n°2057990
_iOn_
Substrat pensant
Posté le 19-02-2011 à 10:49:44  profilanswer
 

Ah mais ça c'est parce que tu as mal compté, en fait il y en a 8.
Une solution avec 5 for imbriqués aurait été risible, restons sérieux.


---------------
Any sufficiently complex bug is indistinguishable from magic.
n°2058011
gilou
Modérateur
Modzilla
Posté le 19-02-2011 à 13:46:27  profilanswer
 

Tiens, une autre solution perl, un peu plus élégante (et obfuscated?)

Code :
  1. #!/usr/local/bin/perl
  2.  
  3. sub print_rotate_half { my $s = int(@_/2); foreach (1..$s) { print @_[$s-$_+1..2*$s-$_],"\n"; } }
  4.  
  5. my $size = 10;
  6. print_rotate_half ((map { ' ' } 1..$size),(map { '*' } 1..$size));
  7. print_rotate_half ((map { '*' } 1..$size),(map { ' ' } 1..$size));

A+,


Message édité par gilou le 19-02-2011 à 14:37:10

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2058022
0x90
Posté le 19-02-2011 à 14:49:05  profilanswer
 

Allez, encore un peu de js, vraiment pas beaucoup :

Code :
  1. for(s='<pre>*',l=90;l--;)s+=l%9?l%9>l/9?' ':'*':'*\n ';document.write(s)


Message édité par 0x90 le 19-02-2011 à 15:14:09

---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°2058059
esox_ch
Posté le 19-02-2011 à 19:29:52  profilanswer
 

Par contre c'est pas triste les reflexes qu'on a ... Personne n'a eu le réflexe d'écrire de unit test pour vérifier tout ça :o
C'est pas super TDD-compliant tout ça :o


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2058071
gatsu35
Blablaté par Harko
Posté le 19-02-2011 à 20:30:54  profilanswer
 

Tu veux ptet aussi qu'on installe un hudson qui va valider chaque morceau de code posté, et envoyer un mail à chaque personne du topic ?


Message édité par gatsu35 le 20-02-2011 à 17:45:45

---------------
Blablaté par Harko
n°2058189
esox_ch
Posté le 20-02-2011 à 15:31:14  profilanswer
 

Non c'est juste que je viens de commencer un bouquin sur JUnit et comme toujours ça commence avec les bons principes TDD&co et je me suis dit "C'est étrange que personne n'y ait pensé".  
Pas le prendre mal hein :o


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4

Aller à :
Ajouter une réponse
 

Sujets relatifs
boucle for pythonProbleme : Tableau perd ses valeurs une fois sortie de la boucle
Besoin d'aide sur une boucle "if else if else"Batch : Compteur dans une boucle for
Scan d'un dossier image, lecture des images une par une en boucleGreasemonkey Boucle executée une seule fois
Quitter prématurément une boucle for-each ?Boucle for
un objet de formulaire en boucle [résolu]Lenteur d'exécution (grande boucle accédant à une dll)
Plus de sujets relatifs à : vérifierr stppp uune boucle d'étoile croissante


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR