xerxes help me please

Ici, on fait dans le petit, le LCD qui déchire sa race, on y cause même calculatrices quand on est en manque !

Modérateur : Politburo

Répondre
Avatar de l’utilisateur
charognard
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4411
Inscription : 06 juin 2007 19:28
Localisation : Indre et loire
Contact :

xerxes help me please

Message par charognard » 02 oct. 2009 11:01

j'ai fais ton test sur le compilo SDCC

Code : Tout sélectionner

typedef unsigned char BYTE;
typedef unsigned int WORD;
#define		NULL	0

int abs(int j)
{
	return (j >= 0) ? j : -j;
}
BYTE strlen(BYTE *string)
{
	BYTE i;
	for(i=0; string[i]; ++i);
	return i;
}
void printStr_asm(BYTE len, WORD loc, char *str);
void printStr(BYTE x, BYTE y, char *string)
{
	printStr_asm(strlen(string),x+y*256 ,string);
}
void printStr_asm(BYTE len, WORD loc, char *str)
{
	_asm
	ld		b,4(ix)
	ld		e,5(ix)
	ld		d,6(ix)
	ld		l,7(ix)
	ld		h,8(ix)
	call	#0xbff1
	_endasm;
}
void printNum(BYTE x, BYTE y, WORD value)
{
	char str[6];
	int i;

	for(i=4; i>=0; i--) {
		str[i] = '0' + value % 10;
		value /= 10;
	}
	str[5] = NULL;
	printStr(x,y,str);
}
void clearScreen()
{
	_asm

	ld		a,#0x20
	ld		b,#144
	ld		de,#0
	call	#0xbfee

	_endasm;
}
int main(void)
{
	int x,y,r,s,t,n,a[9];
	clearScreen();
	for(n=1;n>0;--n){
		r=8;
		s=0;
		x=0;
		do
		{
			a[++x]=r;
			do
			{
				++s;
				y=x;
				while(y>1)
				{
					if (!(t=a[x]-a[--y]) || x-y==abs(t))
					{
						y=0;
						while(!--a[x])
							--x;
					}
				}
			} while(y!=1);
			if(s==218)
			{
				printNum(0,1,t);
				printNum(0,2,x);
				printNum(0,3,y);
				printNum(12,1,r);
				printNum(12,2,a[x]);
				printNum(12,3,a[y]);
			}
		} while(x!=r);
	}
		printNum(0,5,s);
}

mais il me retourne 218, et je ne comprends pas pourquoi !
lorsque j'execute le même code en C embarqué j'ai bien le bon résultat
Image

jxano
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2368
Inscription : 17 févr. 2008 00:34
Localisation : Paris 20ème

Re: xerxes help me please

Message par jxano » 02 oct. 2009 15:22

Je ne sais pas où tu trouves tous ces beaux codes en assembleur, mais si tu utilisais ce qui existe en C, ça te simplifierait la vie !

Code : Tout sélectionner

int main(void)
{
	int x,y,r,s,t,n,a[9];
	clrscr();
	for(n=1;n>0;--n){
		r=8;
		s=0;
		x=0;
		do
		{
			a[++x]=r;
			do
			{
				++s;
				y=x;
				while(y>1)
				{
					if (!(t=a[x]-a[--y]) || x-y==abs(t))
					{
						y=0;
						while(!--a[x])
							--x;
					}
				}
			} while(y!=1);
			if(s==218)
			{
				printf("%5d      %5d\n",t,r);
				printf("%5d      %5d\n",x,a[x]);
				printf("%5d      %5d\n",y,a[y]);
			}
		} while(x!=r);
	}
		printf("%5d\n",s);
}
C'est le problème des huit reines... Ce serait pas mal d'afficher quelques solutions en mode graphique !
Programmeur abscons.

Avatar de l’utilisateur
charognard
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4411
Inscription : 06 juin 2007 19:28
Localisation : Indre et loire
Contact :

Re: xerxes help me please

Message par charognard » 02 oct. 2009 16:59

