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

 


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

[Concours de code]Echauffement pour l'IOCCC

n°1262079
0x90
Posté le 08-12-2005 à 20:12:27  profilanswer
 

Reprise du message précédent :
en fait après re-réflexion, je sais pas trop pkoi je trouve pas la solution :/


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
mood
Publicité
Posté le 08-12-2005 à 20:12:27  profilanswer
 

n°1262083
red factio​n
Posté le 08-12-2005 à 20:19:06  profilanswer
 

Cmnt vous faites pour eviter que le prog ne reviennent pas sur c pas ?

n°1262085
0x90
Posté le 08-12-2005 à 20:21:13  profilanswer
 

tu marque les cases ou t'es déja passé, mais j'ai la vague impression qu'a cause de ca mon code foire ... m'enfin c'est dur de mettre le doigt dessus, avoir l'image du laby de masklinn aiderait grandement ...


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1262086
masklinn
í dag viðrar vel til loftárása
Posté le 08-12-2005 à 20:23:06  profilanswer
 

Je voudrais bien te la filer mais j'ai rien pour la générer :/
 
Ummon, comment tu sors tes images de labys?


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1262088
red factio​n
Posté le 08-12-2005 à 20:25:11  profilanswer
 

le mieux se serait de se tapper ca en C vite fait avec les caracteres ascii
pour les bordures et tout :o

n°1262089
0x90
Posté le 08-12-2005 à 20:25:47  profilanswer
 

j'ai ca perso, mais c'est immonde et ilisible de toute facon :


cat labymask.c | sed -e  
's/{//g' -e 's/ 0x3./|--/g' -e 's/ 0x5./===/g' -e 's/ 0x9./--|/g' -e 's/ 0xa./| |/g' -e 's/ 0x1./---/g' -e 's/ 0xd./==|/g' -e 's/ 0x8./  |/g' -e 's/ 0xe./|_|/g' -e 's/ 0x2./|  /g' -e 's/ 0x6./|__/g' -e 's/ 0x4./___/g' -e 's/ 0xb./|-|/g' -e 's/ 0xc./__|/g' -e 's/ 0x0./   /g'


( non ca fait pas partie du concours :o )


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1262091
red factio​n
Posté le 08-12-2005 à 20:28:48  profilanswer
 

ou mais bon c unix only  :sweat:


Message édité par red faction le 08-12-2005 à 20:28:58
n°1262092
0x90
Posté le 08-12-2005 à 20:29:19  profilanswer
 

tu perds rien, c'est à vomir, mais j'ai fait au plus vite ^^


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1262096
Ummon
Posté le 08-12-2005 à 20:34:36  profilanswer
 

masklinn a écrit :

Je voudrais bien te la filer mais j'ai rien pour la générer :/
 
Ummon, comment tu sors tes images de labys?


dessin papier + photoshop ... hum hum ^-^
 
je ferai peut-être une petite appli graphique pour les visualiser si j'ai le temps

n°1262097
masklinn
í dag viðrar vel til loftárása
Posté le 08-12-2005 à 20:36:09  profilanswer
 

Ummon a écrit :

dessin papier + photoshop ... hum hum ^-^


ok [:sinorz-]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
mood
Publicité
Posté le 08-12-2005 à 20:36:09  profilanswer
 

n°1262115
Ummon
Posté le 08-12-2005 à 20:53:25  profilanswer
 

Mon new code  

Code :
  1. #define H 5
  2. #define W 5
  3. #define DI 0
  4. #define DJ 0
  5. #define AI 3
  6. #define AJ 3
  7. static char l[H][W] =
  8. {{0x7, 0x5, 0x0, 0x5, 0x9},
  9. {0x3, 0x1, 0x4, 0x9, 0xa},
  10. {0x0, 0xc, 0x3, 0x4, 0x0},
  11. {0xa, 0x3, 0xc, 0xb, 0xa},
  12. {0xe, 0x6, 0x1, 0xc, 0xe}};
  13. #include <stdio.h>
  14. #define I l[i][j]
  15. #define Q(A, B) )||B&&~I&A&&p(i
  16. int p(int i,int j)
  17. {
  18.  
  19.          return
  20.  
  21.             ~
  22.             I
  23.            &16
  24.          &&(I|=16
  25.        )&&((i==DI&&
  26.           j==DJ
  27.         Q(1,i)-1,j
  28.      Q(2,j),j-1 Q(4,i
  29.           <H-1)+
  30.    1,j Q(8, j<W-1) ,j+1)
  31.            )&& 
  32.  
  33.   printf("(%i,%i)\n",i,j);
  34.  
  35. }
  36. int main(){
  37.    p(AI,AJ);
  38. }


 
 :whistle:
 
