Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1451 Le 18/11/2010, à 19:16

ceric

Re : /* Topic des codeurs couche-tard [2] */

plop'soir.


Mac mini 7.1 en dual boot Ubuntu Gnome 22.04.5 [LTS] & macOS (Monterey)
HP elitedesk 800 G2 SFF en dual boot Ubuntu Gnome 24.04.0 [LTS] & Debian 12 (Bookworm)
HP zBook G3 15" Mageia 9

Hors ligne

#1452 Le 18/11/2010, à 20:27

grim7reaper

Re : /* Topic des codeurs couche-tard [2] */

Hello World !

Ptain quelle journée, je viens juste de finir ma journée de cours…

helly a écrit :

Ho j'ai peut être un truc !
grim, normalement (par exemple pour ton instruction de division)
tu tapes « 8/2 » et ça donne le result, ou tu tapes « 8/2[entrée] » ?

Faut appuyer sur entrée pour valider la commande (encore heureux, ça serait super chiant sinon)

Hors ligne

#1453 Le 18/11/2010, à 20:32

helly

Re : /* Topic des codeurs couche-tard [2] */

\o/ !
Il est vivant mon code \o/ !

import java.io.* ;
import java.util.Scanner;

/**
* Interpreteur Brainfuck
* @author helly
* Licence WTFPL
*/
public class Brain
{
    /**
    * Variables
    * T_RUBAN : taille du ruban, fixée par les règles du langage
    * ptr : pointeur sur le ruban
    * lect : tête de lecture sur la chaîne d'instructions
    * instruction : chaîne contenant les instructions
    * ruban : ruban de la machine.
    */
    static int T_RUBAN = 30000;
    private int ptr, lect, tInstruction;
    private String instruction;
    private char[] ruban;

    /**
    * Constructeur unique
    * Initialise les valeurs et le ruban
    * @param s : chaîne de caratères de l'instruction
    */
    public Brain(String s)
    {
        instruction = s;
        tInstruction = instruction.length();
        ptr = 0;
        lect = 0;
        ruban = new char[T_RUBAN];
        for (int cpt = 0; cpt < T_RUBAN; cpt++)
            ruban[cpt] = '\0';
    }

    /**
    * S'occupe d'enchaîner l'interprétation des instructions
    */
    public void exec() throws ErrRuban, ErrBorne
    {
        while (lect < tInstruction)
        {
            this.readInstruction();
            lect++;
        }
    }

    /**
    * Active en fonction de l'instruction lue
    */
    private void readInstruction() throws ErrRuban, ErrBorne
    {
        switch(this.getInstruction())
        {
            case '>' : this.incrementePointeur() ;break;
            case '<' : this.decrementePointeur() ;break;
            case '+' : this.incrementeCellule()  ;break;
            case '-' : this.decrementeCellule()  ;break;
            case '.' : this.write()              ;break;
            case ',' : this.read()               ;break;
            case '[' : this.borneOuverte()       ;break;
            case ']' : this.borneFermee()        ;break;
        }
    }

    private void incrementePointeur() throws ErrRuban
    {
        ptr++;
        if (ptr >= T_RUBAN)
            throw new ErrRuban(ptr);
    }

    private void decrementePointeur() throws ErrRuban
    {
        ptr--;
        if (ptr < 0)
            throw new ErrRuban(ptr);
    }

    private void incrementeCellule()
    {
        ruban[ptr]++;
    }

    private void decrementeCellule()
    {
        ruban[ptr]--;
    }

    private void write()
    {
        System.out.print(this.getCellule());
    }

    /**
    * Lit l'entrée donnée au clavier
    * Saisir un caractère, puis valider avec [entrée]
    */
    private void read()
    {
        try
        {
            char c = (char)System.console().reader().read();
            if (c == '\n')
            c = '\0';

            this.setCellule(c);
        }

        catch(IOException i)
        {
            System.out.println("**Erreur IO");
            System.exit(-1);
        }


   }

    /**
    * Déclanché quand un [ est lu
    * se positionne sur le ] correspondant
    * si l'octet pointé == 0
    */
    private void borneOuverte() throws ErrBorne
    {
        if (this.getCellule() != '\0')
            return;

        int niveau = 0, base = lect;

        while ( niveau != -1)
        {
            lect++;
                if (lect >= tInstruction)
                    throw new ErrBorne(']',base);

            switch(getInstruction())
            {
                case ']' : niveau--; break;
                case '[' : niveau++; break;
            }
        }
    }

