papydall
Nombre de messages : 7008 Age : 73 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Les nombres Shadocks Lun 23 Aoû 2021 - 2:58 | |
| Ce code est parfaitement inutile, mais ça m'a pris une bonne heure quand même pour le confectionner. - Code:
-
rem ============================================================================ rem Numération Shadock rem ============================================================================ rem Les Shadocks, ont entre autres particularités celle de ne posséder que quatre rem cases dans leur cerveau. rem En conséquence leur vocabulaire se limite à quatre mots : GA, BU, ZO et MEU. rem Ces mots servent également à désigner les nombres, selon le codage naturel : rem GA = 0, BU = 1, ZO = 2, MEU = 3. rem Pour les nombres supérieurs à 3, les Shadocks utilisent classiquement la rem numération de position en base 4 : le chiffre le plus à droite représente rem les unités, le deuxième chiffre à partir de la droite les quatraines, rem le troisième chiffre les seizaines (4*4), et ainsi de suite. rem Par exemple, ZOBU désigne le nombre ZO*4 + BU, soit 2*4 + 1, c’est-à-dire 9. rem Le nombre BUZOGAMEU se comprend comme BU*4³ + ZO*4² + GA*4 + MEU, rem ou encore 1*64 + 2*16 + 0*4 + 3 soit 99. rem ============================================================================ rem Ce code défini deux fonctions vous permettant de convertir des nombres écrits rem en chiffres décimaux en nombres Shadocks et réciproquement. rem ============================================================================ rem Exemples d’appel
print Decimal_To_Shadock$(9) : ' ZOBU print Decimal_To_Shadock$(27) : ' BUZOMEU print Decimal_To_Shadock$(99) : ' BUZOGAMEU print Decimal_To_Shadock$(123) : ' BUMEUZOMEU print Decimal_To_Shadock$(966) : ' MEUMEUGABUZO print Decimal_To_Shadock$(9999) : ' ZOBUMEUGAGAMEUMEU print Decimal_To_Shadock$(123456789) : ' BUMEUBUBUZOMEUMEUGAMEUBUGABUBUBU print Decimal_To_Shadock$(111111111) : ' BUZOZOBUMEUMEUBUZOZOMEUMEUGABUMEU print : print
print Shadock_To_Decimal("ZOBU") : ' 9 print Shadock_To_Decimal("BUZOMEU") : ' 27 print Shadock_To_Decimal("BUZOGAMEU") : ' 99 print Shadock_To_Decimal("BUMEUZOMEU") : ' 123 print Shadock_To_Decimal("MEUMEUGABUZO") : ' 966 print Shadock_To_Decimal("ZOBUMEUGAGAMEUMEU") : ' 9999 print Shadock_To_Decimal("BUMEUBUBUZOMEUMEUGAMEUBUGABUBUBU") : ' 123456789 print Shadock_To_Decimal("BUZOZOBUMEUMEUBUZOZOMEUMEUGABUMEU") : ' 111111111 end rem ============================================================================ FNC Decimal_To_Shadock$(n) dim_local d,r,b4$,r1$,r2$,i d = int(n/4) : r = mod(n,4) : b4$ = str$(r) while d <> 0 r = mod(d,4) : d = int(d/4) : b4$ = b4$ + str$(r) end_while b4$ = reverse$(b4$) for i = 1 to len(b4$) r1$ = mid$(b4$,i,1) select val(r1$) case 0 : r2$ = r2$ + "GA" case 1 : r2$ = r2$ + "BU" case 2 : r2$ = r2$ + "ZO" case 3 : r2$ = r2$ + "MEU" end_select next i result r2$ END_FNC rem ============================================================================ FNC Shadock_To_Decimal(n$) dim_local r,r1$,r2$,c$,l,i r1$ = n$ : l = len(r1$) while len(r1$) > 0 c$ = left$(r1$,1) select asc(c$) case 66 : r2$ = r2$ + "1" : r1$ = right$(r1$,l-2) : l = len(r1$) : ' BU case 71 : r2$ = r2$ + "0" : r1$ = right$(r1$,l-2) : l = len(r1$) : ' GA case 77 : r2$ = r2$ + "3" : r1$ = right$(r1$,l-3) : l = len(r1$) : ' MEU case 90 : r2$ = r2$ + "2" : r1$ = right$(r1$,l-2) : l = len(r1$) : ' ZO end_select end_while l = len(r2$) for i = 1 to l r = r + val(mid$(r2$,i,1)) * power(4,l-i) next i result r END_FNC rem ============================================================================
On pourrait peut-être lui trouver une certaine utilité si par hasard un jour on tomberait sur une colonie de Shadocks ! | |
|
Minibug
Nombre de messages : 4566 Age : 57 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Les nombres Shadocks Lun 23 Aoû 2021 - 7:43 | |
| Salut Papydall Je vois que mon avatar t'a donné des idées... A priori les boucles WHILE-END_WHILE n'aiment pas les FNC Shadock... En fait c'est normal, car elles ont été inventées par les gibis ! Et comme disent les shadocks : En essayant continuellement, on finit par réussir… Donc plus ça rate, plus on a de chances que ça marche !!! | |
|
papydall
Nombre de messages : 7008 Age : 73 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Les nombres Shadocks Lun 23 Aoû 2021 - 15:42 | |
| Tu utilises certainement la version V09.29i9. Or cette version est boguée : elle n'aime pas les boucles du type While / End_while. Teste le code avec la version V09.11i9 ou (si tu tiens à V09.29i9) modifie While / end_while par Repeat / until. et le programme fonctionnera : parole de Shadock ! | |
|
Minibug
Nombre de messages : 4566 Age : 57 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Les nombres Shadocks Mar 24 Aoû 2021 - 11:20 | |
| Ok. Merci pour ces précisions Papydall ! | |
|
Contenu sponsorisé
| Sujet: Re: Les nombres Shadocks | |
| |
|