il sort ca :

(0,0)
(0,1)
(0,2)
(1,2)
(1,3)
(2,3)
(2,2)
(3,2)
(3,1)
(4,1)
(4,2)
(4,3)
(3,3)


Message édité par Ummon le 09-12-2005 à 09:24:10
n°1262116
red factio​n
Posté le 08-12-2005 à 20:53:37  profilanswer
 

premiere version : 626
 
va falloir faire un peu d'optim

n°1262120
fra0
Posté le 08-12-2005 à 20:58:56  profilanswer
 

comme compilateur de référence je vous propose
 
http://www.delorie.com/djgpp/compile/
 
vous en pensez quoi ?

n°1262123
0x90
Posté le 08-12-2005 à 20:59:31  profilanswer
 

joli le sapin ^^


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1262134
red factio​n
Posté le 08-12-2005 à 21:07:02  profilanswer
 

513 :/

n°1262135
0x90
Posté le 08-12-2005 à 21:07:35  profilanswer
 

fait a l'arrache mais ca peut aider :
 


<style type="text/css">
.line {font-size:.8em;font-family:sans-serif;clear:left;}
.line div {float:left;;width:3em;height:3em;border:2px solid transparent;text-align:center;}
div.up {border-top-color:#000;}
div.left {border-left-color:#000;}
div.bottom {border-bottom-color:#000;}
div.right {border-right-color:#000;}
</style>
<script type="text/javascript">
togglered = function(elem) {
if (elem.style.backgroundColor != 'red' )
  {
    elem.style.backgroundColor = 'red';
  }
else
  {
    elem.style.backgroundColor = '#fff';
 }
}
</script>
 
<div class="line">
<div class="up left " onclick="togglered(this);">(0,0)</div>
<div class="up bottom " onclick="togglered(this);">(0,1)</div>
<div class="up bottom " onclick="togglered(this);">(0,2)</div>
<div class="up bottom " onclick="togglered(this);">(0,3)</div>
<div class="up bottom " onclick="togglered(this);">(0,4)</div>
 
<div class="up bottom " onclick="togglered(this);">(0,5)</div>
<div class="up right" onclick="togglered(this);">(0,6)</div>
</div>
<div class="line">
<div class="left right" onclick="togglered(this);">(1,0)</div>
<div class="up left " onclick="togglered(this);">(1,1)</div>
<div class="up " onclick="togglered(this);">(1,2)</div>
<div class="up " onclick="togglered(this);">(1,3)</div>
<div class="up bottom " onclick="togglered(this);">(1,4)</div>
<div class="up bottom right" onclick="togglered(this);">(1,5)</div>
 
<div class="left right" onclick="togglered(this);">(1,6)</div>
</div>
<div class="line">
<div class="left right" onclick="togglered(this);">(2,0)</div>
<div class="left bottom right" onclick="togglered(this);">(2,1)</div>
<div class="left " onclick="togglered(this);">(2,2)</div>
<div class="bottom " onclick="togglered(this);">(2,3)</div>
<div class="up right" onclick="togglered(this);">(2,4)</div>
<div class="up left " onclick="togglered(this);">(2,5)</div>
<div class="right" onclick="togglered(this);">(2,6)</div>
 
</div>
<div class="line">
<div class="left " onclick="togglered(this);">(3,0)</div>
<div class="up bottom " onclick="togglered(this);">(3,1)</div>
<div class="right" onclick="togglered(this);">(3,2)</div>
<div class="up left right" onclick="togglered(this);">(3,3)</div>
<div class="left right" onclick="togglered(this);">(3,4)</div>
<div class="left right" onclick="togglered(this);">(3,5)</div>
<div class="left right" onclick="togglered(this);">(3,6)</div>
</div>
 
<div class="line">
<div class="left bottom " onclick="togglered(this);">(4,0)</div>
<div class="up right" onclick="togglered(this);">(4,1)</div>
<div class="left " onclick="togglered(this);">(4,2)</div>
<div class="" onclick="togglered(this);">(4,3)</div>
<div class="bottom right" onclick="togglered(this);">(4,4)</div>
<div class="left right" onclick="togglered(this);">(4,5)</div>
<div class="left right" onclick="togglered(this);">(4,6)</div>
</div>
<div class="line">
 
<div class="up left right" onclick="togglered(this);">(5,0)</div>
<div class="left bottom right" onclick="togglered(this);">(5,1)</div>
<div class="left bottom " onclick="togglered(this);">(5,2)</div>
<div class="bottom " onclick="togglered(this);">(5,3)</div>
<div class="up bottom right" onclick="togglered(this);">(5,4)</div>
<div class="left right" onclick="togglered(this);">(5,5)</div>
<div class="left right" onclick="togglered(this);">(5,6)</div>
</div>
<div class="line">
<div class="left bottom " onclick="togglered(this);">(6,0)</div>
 
<div class="up bottom " onclick="togglered(this);">(6,1)</div>
<div class="up bottom " onclick="togglered(this);">(6,2)</div>
<div class="up bottom " onclick="togglered(this);">(6,3)</div>
<div class="up bottom " onclick="togglered(this);">(6,4)</div>
<div class="bottom " onclick="togglered(this);">(6,5)</div>
<div class="bottom right" onclick="togglered(this);">(6,6)</div>
</div>


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1262138
0x90
Posté le 08-12-2005 à 21:08:37  profilanswer
 

fra0 a écrit :

comme compilateur de référence je vous propose
 
http://www.delorie.com/djgpp/compile/
 
vous en pensez quoi ?


 
Il est plus C99 compliant que gcc ?


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1262145
fra0
Posté le 08-12-2005 à 21:15:01  profilanswer
 

lol non je crois pas
mais au moins tout le monde aura les mêmes warnings
enfin j'dis ça comme ça

n°1262148
0x90
Posté le 08-12-2005 à 21:19:10  profilanswer
 

bha tlm peut utiliser gcc aussi [:spamafote]
 
(j'ai trouvé le bug qui fesait foirer celui de masklinn, rien de dépendant de l'algo, juste un ptit bug de chez bug, je poste sous peu )


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1262155
0x90
Posté le 08-12-2005 à 21:27:25  profilanswer
 

enfin, cuila fonctionne, et fait 393 si jme trompe pas :


#define H 5
#define W 5
#define DI 0
#define DJ 0
#define AI 3
#define AJ 3
static char l[H][W] =  
{{0x7, 0x5, 0x0, 0x5, 0x9},
{0x3, 0x1, 0x4, 0x9, 0xa},
{0x0, 0xc, 0x3, 0x4, 0x0},
{0xa, 0x3, 0xc, 0xb, 0xa},
{0xe, 0x6, 0x1, 0xc, 0xe}};
 
#define a(a,b) &&~*(* l+p+a)&16&&b&~(*( *l+p)|=16)&&f (a+p)||
#include                                            <stdio.h>
int f(int p){return(DJ*W+DI==p||p>=W a(-W,1)(p+1)%W a(1,8)p+W
<H*W a(W                                            ,4)p%W a(
-1,2)0)&&printf("(%i,%i)\n",p/W,p%W);}int main(){f(W*AJ+AI);}


 
[edited] un ptit détail amusant ... il n'y a pas de [] ;)


Message édité par 0x90 le 08-12-2005 à 21:36:21

---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1262165
matafan
Posté le 08-12-2005 à 21:35:49  profilanswer
 

Bon 403 vite fait pendant la pose (même algo récursif que mon premier, un peu condensé) :

Code :
  1. #define H 5
  2. #define W 5
  3. #define DI 0
  4. #define DJ 0
  5. #define AI 3
  6. #define AJ 3
  7. static char l[H][W] = 
  8. {{0x7, 0x5, 0x0, 0x5, 0x9},
  9. {0x3, 0x1, 0x4, 0x9, 0xa},
  10. {0x0, 0xc, 0x3, 0x4, 0x0},
  11. {0xa, 0x3, 0xc, 0xb, 0xa},
  12. {0xe, 0x6, 0x1, 0xc, 0xe}};
  13. #include <stdio.h>
  14. #define U unsigned
  15. #define L l[i][j]
  16. #define T(x) || ~L&x && f(i
  17. U f(U i, U j)
  18. {
  19.         return i<H && j<W && ~L&16
  20.                && (L|=16)
  21.                && (i==DI && j==DJ
  22.                    T(1)-1,j)
  23.                    T(2),j-1)
  24.                    T(4)+1,j)
  25.                    T(8),j+1))
  26.                && printf("(%u,%u)\n", i, j);
  27. }
  28. int main()
  29. {
  30.         return f(AI,AJ);
  31. }


 