    /**
    * Déclanché quand un ] est lu
    * se positionne juste avant le [ correspondant
    */
    private void borneFermee() throws ErrBorne
    {
        int niveau = 0, base = lect;
        while (niveau != -1)
        {
            lect--;
                if (lect < 0)
                    throw new ErrBorne('[',base);

            switch(getInstruction())
            {
                case ']' : niveau++; break;
                case '[' : niveau--; break;
            }
        }
        lect--; //décalage necessaire pour déclancher le test de [ à la prochaine exec
    }

    private char getCellule()
    {
        return ruban[ptr];
    }

    private char getInstruction()
    {
        return instruction.charAt(lect);
    }

    private void setCellule(char c)
    {
        ruban[ptr] = c;
    }


    /**
    * Main
    * Prend en argument un fichier texte contenant les instructions en BrainFuck
    */
    public static void main(String[] args)
    {
        if (args.length != 1)
        {
            System.out.println("Usage : java Main fichier_a_faire");
            System.exit(-1);
        }

        String instructions="";
        //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)
            {
                instructions+=ligne+"\n";
            }
            br.close();
        }

        catch (Exception e)
        {
            System.out.println(e.toString());
            System.exit(-2);
        }

        //interprétation
        try
        {
            Brain b = new Brain(instructions);
            b.exec();
        }

        catch (ErrRuban e)
        {
            System.out.println(e.toString());
        }

        catch (Exception e)
        {
            System.out.println(e.toString());
        }

    System.out.println();
    }

    /**
    * Classe erreur ruban
    * Montrée quand le pointeur pointe vers une partie innexistante
    */
    class ErrRuban extends Exception
    {
        private int val;

        public ErrRuban(int val)
        {
            this.val = val;
        }

        public String toString()
        {
            String result = "**Erreur : dépassement du ruban à la valeur "+this.val;
            return result;
        }
    }

    /**
    * Classe erreur borne
    * Montrée quand une borne correspondante est introuvable
    */
    class ErrBorne extends Exception
    {
        private char c;
        private int n;

        public ErrBorne(char c,int n)
        {
            this.c = c;
            this.n = n;
        }

        public String toString()
        {
            String result = "**Erreur : borne "+this.c+" manquante pour l'instruction n°"+n;
            return result;
        }
    }
}

L'équivalent java de getchar est

char c = (char)System.console().reader().read();

Dernière modification par helly (Le 18/11/2010, à 20:34)


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

#1454 Le 18/11/2010, à 21:57

\\Ouranos//

Re : /* Topic des codeurs couche-tard [2] */

helly a écrit :

L'équivalent java de getchar est

char c = (char)System.console().reader().read();

lol
Pourquoi faire simple ?


Ubuntu facile, c'est :
- Dire "Bonjour"
- Lire la doc et les règles du forum avant de poster. Savoir poser une question intelligemment.
- Mettre des balises url autour des liens et un tiret à su.

Hors ligne

#1455 Le 18/11/2010, à 22:07

Pylades

Re : /* Topic des codeurs couche-tard [2] */

Java c'est mal. tongue


Oui, donc, je disais, getchar, fgetc… ça permet de lire l'entrée standard, c'est bien gentil… mais si l'on veut récupérer un caractère à l'instant où il est tapé ? En gros le lire avant même qu'il ne soit écrit sur l'entrée standard.

C'est possible avec un système de gestion des événements simple et standard, ou alors est-on obligé de passer par un gros bousin du style SDL ?


“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

#1456 Le 18/11/2010, à 22:17

grim7reaper

Re : /* Topic des codeurs couche-tard [2] */

Oui c'est possible.
Mais en standard il n'y a rien de bien portable à ce niveau-là…
En utilisant des bibliothèques (ncurses fait peut-être ça) ça peut être portable je pense.

Pourquoi tu veux faire ça ?

Dernière modification par grim7reaper (Le 18/11/2010, à 22:17)

Hors ligne

#1457 Le 18/11/2010, à 22:31

Pylades

Re : /* Topic des codeurs couche-tard [2] */

OK, je note.
termios.h est POSIX, non ? C'est déjà une bonne base, dans ce cas…
Ouais, sinon faut passer par une bilbiothèque portable, OK… ><'


C'était juste à but informatif.


“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

#1458 Le 18/11/2010, à 22:38

grim7reaper

Re : /* Topic des codeurs couche-tard [2] */

man termios a écrit :

tcgetattr(), tcsetattr(), tcsendbreak(), tcdrain(), tcflush(), tcflow(), cfgetispeed(), cfgetospeed(), cfsetispeed(), and cfsetospeed() are specified in POSIX.1-2001.

cfmakeraw() and cfsetspeed() are nonstandard, but available on the BSDs.

Après, sachant que Windows n'implémente que certains bouts (et certaines versions) de POSIX la portabilité est toute relative (mais c'est déjà un bon début, c'est vrai).

