#1376 Le 15/11/2010, à 18:46
- Pylades
Re : /* Topic des codeurs couche-tard [2] */
Mais il a joué avec les lignes vierges.
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#1377 Le 15/11/2010, à 18:51
- grim7reaper
Re : /* Topic des codeurs couche-tard [2] */
Pas spécialement non plus, je n'ai pas sur-condensé ni sur-aéré le code.
Bande de jaloux
Dernière modification par grim7reaper (Le 15/11/2010, à 19:54)
Hors ligne
#1378 Le 15/11/2010, à 21:48
- helly
Re : /* Topic des codeurs couche-tard [2] */
BN.
Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.
Hors ligne
#1379 Le 16/11/2010, à 00:30
- cm-t
Re : /* Topic des codeurs couche-tard [2] */
'Nuit;
Actu Ubuntu ☺/
Pauses Ubuntu sur Paris \_< -t
[(π)] La Quadrature du net
Hors ligne
#1380 Le 16/11/2010, à 00:36
- Pylades
Re : /* Topic des codeurs couche-tard [2] */
M'en fous, un jour j'en coderai un en brainfuck.
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#1381 Le 16/11/2010, à 00:48
- grim7reaper
Re : /* Topic des codeurs couche-tard [2] */
Le pire c'est que j'en ai déjà vu…
Dernière modification par grim7reaper (Le 16/11/2010, à 01:05)
Hors ligne
#1382 Le 16/11/2010, à 01:02
- nesthib
Re : /* Topic des codeurs couche-tard [2] */
plop
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#1383 Le 16/11/2010, à 01:19
- Кຼزດ
Re : /* Topic des codeurs couche-tard [2] */
plip
dou
Hors ligne
#1384 Le 16/11/2010, à 02:03
- tshirtman
Re : /* Topic des codeurs couche-tard [2] */
M'en fous, un jour j'en coderai un en brainfuck.
ça par contre, à part pour faire baver les gens dont je parle plus haut, je ne vois pas l'intérêt…
implémenter python en python par contre
Hors ligne
#1385 Le 16/11/2010, à 02:05
- gnuuat
Re : /* Topic des codeurs couche-tard [2] */
echo 'plop';
Bisouland : embrassez les tous !
Volez les points d'amour de vos adversaires en les embrassant, dans ce jeu gratuit par navigateur !
Hors ligne
#1386 Le 16/11/2010, à 03:16
- nesthib
Re : /* Topic des codeurs couche-tard [2] */
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#1387 Le 16/11/2010, à 03:22
- samυncle
Re : /* Topic des codeurs couche-tard [2] */
.
Hello world
Hors ligne
#1388 Le 16/11/2010, à 09:21
- tshirtman
Re : /* Topic des codeurs couche-tard [2] */
TP xml, on doit générer des classes java permettant de manipuler des entitées correspondantes à la description donnée par un fichier xsd...
mais nul n'a précisé que le langage d'implémentation du programme générateur devait être Java
Python! \o/
Hors ligne
#1389 Le 16/11/2010, à 10:43
- helly
Re : /* Topic des codeurs couche-tard [2] */
Pylade a écrit :M'en fous, un jour j'en coderai un en brainfuck.
ça par contre, à part pour faire baver les gens dont je parle plus haut, je ne vois pas l'intérêt…
implémenter python en python par contre
C'est le serpent qui se mord la queue !
Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.
Hors ligne
#1390 Le 16/11/2010, à 10:55
- The Uploader
Re : /* Topic des codeurs couche-tard [2] */
j'ai envie de faire pypy.
Sinon (code d'exemple de cours, peut-être mal traduit) :
#include <SDL/SDL.h>//gcc fichier.c -lSDL
#include <stdint.h>
int main()
{
SDL_Surface* ecran;
SDL_Init(SDL_INIT_VIDEO);
ecran=SDL_SetVideoMode(640,480,24,SDL_HWSURFACE|SDL_DOUBLEBUF);
SDL_Surface* sprites=(SDL_Surface*)malloc(sizeof(SDL_Surface));sprites=SDL_LoadBMP("./generalsprites.bmp"); //contient les voitures, les têtes des joueurs, tout ça..
SDL_SetColorKey(sprites,SDL_SRCALPHA,SDL_SRCCOLORKEY);
SDL_MapRGB(sprites->format,186,254,202);
SDL_Surface* decor=(SDL_Surface*)malloc(sizeof(SDL_Surface));decor=SDL_LoadBMP("./deco.bmp"); //l'arrière-plan (vue de dessus)
int x=decor->w/2,y=decor->h/2;
SDL_Event event;
Uint8 *touches;
for(;;){ //boucle pour gérer les touches/événements (crade, mais c'est plus simple)
int quit=0;
while(SDL_PollEvent(&event)!=0){
if(event.type==quit)
quit=1;
}
if(quit)
break;
touches=SDL_GetKeyState(NULL);
if(touches[SDLK_LEFT])
x--;
SDL_Rect rcDeco;
rcDeco.x=x-320;
rcDeco.y=y-240;
rcDeco.w=640;
rcDeco.h=480;
SDL_BlitSurface(decor,&rcDeco,ecran,NULL);
SDL_Rect rc={158,141,30,23};
//rcDeco={305,230,30,23};
SDL_BlitSurface(sprites,&rc,ecran,&rcDeco);
SDL_Flip(ecran);
SDL_Delay(20); //pour y voir quelque chose au lieu de calculer le framerate, tout ça (c'est ce que j'ai compris)
SDL_Quit();
}
return 0;
}
J'ai une segmentation fault sur le premier LoadBMP... Image trop grande ?
(avec ou sans malloc c'est pareil).
Je me fait l'effet d'être un noob. La SDL, c'est pas si compliqué pourtant..
(c'est un projet de micro machines en réseau sous *nix).
Dernière modification par The Uploader (Le 16/11/2010, à 10:59)
- Oldies PC : Intel Pentium 3 @ 800 Mhz sur CM ASUS P2B-F, GeForce 4 Ti4800 SE, Disque Dur Hitachi 160 Go, 512 Mo de RAM, 3DFX Voodoo 2, Sound Blaster 16 ISA PnP, Windows 98 SE / XP)
- Desktop : Intel Core i7 6700K @ 4 GHz sur CM ASUS Z170-P, GeForce GTX 1070, SSD Samsung 850 EVO 1 To, 16 Go de RAM, Disque Dur Seagate Barracuda 3 To, Windows 10
Hors ligne
#1391 Le 16/11/2010, à 11:00
- helly
Re : /* Topic des codeurs couche-tard [2] */
ecran=SDL_SetVideoMode(640,480,24,SDL_HWSURFACE|SDL_DOUBLEBUF);
Essaye avec 32 à la place de 24 !
Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.
Hors ligne
#1392 Le 16/11/2010, à 11:12
- The Uploader
Re : /* Topic des codeurs couche-tard [2] */
la réponse rapide!
Merci.
Mhh, en fait que ce soit 24 ou 32 c'est sûr cette ligne que j'ai un Seg. Fault:
SDL_SetColorKey(sprites,SDL_SRCALPHA,SDL_SRCCOLORKEY);
désolé! >_<
Bon, de toute façon, je dois retourner sur un projet dont la date limite est plus proche (pour lequel je dois réaliser un script python pour GIMP pour transformer les images en images de type "comic book" - il faut que cela soit automatisé..)
Pour cela, j'ai une vidéo d'exemple (vive recordmydesktop! ), je modifierai ce post une fois que je l'aurais uploadé..
edit : voici la procédure :
dupliquer calque x2
Couleurs -> Seuil -> Auto [calque 1] (ou au pifomètre, ça dépend du rendu final..)
Filtres -> Détection des bords -> Différence gaussienne (7,0 - 1,0 [x] Normaliser [x] Inverser) [calque 2]
Couleurs -> Seuil -> Auto [calque 2] (ou au pifomètre, ça dépend du rendu final..)
Couleurs -> Niveaux -> 240 (seconde valeur) [calque 2]
Mode -> Multiplier [calque 1]
Monter [calque 3] en premier
Dupliquer [calque 1]
Fusionner vers le bas [calque 3]
Mode -> Couleur [calque 2]
Mode -> Saturation [calque 1]
Filtres -> Flou -> Flou gaussien (h 2,0 - v 2,0 - px - LRE) [calque 3]
Fusionner vers le bas [calque 2]
Fusionner vers le bas [calque 1]
Filtres -> Artistiques -> Effet de toile (Direction : En haut à droite, Profondeur : 1)
Dernière modification par The Uploader (Le 16/11/2010, à 12:33)
- Oldies PC : Intel Pentium 3 @ 800 Mhz sur CM ASUS P2B-F, GeForce 4 Ti4800 SE, Disque Dur Hitachi 160 Go, 512 Mo de RAM, 3DFX Voodoo 2, Sound Blaster 16 ISA PnP, Windows 98 SE / XP)
- Desktop : Intel Core i7 6700K @ 4 GHz sur CM ASUS Z170-P, GeForce GTX 1070, SSD Samsung 850 EVO 1 To, 16 Go de RAM, Disque Dur Seagate Barracuda 3 To, Windows 10
Hors ligne
#1393 Le 16/11/2010, à 12:38
- grim7reaper
Re : /* Topic des codeurs couche-tard [2] */
C'est du C ou du C++ ton truc ?
Je regarderais ça plus en détail ce soir, mais déjà quelques remarques :
- tes malloc sont totalement inutiles
- teste les retours de tes fonctions (SDL_Init, SDL_SetVideoMode mais surtout SDL_LoadBMP)
Dernière modification par grim7reaper (Le 16/11/2010, à 12:41)
Hors ligne
#1394 Le 16/11/2010, à 12:56
- tshirtman
Re : /* Topic des codeurs couche-tard [2] */
bon, mes constructions de classes java en utilisant python se passent bien, me reste à ajouter une methode générique exportant les champs en xml, je vais utiliser l'introspection. (ce sera plus simple je pense).
moins de 100 lignes pour l'instant (sans compter le stub de fonction décrit plus haut).
Hors ligne
#1395 Le 16/11/2010, à 13:12
- The Uploader
Re : /* Topic des codeurs couche-tard [2] */
Normalement le projet de micro machines en réseau avec la SDL c'est du C++ (simple préférence).
Ouais je m'en doutai pour les malloc..
- teste les retours de tes fonctions (SDL_Init, SDL_SetVideoMode mais surtout SDL_LoadBMP)
comme c'est un code d'exemple que je ne voulais pas complexifier et qui est censé fonctionner, j'ai pas vraiment fait ça (à part rajout !=0 au while) - j'me disais que j'avais loupé un truc. Mais à ce stade ("code d'exemple qui fonctionne toujours pas"), ça devient impératif, c'est vrai.
edit : voici pour la vidéo exemple de l'autre projet (à scripter pour GIMP, soit en Python avec le module gimpfu, soit avec l'autre langage de scriptfu dérivé de Scheme avec des () partout et tout moche et vachement dur à lire..) :
http://www.zshare.net/download/82761099bc87a96a/
Le problème de l'une (pyGimp) ou l'autre (scriptfu) API de scripting pour GIMP, c'est la documentation... Ce qui est recommandé c'est de regarder le code des scripts existants, mais ça remplace pas une bonne doc'! (surtout quand c'est du dérivé de Scheme nullement commenté..)
Dernière modification par The Uploader (Le 16/11/2010, à 14:05)
- Oldies PC : Intel Pentium 3 @ 800 Mhz sur CM ASUS P2B-F, GeForce 4 Ti4800 SE, Disque Dur Hitachi 160 Go, 512 Mo de RAM, 3DFX Voodoo 2, Sound Blaster 16 ISA PnP, Windows 98 SE / XP)
- Desktop : Intel Core i7 6700K @ 4 GHz sur CM ASUS Z170-P, GeForce GTX 1070, SSD Samsung 850 EVO 1 To, 16 Go de RAM, Disque Dur Seagate Barracuda 3 To, Windows 10
Hors ligne
#1396 Le 16/11/2010, à 18:07
- grim7reaper
Re : /* Topic des codeurs couche-tard [2] */
J'ai une segmentation fault sur le premier LoadBMP... Image trop grande ?
Non, enfin je ne connais pas ton image mais je ne pense pas.
Je me fait l'effet d'être un noob. La SDL, c'est pas si compliqué pourtant..
Manque d'attention tout bêtement, tu appelles SDL_Quit() dans ta boucle
Première itération, tu affiches et tu quittes la SDL.
Seconde itération, tu veux afficher après avoir quitter la SDL… BOUM !
Par contre, no problem sur les SDL_SetColorKey chez moi ?
Tes noms/chemins d'images sont correctes ?
Pour plus d'info, vérifie le retour de SDL_LoadBMP et affiche le retour de SDL_GetError.
Normalement le projet de micro machines en réseau avec la SDL c'est du C++ (simple préférence).
Ok, j'ai demandé car ce n'était pas clair.
Ton code est clairement un exemple de sabir C/C++, en gros ce qu'il ne faut pas faire . Mais bon, comme c'est un exemple vite fait je ne juge pas, je remarque seulement .
Côté C on à :
- allusion a gcc dans un commentaire
- utilisation de malloc
- utilisation de int pour quit au lieu de bool
Côté C++ (voire C99 pour certains trucs) on à :
- commentaires //
- déclaration de variable à la one again
- prototype de main
À toutes fins utile, je te présente une version réorganisée de ton code
#include <iostream>
#include <SDL/SDL.h>
int main()
{
SDL_Surface* ecran;
SDL_Surface* sprites;
SDL_Surface* decor;
SDL_Event event;
Uint8 *touches;
int x;
int y;
int status = -1;
if(SDL_Init(SDL_INIT_VIDEO) == -1)
{
std::cerr << "Unable to init SDL: " << SDL_GetError() << '\n';
}
else
{
bool quit = false;
ecran = SDL_SetVideoMode(640, 480, 24, SDL_HWSURFACE|SDL_DOUBLEBUF);
// Contient les voitures, les têtes des joueurs, tout ça...
sprites = SDL_LoadBMP("./generalsprites.bmp");
SDL_SetColorKey(sprites, SDL_SRCALPHA, SDL_SRCCOLORKEY);
SDL_MapRGB(sprites->format, 186, 254, 202);
// L'arrière-plan (vue de dessus).
decor = SDL_LoadBMP("./deco.bmp");
x = decor->w/2;
y = decor->h/2;
touches = SDL_GetKeyState(NULL);
while(!quit)
{
// Boucle pour gérer les touches/événements (crade, mais c'est plus
// simple).
while(SDL_PollEvent(&event))
{
quit = (event.type == SDL_QUIT);
}
if(!quit)
{
SDL_Rect rcDeco;
SDL_Rect rc={158, 141, 30, 23};
x = (touches[SDLK_LEFT]) ? x + 1 : x;
rcDeco.x = static_cast<Sint16>(x - 320);
rcDeco.y = static_cast<Sint16>(y - 240);
rcDeco.w = 640;
rcDeco.h = 480;
SDL_BlitSurface(decor, &rcDeco, ecran, NULL);
// rcDeco={305,230,30,23};
SDL_BlitSurface(sprites, &rc, ecran, &rcDeco);
SDL_Flip(ecran);
// Pour y voir quelque chose au lieu de calculer le framerate,
// tout ça (c'est ce que j'ai compris)
SDL_Delay(20);
}
}
status = 0;
SDL_Quit();
}
return status;
}
J'ai pas fais les tests de retour sur les SDL_LoadBMP (et le SDL_SetVideoMode) parce c'est typiquement le genre de merde que j'encapsule dans une classe pour ne plus me faire chier avec ^^.
Les modifs majeures que j'ai apporté sont la suppression des if inutiles et le retrait de SDL_GetKeyState (le tableau s'update tout seul, bon à savoir). Le reste c'est minime mais toujours bon à prendre (utilisation de bool, cast pour éviter les warnings,…)
Dernière modification par grim7reaper (Le 16/11/2010, à 19:17)
Hors ligne
#1397 Le 16/11/2010, à 18:40
- helly
Re : /* Topic des codeurs couche-tard [2] */
Mon interprète Brainfuck java marche \o/ !
142 lignes >_<.
(et j'ai pas encore fait la gestion des exceptions…)
Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.
Hors ligne
#1398 Le 16/11/2010, à 18:42
- grim7reaper
Re : /* Topic des codeurs couche-tard [2] */
#!/usr/bin/perl -w
use strict; # Brainfuck Interpreter | Author: grim7reaper | License: WTFPL
my $t = 30000; # Size of memory (in octet).
my @mem = (0)x$t;# Memory.
my $code = ""; # Source code.
my $dp = 0; # Data Pointer.
my $ip = 0; # Instruction Pointer.
my %l2r = (); # Pairs of square bracket.
my %r2l = (); # Pairs of square bracket (reverse of l2r).
my @left = (); # List of positions of left brackets.
my %symbols = # Symbols Table: http://aminet.net/dev/lang/brainfuck-2.readme
( ">" => sub{ $dp++; die "Segmentation Fault\n" if $dp >= $t; },
"<" => sub{ $dp--; die "Segmentation Fault\n" if $dp < 0; },
"+" => sub{ $mem[$dp]++; $mem[$dp] = 0 if $mem[$dp] > 255; },
"-" => sub{ $mem[$dp]--; $mem[$dp] = 255 if $mem[$dp] < 0; },
"." => sub{ print chr($mem[$dp]); },
"," => sub{ $mem[$dp] = ord(getc()); },
"[" => sub{ $ip = $l2r{$ip - 1} + 1 if $mem[$dp] == 0; },
"]" => sub{ $ip = $r2l{$ip - 1}; });
open (SRC, $ARGV[0]) || die "Can't open $ARGV[0]: $!"; # Open source code.
while (<SRC>) { chomp($code .= $_); } # Concatenate the code into one line.
$code =~ s/[^\+\-\.\[\],<>]//g; # Removing invalid characters.
my @code = split(//, $code); # Split code into symbols.
for(my $i = 0; $i < length($code); $i++) # Analyse symbol per symbol.
{
push(@left, $i) if $code[$i] eq '['; # If left bracket: push.
if($code[$i] eq ']') # If right bracket: pop.
{
die "Unmatched ]\n" unless @left; # Right bracket && empty stack = bad.
$l2r{pop @left} = $i; # Create pairs for jumps.
}
} die "Unmatched [\n" if @left; # End of code && not empty stack = bad.
%r2l = reverse %l2r;
while($ip < @code) # Loop of code's interpretation.
{
my $c = $code[$ip++]; # Read instruction.
$symbols{$c}->(); # Decode and execute the instruction.
}
Bon niveau perf il y a des trucs à pleurer, mais mon objectif n'était pas d'avoir un truc performant (sinon j'aurai écris un compilateur).
Dernière modification par grim7reaper (Le 25/11/2010, à 21:13)
Hors ligne
#1399 Le 16/11/2010, à 18:46
- helly
Re : /* Topic des codeurs couche-tard [2] */
Je met en forme ce soir (coms etou(q)), pour l'instant j'ai juste fait un truc qui marche.
Côté perf, y'a aussi des trucs à faire, mais idem, le but est d'avoir l'algo, pas un truc productif.
import java.io.*;
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
if (args.length != 1)
{
System.out.println("Usage : java Main fichier_a_faire");
System.exit(-1);
}
String chaine="";
//mise en String du fichier code
try
{
InputStream ips=new FileInputStream(args[0]);
InputStreamReader ipsr=new InputStreamReader(ips);
BufferedReader br=new BufferedReader(ipsr);
String ligne;
while ((ligne=br.readLine())!=null)
{
chaine+=ligne+"\n";
}
br.close();
}
catch (Exception e)
{
System.out.println(e.toString());
System.exit(-2);
}
//interprétation
try
{
Brain b = new Brain(chaine);
b.exec();
}
catch (Exception e)
{
System.out.println(e.toString());
System.exit(-3);
}
System.out.println();
}
}
import java.util.Scanner;
import java.io.*;
class Brain
{
private int T_MAX, tInstruction, ptr, lect; //T_MAX = 30000, tInstrution : longueur de la chaîne d'instructions, ptr = pointeur du ruban, lect : position de lecture d'instruction
private String instr;
private char[] ruban;
public Brain(String s)
{
this.T_MAX = 30000;
instr = new String(s);
tInstruction = instr.length();
ptr = 0;
lect = 0;
ruban = new char[T_MAX];
for (int cpt = 0; cpt < T_MAX; cpt++)
ruban[cpt] = '\0';
}
public void exec()
{
while ( lect < tInstruction)
{
this.readInstruction();
lect++;
}
}
private void readInstruction()
{
switch(instr.charAt(lect))
{
case '>' : this.incrementePointeur();break;
case '<' : this.decrementePointeur();break;
case '+' : this.incrementeCellule();break;
case '-' : this.decrementeCellule();break;
case '.' : this.print();break;
case ',' : this.read();break;
case '[' : lect = this.borneDebut();break;
case ']' : lect = this.borneFin();break;
}
}
private void incrementePointeur()
{
ptr++;
//erreur si ptr = 300001
}
private void decrementePointeur()
{
ptr--;
//erreyr si ptr < 0
}
private void incrementeCellule()
{
ruban[ptr]++;
}
private void decrementeCellule()
{
ruban[ptr]--;
}
private void print()
{
System.out.print(this.getCellule());
}
private char getCellule()
{
return ruban[ptr];
}
private int borneDebut()
{
if ( this.getCellule() != '\0')
return lect;
else
{
int n = 0, cpt = lect;
while (n != -1)
{
cpt++;
switch(instr.charAt(cpt))
{
case ']' : n--; break;
case '[' : n++; break;
}
}
return cpt;
}
}
private int borneFin()
{
int n = 0, cpt = lect;
while (n != -1)
{
cpt--;
switch(instr.charAt(cpt))
{
case ']' : n++; break;
case '[' : n--; break;
}
}
return cpt-1;
}
private void read() {
InputStreamReader entreeReader = new InputStreamReader(System.in);
char[] entree = new char[1];
try {
entreeReader.read(entree);
} catch (IOException e) {
entree[0] = 0;
}
if ( entree[0] == '\n')
entree[0] = '\0';
ruban[ptr] = entree[0]; // La seule qui existe
}
}
Dernière modification par helly (Le 16/11/2010, à 18:49)
Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.
Hors ligne
#1400 Le 16/11/2010, à 19:02
- grim7reaper
Re : /* Topic des codeurs couche-tard [2] */
Il a un comportement bizarre sur les entrées .
Soit la division
#!/home/grim7reaper/bin/pbfi
,>,,>++++++[#-<--------<-------->>] Store 2 numbers from keyboard in (0) and (1); and subtract 48 from each
<<[ This is the main loop which continues until the dividend in (0) is zero
>[->+>+<<] Destructively copy the divisor from (1) to (2) and (3); setting (1) to zero
>[-<<- Subtract the divisor in (2) from the dividend in (0); the difference is stored in (0) and (2) is cleared
[>]>>>[<[>>>-<<<[-]]>>]<<] If the dividend in (0) is zero; exit the loop
>>>+ Add one to the quotient in (5)
<<[-<<+>>] Destructively copy the divisor in (3) to (1)
<<<] Move the stack pointer to (0) and go back to the start of the main loop
>[-]>>>>[-<<<<<+>>>>>] Destructively copy the quotient in (5) to (0) (not necessary; but cleaner)
<<<<++++++[-<++++++++>]<. Add 48 and print result
Avec mon interpréteur je rentre
8/2
puis entrée et ça roule
avec le tien il faut taper
8
/
2
Hors ligne