jxano a écrit :Je ne sais pas où tu trouves tous ces beaux codes en assembleur, mais si tu utilisais ce qui existe en C, ça te simplifierait la vie !
je ne peux pas c'est sur le compilateur sur PC et les E/S ne sont pas gérées (printf dans ce cas).
donc assembleur obligatoire


je ferais un article aussi sur le compilateur

Avatar de l’utilisateur
charognard
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4411
Inscription : 06 juin 2007 19:28
Localisation : Indre et loire
Contact :

Re: xerxes help me please

Message par charognard » 02 oct. 2009 17:58

MON PROBLEME EST SUR LE COMPILATEUR SDCC PAS SUR LE 850V EN C !!!


c'est compris ou il faut que je fasse un dessin :D

Avatar de l’utilisateur
Paul Tergeist
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 2417
Inscription : 15 oct. 2007 15:50
Localisation : 3ème planète après le soleil

Re: xerxes help me please

Message par Paul Tergeist » 02 oct. 2009 19:10

Charo, j'ai essayé et ça fonctionne très bien sur mon G850. Tu as du faire une erreur de saisie. Ca arrive...
Il y a 10 catégories de personnes dans le monde. Celle qui connait le binaire et l'autre.

Avatar de l’utilisateur
charognard
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4411
Inscription : 06 juin 2007 19:28
Localisation : Indre et loire
Contact :

Re: xerxes help me please

Message par charognard » 02 oct. 2009 19:32

Paul Tergeist a écrit :Charo, j'ai essayé et ça fonctionne très bien sur mon G850. Tu as du faire une erreur de saisie. Ca arrive...
tu as compilé sur PC ?

si tu veux vraiment tester c'est ça qu'il faut envoyer au MONiteur

Code : Tout sélectionner