Hors ligne

#1459 Le 18/11/2010, à 23:37

gnuuat

Re : /* Topic des codeurs couche-tard [2] */

Des idées de code à éxécuter sur un processeur 8bits ?
http://lazcraft.tumblr.com/


Bisouland : embrassez les tous !
Volez les points d'amour de vos adversaires en les embrassant, dans ce jeu gratuit par navigateur !

Hors ligne

#1460 Le 18/11/2010, à 23:42

grim7reaper

Re : /* Topic des codeurs couche-tard [2] */

N'importe quel jeu de NES.

Tiens tu me fais penser qu'il faut que je finisse de coder le séquenceur de mon CPU RISC 32 bits pour lundi >_<

Dernière modification par grim7reaper (Le 19/11/2010, à 00:02)

Hors ligne

#1461 Le 18/11/2010, à 23:51

tshirtman

Re : /* Topic des codeurs couche-tard [2] */

s'il porte minecraft sur son architecture 8bit, il pourra jouer à minecraft en jouant à minecraft big_smile

Hors ligne

#1462 Le 19/11/2010, à 01:03

nesthib

Re : /* Topic des codeurs couche-tard [2] */

plop


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#1463 Le 19/11/2010, à 01:15

Pylades

Re : /* Topic des codeurs couche-tard [2] */

Merde pour le compteur…


“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

#1464 Le 19/11/2010, à 01:15

cm-t

Re : /* Topic des codeurs couche-tard [2] */

'Nuit;


Actu Ubuntu            ☺/
Pauses Ubuntu sur Paris            \_< -t
[(π)] La Quadrature du net

Hors ligne

#1465 Le 19/11/2010, à 01:24

Кຼزດ

Re : /* Topic des codeurs couche-tard [2] */

plop


dou

Hors ligne

#1466 Le 19/11/2010, à 03:24

nesthib

Re : /* Topic des codeurs couche-tard [2] */

.


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#1467 Le 19/11/2010, à 04:47

samυncle

Re : /* Topic des codeurs couche-tard [2] */

.


Hello world

Hors ligne

#1468 Le 19/11/2010, à 07:42

Compteur du TdCCT

Re : /* Topic des codeurs couche-tard [2] */

Scores totaux, depuis le début :

1) 1882    nesthib
2) 1806    samuncle
3) 1513    Pylade
4) 1135    Кຼزດ
5) 934    cm-t
6) 803+5  grim7reaper /* ./viewtopic.php?pid=3486252#p3486252 */
7) 683    \\Ouranos//
8) 680    Р☢w ! ✰ :mad: ✰ (эй !)
9) 638    helly
10) 391    Lagierl
11) 382    gnuuat
12) 281    tshirtman
13) 186    Askelon
14) 167    Kanor
15) 142    nathéo
16) 121    ǤƦƯƝƬ
17) 93    petifrancais
18) 78    edge_one
19) 70    gulp
20) 68    pierguiard
21) 59    kamui57
21) 59    The Uploader
23) 37    ilagas
24) 30    keny
25) 27    Le Rouge
26) 25    GentooUser
27) 24    ไ୦บเઢ'
28) 20    Morgiver
28) 20    CROWD
30) 19    xapantu
31) 18    Ph3nix_
32) 15    timsy
33) 14    kouskous
34) 12    stratoboy
34) 12    sailing
36) 11    alexises
36) 11    Crocoii
38) 10    Toineo
38) 10    NutMotion
38) 10    pseudovingtcinqcaracteres
38) 10    pfriedZ
42) 8    Mornagest
43) 7    Vista
44) 6    Zeibux
44) 6    ubuntlin
44) 6    asma.geek
47) 5    tendances-tdct
48) 4    danychou56
48) 4    Neros
48) 4    Biaise
48) 4    totoflute
48) 4    pinballyoda ㋛
53) 2    SoJaS
53) 2    ceric
55) 1    geenux