Edit : "?:" inutile + de-obfusque


Message édité par matafan le 08-12-2005 à 23:29:27
n°1262170
masklinn
í dag viðrar vel til loftárása
Posté le 08-12-2005 à 21:40:55  profilanswer
 

Bon, j'ai fait un visualisateur mais il est en Python, tourne théoriquement sous Windows, X, MacOS, ... (Tkinter)
 
Suffit d'avoir Python ( http://python.org/2.4.2/ ), le toolkit graphique est standard.
 
Le fichier "data.py" est le fichier de config, éditez le pour les mazes. Le format est identique au format C, sauf qu'on remplace les "{}" par des "()" (vous pouvez faire un mass replace après copier/coller de vos mazes)
 
startX, startY, endX, endY je pense que la signification est claire
 
les triples guillemets servent à faire du commentaire de masse (en réalité ça crée des strings multiline, mais python s'en fout, ici ça sert de commentaires), la taille des labys est calculée par Python.
 
J'ai inclus les 3 labys de la première page, plus mon laby perso plus un laby perso "pacman obligatoire", suffit de commenter les labys non désirés et de décommenter celui que vous voulez voir (si vous en décommentez plusieurs seul le dernier sera vu), de sauver et de lancer le script principal.
 
Script principal: http://masklinnscans.free.fr/mazeDisplay.py
fichier de conf initial: http://masklinnscans.free.fr/data.py
 
edit: avec les fichiers c'est mieux
Si vous trouvez des comportements bizarres, dites le moi, ya ptet des erreurs dans le machin :o
 
Evitez de regarder le code par contre, s'super crade


Message édité par masklinn le 08-12-2005 à 21:43:19

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1262192
0x90
Posté le 08-12-2005 à 22:12:00  profilanswer
 

http://pastebin.com/454574
 
avec le même fichier data.py , mais cette fois ci il sort une page waibeuh comme celle que j'ai mauchement pasté auparavant, avec les elements togglables ( pratique pour suivre le parcours de l'algo )


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1262201
fra0
Posté le 08-12-2005 à 22:30:57  profilanswer
 