:04010000CD4402C91F
:0E010400DDE5DD210000DD39DD7E0507E601C9
:0E011200D6013E0017B72808DD4E04DD460575
:0E012000180BAFDD9E044F3E00DD9E054769C3
:0E012E0060DDE1C9DDE5DD210000DD390E00F8
:0E013C00DD7E04815FDD7E05CE00571AB728F8
:0E014A00030C18EE69DDE1C9DDE5DD210000E2
:0E015800DD39DD4E040600DD5E05531E007924
:0E016600834F788A47DD5E06DD5607C5D5CD8E
:0E0174003201F15DC1DD6E06DD6607E5C57B7B
:0E018200F533CD8D01F1F133DDE1C9DDE5DDB1
:0E019000210000DD39DD4604DD5E05DD56068A
:0E019E00DD6E07DD6608CDF1BFDDE1C9DDE5F0
:0E01AC00DD210000DD3921F6FF39F9210400C4
:0E01BA00394D44DD36F804DD36F900DDCBF9B1
:0E01C8007E205479DD86F8DD77F678DD8EF93D
:0E01D600DD77F7C5210A00E5DD6E06DD660760
:0E01E400E5CD6904F1F15DC17BC630DD6EF63C
:0E01F200DD66F777C5210A00E5DD6E06DD66E5
:0E02000007E5CD9E04F1F1EBC1DD7306DD7262
:0E020E0007DD6EF8DD66F92BDD75F8DD74F99D
:0E021C00C3C50121050009EB3E0012C5DD66D9
:0E022A0005DD6E04E5CD5201F1F1DDF9DDE1F7
:0E023800C93E200690110000CDEEBFC9DDE5E5
:0E024600DD210000DD3921D8FF39F9CD390264
:0E025400210C0039DD75D8DD74D9DD36F601D8
:0E026200DD36F7003E00DD96F63E00DD9EF72D
:0E027000F24C04110000DD36FE00DD36FF000A
:0E027E00DD34FE2003DD34FFDD7EFEDD77E2A1
:0E028C00DD7EFFDD77E3DDCBE226DDCBE31682
:0E029A00DD7ED8DD86E24FDD7ED9DD8EE347C6
:0E02A80069673608233600DD71E0DD70E1DDA8
:0E02B60073DEDD72DFDD34DE2003DD34DFDDDC
:0E02C4007EFEDD77FCDD7EFFDD77FD3E01DD99
:0E02D20096FC3E00DD9EFDF27F03DD6EE0DD5A
:0E02E00066E14E2346DD6EFCDD66FD2BDD750E
:0E02EE00FCDD74FDEBCB23CB12DD7ED8835FED
:0E02FC00DD7ED98A6B675E235679935F789A10
:0E030A0057DD73DADD72DB7BB22827DD7EFE65
:0E031800DD96FC4FDD7EFFDD9EFD47C5DD6EF0
:0E032600DADD66DBE5CD0401F1EBC179932051
:0E0334000478922803C3CF02DD36FC00DD36CC
:0E034200FD00DD5EFEDD56FF4B42CB21CB10F1
:0E035000DD7ED881DD77DCDD7ED988DD77DDCE
:0E035E00DD6EDCDD66DD4E23460BDD6EDCDD84
:0E036C0066DD71237079B0C2CF021BDD73FE17
:0E037A00DD72FF18CBDD7EFCD6012006DD7E95
:0E038800FDB72803C3BB02DD5EDEDD56DFDD00
:0D0396007EDED6DA2006DD7EDFB72803C349
:0E03A3002C04D5DD6EDADD66DBE5210001E518
:0E03B100CDAA01F1F1D1D5DD6EFEDD66FFE5CE
:0E03BF00210002E5CDAA01F1F1D1D5DD6EFCE1
:0E03CD00DD66FDE5210003E5CDAA01F1F1D1C9
:0E03DB00D5210800E5210C01E5CDAA01F1F1C4
:0E03E900D1DD7ED8DD86E24FDD7ED9DD8EE3EC
:0E03F70069674E2346D5C5210C02E5CDAA014B
:0E040500F1F1D1DD4EFCDD46FDCB21CB10DD4B
:0E0413007ED8814FDD7ED98869674E2346D59D
:0E042100C5210C03E5CDAA01F1F1D1DD7EFE6F
:0E042F00D6082006DD7EFFB72803C37E02DD5F
:0D043D006EF6DD66F72BDD75F6DD74F7C396
:0E044A006602D5210005E5CDAA01F1F1DDF92C
:03045800DDE1C91A
:0E045B00210300395E2B6E4DCD21056B62C969
:0E04690021050039562B5E2B7E2B6E67444D0D
:0E047700CD24056B62C9210300395E16002BEF
:0B0485004E79079F47CDEB046B62C966
:0E049000210300395E2B6E4DCD21056960C938
:0E049E0021050039562B5E2B7E2B6E67444DD8
:0E04AC00CD24056960C9210300395E2B4E0680
:0E04BA0000CDE7046960C9210300395E2B4EB6
:0E04C8000600CDE7046B62C9210300395E1601
:0E04D600002B4E79079F47CDEB046960C97972
:0E04E400079F477B079F5778F5AAF5CB7A282C
:0E04F2000697935F9F9257CB78280697914FFD
:0E0500009F9047CD24053816F1E68028069717
:0E050E00914F9F9047F1E680C897935F9F92B0
:0D051C0057C9F1F1C90600507BB22007015C
:0E0529000000505937C9210000B7083E1008E5
:0E053700CB11CB10ED6AE5ED523F3803E11811
:0E054500023333083DC2360508545DCB11CB9E
:0305530010B7C915
:00000001FF

Avatar de l’utilisateur
charognard
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4411
Inscription : 06 juin 2007 19:28
Localisation : Indre et loire
Contact :

Re: xerxes help me please

Message par charognard » 02 oct. 2009 19:34

j'ai essayé que sur l'émulateur cependant
Dernière édition par charognard le 02 oct. 2009 21:42, édité 1 fois.

Avatar de l’utilisateur
charognard
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4411
Inscription : 06 juin 2007 19:28
Localisation : Indre et loire
Contact :

Re: xerxes help me please

Message par charognard » 02 oct. 2009 19:36