chart?chs=675x280&cht=p3&chco=d80020,d88000,ffd840,20d820,2080ff,101080,a020d8&chf=bg,s,fbf9f4&chl=01h%20-%2001h59|03h%20-%2003h59|04h%20-%2004h59|15h%20-%2015h59|16h%20-%2016h59|17h%20-%2017h59|19h%20-%2019h59|20h%20-%2020h59|21h%20-%2021h59|22h%20-%2022h59|23h%20-%2023h59&chd=t:4,1,1,2,2,1,1,2,1,4,3&chp=1.6&chtt=R%C3%A9partition%20des%20posts&chts=606060,16chart?chs=675x250&cht=bvs&chxt=x,y&chds=0,10&chxr=1,0,10&chf=b0,lg,0,803000,0,ffc080,1|bg,s,fbf9f4&chxl=0:|05h|06h|07h|08h|09h|10h|11h|12h|13h|14h|15h|16h|17h|18h|19h|20h|21h|22h|23h|00h|01h|02h|03h|04h&chxp=0,0.7,4.9,9.1,13.2,17.3,21.5,25.6,29.8,33.9,38,42.2,46.3,50.5,54.6,58.8,62.9,67,71.2,75.3,79.4,83.6,87.7,91.8,96&chd=t:0,0,0,0,0,0,0,0,0,0,2,2,1,0,1,2,1,4,3,0,4,0,1,1&chm=N,803000,0,-1,12&chtt=|Nombre%20de%20posts%20par%20heure&chts=606060,16


Codez-vous trop tard le soir ?
Demandez au Compteur du TdCCT pour le savoir !

J’ai été généreusement codé par tshirtman ; d’ailleurs, voici mon code source. TdCCT CEP : ./viewtopic.php?pid=3493579#p3493579 (p3492608).

Hors ligne

#1469 Le 19/11/2010, à 07:42

Compteur du TdCCT

Re : /* Topic des codeurs couche-tard [2] */

Scores de la période en cours :

1) 161    nesthib
2) 146    samuncle
3) 125    grim7reaper
4) 112    Кຼزດ
5) 110    nathéo
6) 93    gnuuat
7) 88    cm-t
8) 78    Pylade
9) 56    Askelon
10) 31    Lagierl
11) 29    \\Ouranos//
12) 25    tshirtman
13) 9    The Uploader
14) 4    Р☢w ! ✰ :mad: ✰ (эй !)
15) 3    Kanor
16) 2    pierguiard
16) 2    helly
18) 1    xapantu

Codez-vous trop tard le soir ?
Demandez au Compteur du TdCCT pour le savoir !

J’ai été généreusement codé par tshirtman ; d’ailleurs, voici mon code source. TdCCT CEP : ./viewtopic.php?pid=3493579#p3493579 (p3492608).

Hors ligne

#1470 Le 19/11/2010, à 18:44

Pylades

Re : /* Topic des codeurs couche-tard [2] */

/me va compter les points à la main.


“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

#1471 Le 19/11/2010, à 21:51

helly

Re : /* Topic des codeurs couche-tard [2] */

BN.
Lagierl  est bien discret mais il essayer de coder son brainfucker en python smile, va t'il avoir le même obstacle que tman ?
Réponse demain, j'espère !
(et il bloque sur les [] imbriquées hihi tongue)

Dernière modification par helly (Le 19/11/2010, à 21:51)


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

#1472 Le 19/11/2010, à 22:27

grim7reaper

Re : /* Topic des codeurs couche-tard [2] */

Hello World Souffle.
 
 Ingredients.
 72 g haricot beans
 101 eggs
 108 g lard
 111 cups oil
 32 zucchinis
 119 ml water
 114 g red salmon
 100 g dijon mustard
 33 potatoes
 
 Method.
 Put potatoes into the mixing bowl.
 Put dijon mustard into the mixing bowl.
 Put lard into the mixing bowl.
 Put red salmon into the mixing bowl.
 Put oil into the mixing bowl.
 Put water into the mixing bowl.
 Put zucchinis into the mixing bowl.
 Put oil into the mixing bowl.
 Put lard into the mixing bowl.
 Put lard into the mixing bowl.
 Put eggs into the mixing bowl.
 Put haricot beans into the mixing bowl.
 Liquefy contents of the mixing bowl.
 Pour contents of the mixing bowl into the baking dish.
 
 Serves 1.

Qui c'est qui se lance dans un interpréteur de Chef ?
Ça demande un peu plus de réflexion qu'un interpréteur brainfuck tongue

Dernière modification par grim7reaper (Le 20/11/2010, à 03:06)

Hors ligne

#1473 Le 20/11/2010, à 01:19

nesthib

Re : /* Topic des codeurs couche-tard [2] */

plop


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#1474 Le 20/11/2010, à 01:42

gnuuat

Re : /* Topic des codeurs couche-tard [2] */

tshirtman a écrit :

s'il porte minecraft sur son architecture 8bit, il pourra jouer à minecraft en jouant à minecraft big_smile

Ceci va être déformé, répété et amplifié !


Bisouland : embrassez les tous !
Volez les points d'amour de vos adversaires en les embrassant, dans ce jeu gratuit par navigateur !

Hors ligne

#1475 Le 20/11/2010, à 02:02

Pylades

Re : /* Topic des codeurs couche-tard [2] */

Le Shakespeare, c'est joli. tongue


“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