Code :
  1. #define H 5
  2. #define W 5
  3. #define DI 0
  4. #define DJ 0
  5. #define AI 3
  6. #define AJ 3
  7. static char l[H][W] =
  8. {{0x7, 0x5, 0x0, 0x5, 0x9},
  9. {0x3, 0x1, 0x4, 0x9, 0xa},
  10. {0x0, 0xc, 0x3, 0x4, 0x0},
  11. {0xa, 0x3, 0xc, 0xb, 0xa},
  12. {0xe, 0x6, 0x1, 0xc, 0xe}};
  13. #include <stdio.h>
  14. #define I l[i][j]
  15. #define l(a,b) j)||b&&~I&a&&p(i
  16. int p(int i,int j)
  17. {
  18.      return I<16?I|=64,!(i-DI|DJ-l(1,i)-1,l
  19.      (2,j),-1+l(4,i<H-1)+1,l(8,j<W-1),1+j)?
  20.      printf("(%i,%i)\n",i,j):0:0;}int main(
  21.      ){p(AI,AJ);
  22. }


 
389
(sans le dernier retun; edit corrigé pour matafan)
 
qui peut devenir le petit 370 (voire 364)
 
#define H 5
#define W 5
#define DI 0
#define DJ 0
#define AI 3
#define AJ 3
 