pour le tester

MON
R
puis
G100


simple quoi !!!

Avatar de l’utilisateur
charognard
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4411
Inscription : 06 juin 2007 19:28
Localisation : Indre et loire
Contact :

Re: xerxes help me please

Message par charognard » 02 oct. 2009 20:47

je viens de faire l'essai sur la plate forme physique (bref le 850V)
même résultat !!!
218

Avatar de l’utilisateur
Paul Tergeist
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 2417
Inscription : 15 oct. 2007 15:50
Localisation : 3ème planète après le soleil

Re: xerxes help me please

Message par Paul Tergeist » 02 oct. 2009 21:19

Si tu regardes dans le code de jxano tu verras d'où vient le 218.
Là pour l'instant tu es en train de te coincer dans une boucle de ta matrice neuronale.
Il y a 10 catégories de personnes dans le monde. Celle qui connait le binaire et l'autre.

Avatar de l’utilisateur
charognard
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4411
Inscription : 06 juin 2007 19:28
Localisation : Indre et loire
Contact :

Re: xerxes help me please

Message par charognard » 02 oct. 2009 21:23

Paul Tergeist a écrit :Si tu regardes dans le code de jxano tu verras d'où vient le 218.
Là pour l'instant tu es en train de te coincer dans une boucle de ta matrice neuronale.
8O
je comprends rien à ce que tu me raconte, second degrés je suppose !!


le test sur 218 c'est pour afficher les différentes variables à 218 justement

Avatar de l’utilisateur
gege
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 7180
Inscription : 31 janv. 2008 15:24
Localisation : Banlieue Paârisienne
Contact :

Re: xerxes help me please

Message par gege » 02 oct. 2009 22:35

A mon époque, la réponse c'était 42...
Tout fout le camp !

G.E. pourrisseur de topic

Avatar de l’utilisateur
charognard
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4411
Inscription : 06 juin 2007 19:28
Localisation : Indre et loire
Contact :

Re: xerxes help me please

Message par charognard » 02 oct. 2009 22:42

http://www.hpmuseum.org/cgi-sys/cgiwrap ... i?read=700

selon la page de xerxes ça devrait faire 876

Avatar de l’utilisateur
Xerxes
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 291
Inscription : 02 avr. 2007 13:41
Localisation : Allemagne
Contact :

Re: xerxes help me please

Message par Xerxes » 03 oct. 2009 02:24

Salut Charo,

merci for your interesting experiment. I've checked your code and cannot see the problem also, but I have
a suspicion. Maybe the compiler has a problem with the code "if (!(t=a[x]-a[--y]) || x-y==abs(t))".
It can be replaced with the following code for verifying.

Code : Tout sélectionner

--y;
t=a[x]-a[y];
if (t==0 || x-y==abs(t))
Have you also tried the unstructured version? It's usually faster and doesn't have the possibly problematic code.

Code : Tout sélectionner

 main()
{
    int x,y,r,s,t,n,a[9];

    n=1000;
l5: r=8;
    s=0;
    x=0;
l0: if (x==r) goto l4;
    a[++x]=r;
l1: ++s;
    y=x;
l2: if (!--y) goto l0;
    if (!(t=a[x]-a[y])) goto l3;
    if (x-y!=abs(t)) goto l2;
l3: if (--a[x]) goto l1;
    if (--x) goto l3;
l4: if (--n) goto l5;
    printf("%d",s);
}

Avatar de l’utilisateur
charognard
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4411
Inscription : 06 juin 2007 19:28
Localisation : Indre et loire
Contact :

Re: xerxes help me please

Message par charognard » 03 oct. 2009 09:20

j'avais la même suspicion que toi et j'avais déjà effectué ces tests
sur la version non structurée j'ai le même résultat : 218

et pareil sur la version (218 too)

Code : Tout sélectionner

--y;
t=a[x]-a[y];
if (t==0 || x-y==abs(t))
:evil:

il va valoir que je cherche plus en profondeur !!

Répondre

Revenir vers « Tous les Pockets »