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

 


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

[Concours de code]Echauffement pour l'IOCCC

n°1262720
red factio​n
Posté le 09-12-2005 à 15:37:14  profilanswer
 

Reprise du message précédent :
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 09-12-2005 à 15:37:14  profilanswer
 

n°1263434
fra0
Posté le 10-12-2005 à 02:15:59  profilanswer
 

faut dire que l'énoncé du problème est assez dirigiste
 
allé un 385 pour la route
 
blurps  
 

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 size_t
  15.      #define k l[i][j]
  16.      #define l(o)j)||o&~k&&_(i
  17.      u _(u i, u j)
  18.      {
  19.          return i<H&j<W&&k<16?k+=64,!(
  20.          i-DI|DJ-l(1)-1,l(2),-1+l(4)+1
  21.          ,l(8),1+j)?printf("(%u,%u)\n"
  22.          ,i,j):0:0;}int main(){_(AI,AJ);
  23.      }


 
 :sol:


Message édité par fra0 le 10-12-2005 à 04:24:46
n°1263470
el muchach​o
Comfortably Numb
Posté le 10-12-2005 à 10:31:42  profilanswer
 
n°1263739
red factio​n
Posté le 10-12-2005 à 19:48:49  profilanswer
 

je suggere un generateur pour la suite :o

n°1263757
Ummon
Posté le 10-12-2005 à 20:49:40  profilanswer
 

Ok, alors la semaine prochaine ça sera le générateur de labyrinthes ;) (qui ont une solution, hein)

n°1263783
0x90
Posté le 10-12-2005 à 22:24:48  profilanswer
 

Ca serait bien kkchose permettant plus de créativité, par exemple de devoir "en faire un max" en 1K plutot que devoir faire le moins de caractères possible ptêtre ...


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1263791
red factio​n
Posté le 10-12-2005 à 22:30:48  profilanswer
 
n°1263796
0x90
Posté le 10-12-2005 à 22:36:57  profilanswer
 

mwarf jme doutais k'un truc du genre allait sortir ;) mais spa trop à quoi je pensais, rien de forcément artistique, et 1K de source pas de binaire ;)


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1263839
fra0
Posté le 11-12-2005 à 05:04:56  profilanswer
 

ouais ? ça a un petit air de déjà vu le maze generator non...
 
 
un facile en attendant -> afficher le plus grand nombre premier possible (en entier, sans aucun opérateur),
avec les mêmes règles de comptage, enchère minimum : 75 caractères.
 
 

n°1264045
matafan
Posté le 11-12-2005 à 17:52:59  profilanswer
 

En 98 caractères imprimables, le programme suivant permet d'afficher le plus grand nombre premier actuellement connu (2^25964951-1) :

Code :
  1. #include <stdio.h>
  2. char *p = "";
  3. int
  4. main()
  5. {
  6. while (*p) {
  7.  int f=16, c=48;
  8.  while (f/=2) c += *p++ - 9 ? f : 0;
  9.  putchar(c);
  10. }
  11. }


Il suffit de définir p comme la représentation DCB du nombre premier en question (voir http://www.isthe.com/chongo/tech/m [...] ime-c.html ), l'espace étant le 1 et la tabulation le 0 :D


Message édité par matafan le 11-12-2005 à 17:54:54
mood
Publicité
Posté le 11-12-2005 à 17:52:59  profilanswer
 

n°1264096
fra0
Posté le 11-12-2005 à 19:05:51  profilanswer
 

nickel  :jap:  
mais je crois pas que tu ais vraiment besoin de la tabulation

n°1264109
fra0
Posté le 11-12-2005 à 19:45:57  profilanswer
 

^^^ enfin si tu oublies le BCD
par contre la construction char *p = "\t  \t\t  \t\t  \t"; n'est pas portable.
il vaut mieux utiliser char p[]="\t  \t\t  \t\t  \t"; dsl

Message cité 1 fois
Message édité par fra0 le 11-12-2005 à 19:48:36
n°1264111
Emmanuel D​elahaye
C is a sharp tool
Posté le 11-12-2005 à 19:49:16  profilanswer
 

fra0 a écrit :

par contre la construction char *p = "\t  \t\t  \t\t  \t"; n'est pas portable.
il faut utiliser char p[]="\t  \t\t  \t\t  \t"; dsl


Gné ? Tant qu'on ne cherche pas à écrire dans la chaine, c'est portable.
 
Par contre, si tu mets un tableau, p devient une 'non-modifiable l-value'... et tu ne peux plus faire p++...
 
Avec ça :  


#include <stdio.h>
 
char *p="\t  \t\t  \t\t  \t";
 
int main()
{
   while (*p)
   {
      int f = 16, c = 48;
      while (f /= 2)
         c += *p++ - 9 ? f : 0;
      putchar(c);
   }
   return 0;
}


J'obtiens le nombre de la Bête, c'est normal ?


Message édité par Emmanuel Delahaye le 11-12-2005 à 19:51:05

---------------
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°1264115
matafan
Posté le 11-12-2005 à 20:02:11  profilanswer
 

Oui c'est normal, tu as initialisé p à 0110_0110_0110, ce qui code "666". Mais attention, pour rester à 98 caractères il ne faut pas utiliser '\t' mais écrire une tabulation directtement dans le .c :

Code :
  1. char *p = "            ";

n°1264135
fra0
Posté le 11-12-2005 à 20:44:43  profilanswer
 

bien entendu...
 
pour le tableau, sauf ton respect matafan, c'est quand même assez pitoyable d'initialiser un pointeur avec un chaine de carctères.
 
 
 
 

n°1264160
Emmanuel D​elahaye
C is a sharp tool
Posté le 11-12-2005 à 21:50:01  profilanswer
 

matafan a écrit :

Oui c'est normal, tu as initialisé p à 0110_0110_0110, ce qui code "666". Mais attention, pour rester à 98 caractères il ne faut pas utiliser '\t' mais écrire une tabulation directtement dans le .c :

Code :
  1. char *p = "            ";


Argh, il faut que je modifie les reglages de mon éditeur qui n'accepte aucune tabulation réelle...


---------------
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°1264162
Emmanuel D​elahaye
C is a sharp tool
Posté le 11-12-2005 à 21:50:31  profilanswer
 

fra0 a écrit :

pour le tableau, c'est quand même assez pitoyable d'initialiser un pointeur avec un chaine de carctères.


J'ai toujours pas compris pourquoi. Je dois pas avoir assez de neurones en état de marche. Tu peux expliquer ? Pas trop vite, je suis blond...
 
 

Message cité 2 fois
Message édité par Emmanuel Delahaye le 11-12-2005 à 21:52:24

---------------
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°1264164
lorill
Posté le 11-12-2005 à 21:51:19  profilanswer
 


ai appuyé sur ma touche TAB ;)