static char l[H*W] =
{0x7, 0x5, 0x0, 0x5, 0x9,
0x3, 0x1, 0x4, 0x9, 0xa,
0x0, 0xc, 0x3, 0x4, 0x0,
0xa, 0x3, 0xc, 0xb, 0xa,
0xe, 0x6, 0x1, 0xc, 0xe};
 
#include <stdio.h>
#define p ~l[o]
         
size_t f(size_t o)
{        
return o<W*H&&p&64&&(l[o]|=64)
&&(o==DI*W+DJ
||p&1&&f(o-W)
||p&2&&f(o-1)
||p&4&&f(o+W)
+p&8&&f(o+1))*printf("(%u,%u)\n",o/W,o%W);
}int main(){f(AI*W+AJ);}


Message édité par fra0 le 09-12-2005 à 05:15:05
n°1262217
matafan
Posté le 08-12-2005 à 23:22:06  profilanswer
 

T'es sur que ton code ne sort pas du labyrinthe si un bord n'a pas de mur ? Je ne vois pas ou tu testes que tu n'es pas sur un bord avant d'appeler f(o-W), f(o-1), f(o+1) et f(o+W). Je dis ca parce que j'ai moi aussi essaye d'utiliser un seul indice, mais a cause de la detection des bords il etait finalement plus efficace de rester a deux indices.

n°1262221
red factio​n
Posté le 08-12-2005 à 23:36:20  profilanswer
 

457   :D


Message édité par red faction le 08-12-2005 à 23:42:04
n°1262231
FlorentG
Posté le 08-12-2005 à 23:45:30  profilanswer
 

J'essaye encore de trouver l'algo :D

n°1262254
0x90
Posté le 09-12-2005 à 00:20:27  profilanswer
 

Encore un peu réduit, y'a des trucs bêtes auxquels on pense pas dessuite ...


#define H 5
#define W 5
#define DI 0
#define DJ 0
#define AI 3
#define AJ 3
static char l[H][W] =  
{{0x7, 0x5, 0x0, 0x5, 0x9},
{0x3, 0x1, 0x4, 0x9, 0xa},
{0x0, 0xc, 0x3, 0x4, 0x0},
{0xa, 0x3, 0xc, 0xb, 0xa},
{0xe, 0x6, 0x1, 0xc, 0xe}};
 
#define a(a,b) &&~*(*l+p+a)&16&&~(*(*l+p)|=16)&b&&f(a+p)||
#include                                         <stdio.h>
int f(int p){(DJ*W+DI==p||p>=W a(-W,1)(p+1)%W a(1,8)p+W<H*
W a(W,4)                                         p%W a(-1,
2)0)&&printf("(%i,%i)\n",p/W,p%W);}int main(){f(W*AJ+AI);}


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1262282
matafan
Posté le 09-12-2005 à 03:54:13  profilanswer
 

C'est pas super correct si on n'a pas de return dans une fonction non void. C99 ne dit apparemment rien à ce sujet, donc à priori le comportement est indéfini. Je propose qu'on mette tous un return explicite dans les fonctions non void, histoire d'être à égalité.
 
Sinon ma solution qui est probablement ma solution finale ou pas loin :

#define H 5
#define W 5
#define DI 0
#define DJ 0
#define AI 3
#define AJ 3
static char l[H][W] =
{{0x7, 0x5, 0x0, 0x5, 0x9},
 {0x3, 0x1, 0x4, 0x9, 0xa},
 {0x0, 0xc, 0x3, 0x4, 0x0},
 {0xa, 0x3, 0xc, 0xb, 0xa},
 {0xe, 0x6, 0x1, 0xc, 0xe}};
 
       #include<stdio.h>
    # define   U  unsigned
  # define   L  l  [i]  [j]
 # define  T      & ~L &&f(i
 U f(U i,U
j){return
i<H &&j<W
&&16&~L&&
(L|=16)&&
(i==DI && j
 ==DJ||1 T        - 1, j)||2
 T,j-1)||4 T +  1 , j)||8 T,
  j+1))&&printf("(%u,%u)\n"
   ,i,j);} int main (  ) {
       return f(AI,AJ);}


397 caractères (385 sans les return). Franchement je ne pense pas qu'on puisse gagner beaucoup plus avec le même algo (parcours en profondeur).
 
Edit : rahhh le forum me bouffe la présentation.

Message cité 2 fois
Message édité par matafan le 09-12-2005 à 04:39:33
n°1262283
fra0
Posté le 09-12-2005 à 04:54:52  profilanswer
 

alors c'est ton dernier mot ?
 
ne néglige pas la puissance du L<16  ;)

n°1262289
0x90
Posté le 09-12-2005 à 07:52:00  profilanswer
 

matafan a écrit :

C'est pas super correct si on n'a pas de return dans une fonction non void. C99 ne dit apparemment rien à ce sujet, donc à priori le comportement est indéfini. Je propose qu'on mette tous un return explicite dans les fonctions non void, histoire d'être à égalité.
 
Sinon ma solution qui est probablement ma solution finale ou pas loin :

#define H 5
#define W 5
#define DI 0
#define DJ 0
#define AI 3
#define AJ 3
static char l[H][W] =
{{0x7, 0x5, 0x0, 0x5, 0x9},
 {0x3, 0x1, 0x4, 0x9, 0xa},
 {0x0, 0xc, 0x3, 0x4, 0x0},
 {0xa, 0x3, 0xc, 0xb, 0xa},
 {0xe, 0x6, 0x1, 0xc, 0xe}};
 
       #include<stdio.h>
    # define   U  unsigned
  # define   L  l  [i]  [j]
 # define  T      & ~L &&f(i
 U f(U i,U
j){return
i<H &&j<W
&&16&~L&&
(L|=16)&&
(i==DI && j
 ==DJ||1 T        - 1, j)||2
 T,j-1)||4 T +  1 , j)||8 T,
  j+1))&&printf("(%u,%u)\n"
   ,i,j);} int main (  ) {
       return f(AI,AJ);}


397 caractères (385 sans les return). Franchement je ne pense pas qu'on puisse gagner beaucoup plus avec le même algo (parcours en profondeur).
 
Edit : rahhh le forum me bouffe la présentation.


 
Bha jme base sur le fait que gcc warne pas [:spamafote]


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1262291
Ummon
Posté le 09-12-2005 à 08:07:38  profilanswer
 

0x90 a écrit :

Encore un peu réduit, y'a des trucs bêtes auxquels on pense pas dessuite ...


code



Je pense que t'as dû inverser I et J à un certain moment. Ton algo s'arrete en (4,0) au lieu de (0,4) sur le deuxième labyrinthe de test.

n°1262294
Emmanuel D​elahaye
C is a sharp tool
Posté le 09-12-2005 à 08:18:30  profilanswer
 

matafan a écrit :

C'est pas super correct si on n'a pas de return dans une fonction non void. C99 ne dit apparemment rien à ce sujet, donc à priori le comportement est indéfini.


En C99, le 'return 0;' du main() est implicite.


int main (void)
{
}


est un code C99 correct.
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1262311
PowerKiKi
Posté le 09-12-2005 à 09:21:33  profilanswer
 

Hier, je marchais dans le désert quand j'ai eu une apparition. La parenthèse etait mal placée.
En passant je me suis permis une optimisation qui me fait passer a 394 caractères:

Code :
  1. #define H 5
  2. #define W 5
  3. #define DI 0
  4. #define DJ 0
  5. #define AI 3
  6. #define AJ 3
  7. static char l[H][W] = 
  8. {{0x7, 0x5, 0x0, 0x5, 0x9},
  9. {0x3, 0x1, 0x4, 0x9, 0xa},
  10. {0x0, 0xc, 0x3, 0x4, 0x0},
  11. {0xa, 0x3, 0xc, 0xb, 0xa},
  12. {0xe, 0x6, 0x1, 0xc, 0xe}};
  13. #include <stdio.h>
  14. #define L l[i][j]
  15. #define E(c, x) )|| c && ~L & x && r(i
  16. int r(int i, int j){
  17.    return L<16?L|=16,(i==DI&&j==DJ E(i,1)-1,j E(j,2),j-1 E(i<H-1,4)+1,j E(j<W-1,8),j+1)?printf("(%d,%d)\n",i,j):0:0;
  18. }
  19. int main(){
  20.    r(AI, AJ);
  21. }