n°1264167
Emmanuel D​elahaye
C is a sharp tool
Posté le 11-12-2005 à 21:54:12  profilanswer
 

lorill a écrit :

ai appuyé sur ma touche TAB ;)


Ah, c'est ça ! (près du A, bien sûr). La vache, c'est partit comme un pet sur une toile cirée !


Message édité par Emmanuel Delahaye le 11-12-2005 à 22:01:59

---------------
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°1264168
FlorentG
Unité de Masse
Posté le 11-12-2005 à 21:56:13  profilanswer
 

On peut toujours concourir pour le labyrinthe ?

n°1264172
0x90
Posté le 11-12-2005 à 21:58:35  profilanswer
 

Bah evidement spa un concours officiel touSsa ...


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1264173
matafan
Posté le 11-12-2005 à 21:59:00  profilanswer
 

Comme la solution qui consiste à coder le nombre dans le .c n'est pas très honnête :whistle: j'ai fais le programme suivant, qui calcule et affiche la représentation décimale du nombre de Mersenne 2^25964951-1, qui est le plus grand nombre premier actuellement connu. Le source fait 167 caractères :

Code :
  1. #include <stdio.h>
  2. #define w ;while(
  3. int _[2<<23];
  4. int
  5. main()
  6. {
  7. int n=25964951, m=1;
  8. ++*_
  9. w n--) {
  10.  int i=0, c=0
  11.  w i<m) c=2*_[i]+c, _[i++]=c%10, c/=10
  12.  w c--) ++_[m++];
  13. }
  14. --*_
  15. w m) putchar(48+_[--m]);
  16. }


Pour être honnête, ça prend tellement longtemps que je n'ai pas essayé avec 25964951. Par contre vous pouvez essayer avec des puissances de 2 plus petites, 2203 par exemple (il suffit d'initialiser i à 2203 )... Il affichera les 664 chiffres de 2^2203-1, qui est premier.
 
Voir http://www.isthe.com/chongo/tech/m [...] senne.html pour une liste de nombres permiers de Mersenne.


Message édité par matafan le 12-12-2005 à 00:20:04
n°1264175
FlorentG
Unité de Masse
Posté le 11-12-2005 à 21:59:35  profilanswer
 

0x90 a écrit :

Bah evidement spa un concours officiel touSsa ...


Je sais, c'était juste au cas où :)

n°1264265
fra0
Posté le 12-12-2005 à 04:09:17  profilanswer
 

Emmanuel Delahaye a écrit :

J'ai toujours pas compris pourquoi. Je dois pas avoir assez de neurones en état de marche. Tu peux expliquer ? Pas trop vite, je suis blond...


 
ok alors je confirme
 
* c'est pas portable (en C++ :D (en tout cas c'est déprécié))
en plus, ça rend toute fonction qui prend un char* ou void* en paramètre suspecte (strtok au hasard)
sans modifier la chaine, on peut casser le pointeur comme un vrai
et dans le pire des cas, ça double le nombre d'accès mémoire (accès à la valeur du pointeur, accès à l'adresse pointée par cette valeur)
 
en tout cas pas de ça dans la solution à 75 (ce sera le 3ème critère de jugement après la taille du nombre premier et la petitesse (et la bassesse) du code)
 
 
 
 
 

n°1264269
matafan
Posté le 12-12-2005 à 05:50:05  profilanswer
 

Si on veut du petit code, j'ai 2^61-1 en 52 caractères (ou 50 sur une machine 64 bits) :D

Code :
  1. #include <stdio.h>
  2. int
  3. main()
  4. {
  5.         printf("%llu", -1ULL>>3);
  6. }

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4
Page Suivante

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