Message édité par PowerKiKi le 09-12-2005 à 09:22:46
n°1262338
PowerKiKi
Posté le 09-12-2005 à 09:53:27  profilanswer
 

0x90 a écrit :


PS : on peut avoir la source du compteur de lettre pour nux ?


 
uh ouais... bon ... ca ete fait en vitesse, donc soyez pas trop critique plz:
 

Code :
  1. #include <iostream>
  2. #include <fstream>
  3. using namespace std;
  4. int main(int argc, char** argv)
  5. {
  6.    cout << endl;
  7.    if (argc == 1)
  8.    {
  9.       cout << "USAGE: " << argv[0] << " filename" << endl;
  10.       return 1;
  11.    }
  12.    ifstream file;
  13.    file.open(argv[1]);
  14.    if (!file)
  15.    {
  16.       cerr << "Error opening input stream" << endl;
  17.       return 1;
  18.    }
  19.    int nbCara = 0;
  20.    int nbCaraBlanc = 0;
  21.    char c;
  22.    while (!file.eof())
  23.    {
  24.       file.read(&c, 1);
  25.       if (c == '\t' || c == ' ' || c == '\n' || c == '\r')
  26.          nbCaraBlanc++;
  27.       else
  28.          nbCara++;
  29.    }
  30.    file.close();
  31.    cout << "file\t\t: " << argv[1] << endl << "printable chars : " << nbCara << "\nothers \t\t: " << nbCaraBlanc << "\ntotal \t\t: " << nbCara + nbCaraBlanc << endl;
  32. }

n°1262357
Emmanuel D​elahaye
C is a sharp tool
Posté le 09-12-2005 à 10:21:29  profilanswer
 

PowerKiKi a écrit :


Code :
  1. #include <iostream>
  2. #include <fstream>
  3. <...>



 
Ce qui ce dit en bon françaisC :


#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
 
#define APP "counter"
 
int main (int argc, char **argv)
{
   int ret = EXIT_SUCCESS;
   puts ("" );
   if (argc < 2)
   {
      printf ("USAGE: " APP " filename\n" );
      ret = EXIT_FAILURE;
   }
   else
   {
      FILE *file = fopen (argv[1], "r" );
 
      if (file != NULL)
      {
         unsigned long nbCara = 0;
         unsigned long nbCaraBlanc = 0;
         int c;
         
         while ((c = fgetc (file)) != EOF)
         {
            if (isspace (c))
            {
               nbCaraBlanc++;
            }
            else
            {
               nbCara++;
            }
         }
         fclose (file), file = NULL;
 
         printf ("file: %s\n"
                 "non blank chars: %lu\n"
                 "others: %lu\n"
                 "total: %lu\n"
                 ,argv[1]
                 ,nbCara
                 ,nbCaraBlanc
                 ,nbCara + nbCaraBlanc
            );
 
      }
      else
      {
         perror (argv[1]);
         ret = EXIT_FAILURE;
      }
   }
   return ret;
}


Message édité par Emmanuel Delahaye le 09-12-2005 à 10:22:15

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1262374
red factio​n
Posté le 09-12-2005 à 10:33:42  profilanswer
 

Code :
  1. #define H 5
  2. #define W 5
  3. #define DI 2
  4. #define DJ 2
  5. #define AI 0
  6. #define AJ 4
  7. static char l[H][W] = 
  8. {{0x0, 0x0, 0x0, 0x0, 0x0},
  9. {0x0, 0x0, 0x4, 0x0, 0x0},
  10. {0x0, 0x8, 0xb, 0x2, 0x0},
  11. {0x0, 0x0, 0x0, 0x0, 0x0},
  12. {0x0, 0x0, 0x0, 0x0, 0x0}};
  13. #include <stdio.h>
  14. #define Y int
  15. Y t[H*W];
  16. Y r(Y p,Y x,Y n){   
  17.     return ((t[p] || !x || ((l[p/W][p%W]>>n)&1)) || (printf("(%d %d)\n",p/W,p%H),t[p]=1)&&((!((AI*W+AJ)==p)&&(r(p+1,(p%W)!=W-1,3)&&r(p-1,(p%W),1)&&r(p+W,(p/W)!=H-1,2)&&r(p-W,(p/W),0)||(t[p]=0)))));             
  18. }
  19. int main()
  20. {
  21.   return r(DI*W+DJ,1,2);
  22. }


 
ma modeste contrib
 
bon ok jsuis hors concours mais jai essaye qd mm   [:yamusha]


Message édité par red faction le 09-12-2005 à 10:37:03
n°1262381
Ummon
Posté le 09-12-2005 à 10:39:24  profilanswer
 

J'ai l'impression que ton algo n'aime pas le premier labyrinthe ...

n°1262664
matafan
Posté le 09-12-2005 à 15:13:03  profilanswer
 

Emmanuel Delahaye a écrit :

En C99, le 'return 0;' du main() est implicite.


int main (void)
{
}


est un code C99 correct.


Je parlais du return qui manque dans la fonction récursive.

n°1262687
matafan
Posté le 09-12-2005 à 15:25:07  profilanswer
 

Donc sans return de main() qu'on peut enlever sans danger, et avec le L<16 (merci fra0 :love:), je suis à 390. Je donne mon code désobfusqué à la science :

Code :
  1. #define H 5
  2. #define W 5
  3. #define DI 0
  4. #define DJ 0
  5. #define AI 3
  6. #define AJ 3
  7. static char l[H][W] = 
  8. {{0x7, 0x5, 0x0, 0x5, 0x9},
  9. {0x3, 0x1, 0x4, 0x9, 0xa},
  10. {0x0, 0xc, 0x3, 0x4, 0x0},
  11. {0xa, 0x3, 0xc, 0xb, 0xa},
  12. {0xe, 0x6, 0x1, 0xc, 0xe}};
  13. #include <stdio.h>
  14. #define U unsigned
  15. #define L l[i][j]
  16. #define T &~L && f(i
  17. U f(U i, U j)
  18. {
  19. return i<H && j<W && 16>L
  20.        && (L|=16)
  21.        && (i==DI && j==DJ
  22.     || 1 T-1,j)
  23.            || 2 T,j-1)
  24.            || 4 T+1,j)
  25.     || 8 T,j+1))
  26.        && printf("(%u,%u)\n", i, j);
  27. }
  28. int main()
  29. {
  30. f(AI,AJ);
  31. }


Message édité par matafan le 09-12-2005 à 15:25:54
n°1262720
red factio​n
Posté le 09-12-2005 à 15:37:14  profilanswer
 

c special de voir que tout le monde se rapproche de la mm technique.
1 seule fonction recursive,un gros return avec des if planques avec des && et ||
 
pourtant jai fait mon code sans aller voir ce qui avait ete deja fait  :o
 
javais egalement essaye la technique "je reste tjs collé sur le coté d'un mur"
mais avec les nouveaux labyrinthes c plus trop ca  :sweat:


Message édité par red faction le 09-12-2005 à 15:40:12
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4

Aller à :
Ajouter une réponse
 

Sujets relatifs
Problème de lecture .wmv dans le code HTMLComment on code des bretelles en ada ?
récupérer le code source page Web https..(dhtml, javascript) avec vba?Code VBA permettant de supprimer un faux message d'erreur
Code de retour d'un batch windowsj'ai du code vbscript que j'aimerais transformer en vb6
[VBA-EXCEL 2003] SaveCopyAs mais sans le code VBA ou macroj'ai le code source des page html qui s'affiche en local
Fonction pour pour convertir le code HTMLPb code php : page de connexion
Plus de sujets relatifs à : [Concours de code]Echauffement pour l'IOCCC


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