MPO n°114: Eine Zeckendorf-Darstellung ganzer Zahlen

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

FLISZT
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 655
Enregistré le : 09 mars 2022 19:14

Re: MPO n°114: Eine Zeckendorf-Darstellung ganzer Zahlen

Message par FLISZT »

<<− Escadron "50G" à toutes les forces alliées sur la fréquence. −>>

Code "Chat noir zéro zéro whisky"

Depuis plusieurs jours, sont transmis des messages émanant de notre état-major, du moins, c'est ce que pourrions être tentés de croire.
Or, de nombreux indices semblent démontrer que certains de ces messages sont transmis par l'ennemi.
C.Ret a écrit : 17 nov. 2022 23:22 (…)

Image ??

(…)notre centres de recherche de Berlin ← ?! →, le Oberbefehlshaber-Marechal Otto von Heefflet-Bachard (…)
C.Ret a écrit : 03 déc. 2022 16:24
(…) il n'ya a eut que le Grieg's Baron Von Nervigstück am Petrus (…) ??


L'Etat Major a reconnu que ce code est plus court et accepte donc la requête du Baron.
(…) déjà inscrit au Rangaufstiegs-Ehrentafel. ??
D'après certains indices, il pourrait s'agir d'un agent double anglais :
C.Ret a écrit : 03 déc. 2022 16:24 Je transmets ci-dessous une traduction du code qu'il a proposé pour équiper les troupes du front de l'ouest munies des dispositifs CASIO Graph:
MPO114 - Proposition CASIO Graph 85.png
Bien que basé sur le même algorithme que les codes pour la Ein and Vierzig, il présente un petit perfectionnement qui évite les retombées catastrophiques et mortelles en cas de dépassement de capacité.
au lieu de "einundvierzig" selon notre traducteur.

Redoublez donc de vigilance. Bon courage à tous.

Escadron "50G" passe QRT
⋅⋅⋅
Bruno
Sanyo CZ-0124 ? TI-57 ? HP-15C ? Canon X-07 + XP-140 Monitor Card ? HP-41CX ? HP-28S ? HP-50G ? HP-50G
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3404
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: MPO n°114: Eine Zeckendorf-Darstellung ganzer Zahlen

Message par C.Ret »

Gott am Himmel wat leeft?
FLISZT mengt hien ass op der anerer Säit!


Hors de question, le silence radio annoncé doit être interrompu immédiatement, l'Etat-Major attend avec impatience les codes opérationnels des unités 50g et autres Omvendt polsk notation.

Image

Peut-être est-ce FLISZT l'agent double et ces codes n'ont peut-être pas encore été transmit par manque de temps à cause d'activités Outre-Atlantique (à moins qu'il ne s'agisse de conspiration avec l'Espagne ?) ou parce que FLISZT passe son temps à écouter le Symphonieorchester des Bayerischen Rundfunks.

Gitt hop hop an d'Schluecht!
De Feind ass ganz Zuelen nach net ofgebaut.
L'ennemi c'est les nombres entiers non encore décomposés
Modifié en dernier par C.Ret le 08 avr. 2023 11:25, modifié 1 fois.
SHARP PC-1211 PC-1360 EL-5150 PC-E500 | Commodore C=128D | Texas Instruments Ti-57LCD Ti-74BASICalc Ti-92II Ti-58c Ti-95PROCalc Ti-30XPROMathPrint | Hewlett-Packard HP-28S HP-41C HP-15C HP-Prime HP-71B | CASIO fx-602p | NUMWORKS | Graphoplex Rietz Neperlog | PockEmul | Sommaire des M.P.O. | Ma...dov'il sapone.
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3404
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: MPO n°114: Eine Zeckendorf-Darstellung ganzer Zahlen

Message par C.Ret »

Zebulon a écrit : 01 déc. 2022 22:18Code de la Numworks :

Code : Tout sélectionner

from math import *
def split(x):                 while n>1:
  a,n,p,q,f=[],0,0,1,0            p=a.pop()
  while f<=x:                     n-=1
    a.append(f)                   if p<=x:
    f=p+q                           x-=p
    q=p                             print("1","F"+str(n),p)
    p=f                           else:
    n+=1                            print("0")
  print(a)                    return
Image
Ach! Ca c'est bien! L'Etat major apprécie l'effort fourni à réaliser la Split-Krieg !
Malheureusement, il n'y a pas ce jour de spécialiste du Python présent à la Citadelle pour corriger ou perfectionner ce code qui utilise une liste intermédiaire. Le Grieg's Baron Von Nervigstück am Petrus n'a pas formuler d'objection, il s'est contenté de faire remarquer que sur ces équipements modernes à grand écran, faire popper les nombres de Fibonacci ne choque plus personne.

Il a ensuite composé une version personnelle, que je recopie ci-dessous à toute fins utiles bien que cela n'est aucun intérêt pour l'Empire car aucune de ses troupes n'est équipé de ce matériel de travaux numériques:

Code : Tout sélectionner

from math import *
def split(n):
  k,e,f = 1,0,1
  while e+f<=n:
    k,e,f = 1+k,f,e+f
  for i in range(k,0,-1):
    if f<=n:
      print("1 F"+str(i),f)
      n=n-f
    else:
      print("0")
    e,f=f-e,e
MPO114 - numworks SPLIT kRIEG 101.png
MPO114 - numworks SPLIT kRIEG 101.png (6.55 Kio) Vu 3788 fois
Record, limité par la taille de l'editeur apparemment
Record, limité par la taille de l'editeur apparemment
MPO114 - Slip Krieg 5e24 exact numworks.png (10.13 Kio) Vu 3785 fois
L'escadron Zebulon est donc promu et fait l'objet d'une seconde inscription au Rangaufstiegs-Ehrentafel.

De bonnes nouvelles du front nous sont parvenues, non seulement l'Armistice et le cesser-le-feu qui en découle ont permis de remettre en ordre nos armées, mais celles-ci ont eut le temps de rétrofiter le logiciel équipant les Ein-und-Vierzig Kompakt (cette fois je ne fais pas d'erreur de frappe) et donc le Corps fir d'Zersetzung vun Ganzen actuellement mobilisé dans le nord du pays peut s'attaquer à pleine puissance de décomposition sans risque d'auto-destruction jusqu'à la cote 999'999'999.
Je joins à mon message deux rapports de tirs par Zil an Drécken obtenu ce matin par le Corps fir d'Zersetzung vun Ganzen dont l'unité Kompakt Ein und Vierzig n°20057A01649 est actuellement en exercises à Aachen.
Conformément aux instructions de tirs, ces rapports ont été obtenus en mode FIX null après avoir désarmé le drapeau n°29.
Conformément aux instructions de tirs, ces rapports ont été obtenus en mode FIX null après avoir désarmé le drapeau n°29.
MPO114 - Verhältnis einundvierzig zielen und schießen.gif (122.51 Kio) Vu 3809 fois
Par contre, le code algorithmique de ces unités a pris un peu de poids, il fait maintenant 38 pas (alors que la version non sécurisé n'en faisait plus que 33) et pèse exactement 84 oktetten soit une augmentation significative - mais la protection de nos troupes n'a pas de prix.

Code : Tout sélectionner

001►LBL"MPO114     014 X<> Z          025►LBL 03         038 ADV
002 PRX            015 GTO 01         026 X<> L             .END. 
003  1                                027 x<> Z
004 STO Z          016►LBL 02         028►LBL 04
005 ENTER^         017 "1  F"         029 x≤y?
006  -             018 ARCL T         030 GTO 02
007►LBL 01         019 ACA            031 "0"
008 ST+ L          020 FMT            032 PRA
009 X<> L          021 ACX            033►LBL 05
010 x≤y?           022 PRBUF          034 X<> Z
011 ISG T          023 ST- Y          035 ST- Z
012 GTO 03         024 GTO 05         036 DSE T
013 STO L                             037 GTO 03
La sécurisation des décompositions a été obtenue en utilisant le registre de la dernière chance (LASTX) afin de ne pas perdre l'exactitude du pointage en cas de dépassement de capacité du tir. D'ailleurs, petit erdig détail; après une salve, ce registre contient toujours la valeur de Fibonacci maximale pointée à l'apex de la visée.
Modifié en dernier par C.Ret le 08 avr. 2023 11:27, modifié 4 fois.
SHARP PC-1211 PC-1360 EL-5150 PC-E500 | Commodore C=128D | Texas Instruments Ti-57LCD Ti-74BASICalc Ti-92II Ti-58c Ti-95PROCalc Ti-30XPROMathPrint | Hewlett-Packard HP-28S HP-41C HP-15C HP-Prime HP-71B | CASIO fx-602p | NUMWORKS | Graphoplex Rietz Neperlog | PockEmul | Sommaire des M.P.O. | Ma...dov'il sapone.
FLISZT
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 655
Enregistré le : 09 mars 2022 19:14

Re: MPO n°114: Eine Zeckendorf-Darstellung ganzer Zahlen

Message par FLISZT »

Derniers développements…


Le bulletin d'information matinal de "Paris-TSF" grandes ondes a surpris tout le monde.
Selon l'état-major français, le général Moutarde, lui-même membre de l'état-major, a disparu. Il est activement recherché. Il est soupçonné de collusion avec l'ennemi. Les documents abonnés dans sa fuite ne laissent que peu de doutes.
On connaissait sa liaison avec la cantatrice östenlandaise Brigitt Singtundlacht. Elle l'aura retourné au profit de l'ennemi.
L'agent double n'était donc aucunement anglais mais bien français. Toutefois, des indiscrétions laissent à penser que le général Moutarde aurait des ascendances brilandaise : un majordome employé au domicile parental… le ver était dans le fruit !
Bruno
Sanyo CZ-0124 ? TI-57 ? HP-15C ? Canon X-07 + XP-140 Monitor Card ? HP-41CX ? HP-28S ? HP-50G ? HP-50G
FLISZT
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 655
Enregistré le : 09 mars 2022 19:14

Re: MPO n°114: Eine Zeckendorf-Darstellung ganzer Zahlen

Message par FLISZT »

C.Ret a écrit : 04 déc. 2022 07:56 Gott am Himmel wat leeft?
FLISZT mengt hien ass op der anerer Säit!


Ik begrijp er niets van!
C.Ret a écrit : 04 déc. 2022 07:56 (…) ou parceque FLISZT passe son temps à écouter le Symphonieorchester des Bayerischen Rundfunks.

… peut-être pas tout son temps mais ça lui arrive ! :D
C.Ret a écrit : 11 nov. 2022 11:52 Sous-titre: Une représentation de Zeckendorf des entiers pour un score bien mérité.

Ce n'est pas parce qu'aujourd'hui c'est l'Armistice qu'il faut croire que vous allez vous la couler douce ainsi jusqu'à fin juin en attendant que la Grande Guerre se termine. Il va falloir vous battre encore et mériter vos points afin de pouvoir regagner l'Alsace et la Lorraine.

Mince ! Je croyais qu'on avait jusqu'à juin 1923 ! :lol:

Bon… je publiErai mon code en fin d'aprem - soirée !

Edit : typo
Modifié en dernier par FLISZT le 05 déc. 2022 04:58, modifié 1 fois.
Bruno
Sanyo CZ-0124 ? TI-57 ? HP-15C ? Canon X-07 + XP-140 Monitor Card ? HP-41CX ? HP-28S ? HP-50G ? HP-50G
FLISZT
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 655
Enregistré le : 09 mars 2022 19:14

Re: MPO n°114: Eine Zeckendorf-Darstellung ganzer Zahlen

Message par FLISZT »

Bon, j'y vais…
Depuis que je teste n versions (souvent sur des points de détail), chronomètre à coup de TICKS, c'est une bonne chose d'en finir. :D

−−−−−−−−− −−−−−−−− −−−−−−− −−−−−− −−−−− −−−− −−− −− −

Présentation du système Ouragan

Le système Ouragan fait partie de la classe "TGV" (Tank à Grande Vitesse) qu'il a initiée. Il s'agit-là du dernier développement en terme de "TGV".
Sa puissance combinée est de 500,5 HP (en système métroctet) bridée à Fib(200).
Il était initialement composé de trois modules :
le module "Ordonateur", le module "Fiboget" et d'un module auxiliaire "Near" finalement recalé.

1) l'Ordonnateur

La première partie de l'Ordonnateur contient un système d'acquisition et d'initialisation assez standard.
Ensuite, on peut découvrir un accélérateur eTronic, de type CAZEND, à 8 étages.
Et enfin le récepteur "m".
Bien que minuscule (…), ce récepteur est d'une solidité à toute épreuve (un alliage de titane et de xétralon ) car il doit résister au flux eTronic généré par l'accélérateur.

Code : Tout sélectionner

<< DUP { } →  n m l
    <<    CASE
		m 18 ALOG > THEN 200 END
		m 15 ALOG > THEN 88 END
		m 12 ALOG > THEN 74 END
		m 9 ALOG > THEN 60 END
		m 6 ALOG > THEN 45 END
		m 3 ALOG > THEN 30 END
		m 2 ALOG > THEN 16 END
		m 2 ALOG ≤ THEN 12 END
	  END 
	  'm' STO 
Deux listes de type "void" sont ensuite injectées dans le système, suivies du reset du flag 01.
Le flag 01 est un élément du trigger permettant le chargement, à bon escient, de données nulles dans l'une des listes.

Le flux eTronic, libéré par m, est accouplé à un Gear à fluides de type w-REPEND.
Ils constituent le début de la partie centrale de l'Ordonnateur.

Code : Tout sélectionner

	  { } { } 1 CF
	  m
	  WHILE 1 ≠
La deuxième partie contient donc la partie centrale de l'Ordonnateur.
Elle permet le chargement des listes - initialement de type void - qui sont transmutées, via un effet Flisztien, en liste Zeckendorfée pour deux d'entre-elles (avec la liste 'l' ) et en liste binaire de type Fibonologic pour l'autre.
Cette partie centrale, via à un appel codé FIB, utilise le module "Fiboget" qui sera détaillé plus loin.

À noter, le testeur IFT : 1 == { 0 ::l STO+ } IFT
Les ingénieurs, en connaissance de cause, n'ont pas voulu de la version 1 == << 0 'l' STO+ >> IFT plus lente.
Mais ils ont dû faire face à un problème conceptuel : 1 == << 0 'l' STO+ >> IFT est interprété comme 1 == << 0 l STO+ >> IFT rendant tout le système Ouragan non fonctionnel !
Appel a finalement dû être fait à un spécialiste diplômé de LEEB (Langues Étranges Et Bizarres). Après quelques tâtonnements, il trouva la solution à ce problème conceptuel en remplaçant 'l' par ::l.

Code : Tout sélectionner

	  REPEAT m FIB DUPDUP
		n ≤ IF
		THEN UNROT + SWAP NEG
			 'n' STO+
			  1 'l' STO+
			 SWAP
			 "F" m + +
			 1 SF
		ELSE DROP2 
		     1 FS? 
		     1 == { 0 ::l STO+ } IFT
		END
Enfin le dernier élément de l'Ordonnateur.
Il s'agit du décélérateur mono-type DECR bifonctionnel : il réduit m d'une unité d'une part et laisse la nouvelle valeur de m prête à être réutilisée par le Gear à fluides de type w-REPEND, vu précédement, d'autre part.
On découvre ensuite l'arrière du bloc Gear w-REPEND nécessaire à l'étanchéité du bloc.
Enfin, la liste binaire de type Fibonologic est "reversée" en une seule étape par un moteur spécifique de type REVLIST.

Code : Tout sélectionner

		'm' DECR
	  END
		l REVLIST 
  >>
>>
2) Le module "Fiboget"

il s'agit d'un computer matriciel compact de 360 bits. Il n'y a rien de plus à en dire si ce n'est sa grande rapidité.

Code : Tout sélectionner

<<
	[[1 1][1 0]] 
	SWAP ^
	2 GET
>>
Précision : le module "Fiboget" est fonctionnel sur l'intervalle [0, 9999].

… bon, je peux aller manger !
:wink:

Edit : typo(S), etc.
Modifié en dernier par FLISZT le 07 déc. 2022 02:27, modifié 3 fois.
Bruno
Sanyo CZ-0124 ? TI-57 ? HP-15C ? Canon X-07 + XP-140 Monitor Card ? HP-41CX ? HP-28S ? HP-50G ? HP-50G
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3404
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: MPO n°114: Eine Zeckendorf-Darstellung ganzer Zahlen

Message par C.Ret »

FLISZT a écrit : 04 déc. 2022 17:02Ik begrijp er niets van!
Moi non plus, mais c'est comme cela, c'est la guerre, il faut faire de son mieux même si on ne sait pas trop où on va et dans quel état nous serons demain.
FLISZT a écrit : 04 déc. 2022 17:02… peut-être pas tout son temps mais ça lui arrive !
Moi, aujourd'hui ça surtout été du Antonin Dvorak et notamment la Symphonie n°9 « Du Nouveau Monde » (Orchestre philharmonique de Radio France)
Ce n'est pas la version que je préfère, mais je n'ai plus de lecteur de bonne qualité sonore pour passer mes vieux CD.
FLISZT a écrit : 04 déc. 2022 17:02Mince ! Je croyais qu'on avait jusqu'à juin 1923 ! :lol:
Oui, mais tu sais comment c'est avec les huiles ... toujours impatientes, jamais assez vite.
FLISZT a écrit : 04 déc. 2022 22:14… bon, je peux aller manger !
Permission accordée... Rompez le rang.

Pendant ce temps, je vais tenter de digérer le code en question, je ne m'attendais pas à avoir à analyser une arme atomique, juste un décomposeur d'entiers selon le procédé Zeckendorf. Cela a beau être du bon et beau RPL, je cale un peu !!

Demain, à l'aube, au Moien Sëtzung, je verrai si je peux intercéder en faveur de ton avancement. Avec un peu de chance, je croiserai le Kaporal Senf et je pourrai lui demander où en est ton dossier et s'il ne peut pas le faire glisser discrètement vers le haut de la pile.
Modifié en dernier par C.Ret le 19 déc. 2022 10:14, modifié 1 fois.
SHARP PC-1211 PC-1360 EL-5150 PC-E500 | Commodore C=128D | Texas Instruments Ti-57LCD Ti-74BASICalc Ti-92II Ti-58c Ti-95PROCalc Ti-30XPROMathPrint | Hewlett-Packard HP-28S HP-41C HP-15C HP-Prime HP-71B | CASIO fx-602p | NUMWORKS | Graphoplex Rietz Neperlog | PockEmul | Sommaire des M.P.O. | Ma...dov'il sapone.
FLISZT
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 655
Enregistré le : 09 mars 2022 19:14

Re: MPO n°114: Eine Zeckendorf-Darstellung ganzer Zahlen

Message par FLISZT »

C.Ret a écrit : 04 déc. 2022 23:20 Moi non plus, mais c'est comme cela, c'est la guerre, il faut faire de son mieux même si on ne sait pas trop où on va et dans quel état nous serons demain.
Et oui, à la guerre comme à la guerre !
C.Ret a écrit : 04 déc. 2022 23:20 Moi, aujourd'hui ça surtout été du Antonin Dvorak et notamment la Symphonie n°9 « Du Nouveau Monde » (Orchestre philharmonique de Radio France)
Ce n'est pas la version que je préfère, mais je n'ai plus de lecteur de bonne qualité sonore pour passer mes vieux CD.
Bonne symphonie ! J'en ai une version en CD, mais à vrai dire, ma HiFi me sert assez rarement maintenant.
Un Grundig Concerto Boy 1100, qui me vient de mon père et qui lui avait été offert par ses parents dans les 70's (…), dans la cuisine.
C'est de la mono, mais le son me plaît vraiment.
Exactement ce modèle : https://www.doctsf.com/grundig-concert- ... e79cedf8bb ; on aperçoit la poignée repliée.
Il y eut différentes variantes : https://www.doctsf.com/grundig-concert-boy-1100/f11924 .
Le reste du temps : mon laptop et des écouteurs (éventuellement mon SONY ICF-2001D, un récepteur, mais ce n'est pas top pour la musique).

Toutefois, j'avais écouté cette même symphonie sur ma chaîne (Tuner), ici en replay :
https://www.radioclassique.fr/replay-co ... ozakovich/ (à 01h00min)
J'avais trouvé la prise de son excellente : j'ai entendu des choses dont je ne me souvenais pas (oubli ? qualité de l'interprétation ? ).

Et si tu en as l'envie (et le temps… ), écoute la 9ème de Bruckner. Je la trouve assez moderne avec un coté musique de film (voire de SF parfois) avant l'heure… Bémol : il faut en aimer l'ambiance générale. https://www.youtube.com/watch?v=DKQCkmeWJAc (ici avec Cladio Abbado, plus d'une heure et sans partition… Abbado conduisait sans papiers ! ) (la vidéo n'est pas top, mais le son tout à fait correct). Celibidache était réputé pour ses interprétations de Bruckner, notamment.
Bon FLISZT… tu te calmes !
:wink:
C.Ret a écrit : 04 déc. 2022 23:20 Oui, mais tu sais comment c'est avec les huiles ...
… oh que oui ! Elles ont bien "prix" … avec l'inflation !
C.Ret a écrit : 04 déc. 2022 23:20 Demain, à l'aube, au Moien Sëtzung, je verrai si je peux intercéder en faveur de ton avancement. Avec un peu de chance, je croiserai le Kaporal Senf et je pourrai lui demander où en est ton dossier et s'il ne peut pas le faire glisser discrètement vers le haut de la pile.
Vielen Dank, Herr Kommandant!
Modifié en dernier par FLISZT le 05 déc. 2022 18:19, modifié 1 fois.
Bruno
Sanyo CZ-0124 ? TI-57 ? HP-15C ? Canon X-07 + XP-140 Monitor Card ? HP-41CX ? HP-28S ? HP-50G ? HP-50G
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3404
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: MPO n°114: Eine Zeckendorf-Darstellung ganzer Zahlen

Message par C.Ret »

zpalm a écrit : 01 déc. 2022 23:11 Brigade 43 au rapport, à 38 pas de la ligne de front:

Code : Tout sélectionner

01►LBL "MPO114"                                // *** Début du programme ***
02 "="  RCL X  0#2  STOS 00  <>ZTXT  SKIP 02 ▫ // Initialisation des registres et préparation pour la suite
08▪"+"  STO+ 02                                // *** Boucle principale *** 
10▫" F"  STO+ 01  <>ZTZT                       // Préfixes des nouvelles valeurs           
13 5  √  RCL× Y  LG  #Φ  LG  /  ROUNDI         // Calcul de l’indice n du nombre de Fibonacci le plus proche
21 ENTER  FIB  X>Z?  DEC Y  <>YYZT  STO+ 01    // Si Fn > N alors on prend l’indice n précédent
27 FIB  STO+ 02  STO- Z                        // Traitement de Fn
30 RCL T  SB→Z  STO 00                         // Mise à jour de la représentation binaire
33 RCL T  x≠0?  BACK 27 ▪                      // Boucle si on n’a pas terminé la décomposition de N
36 RCLS 00                                     // *** Fin du programme *** Affichage des résultats
37 SR 01                                       // Aligne la représentation binaire
38 END
Image
A la réunion de ce matin, grande effervescence à l'Etat-major car toutes les huiles sont là impatientes de décortiquer cette nouvelle machine suisse. Les conseillers avaient beau prévenir qu'elle dispose certainement de beaucoup de fonctions nouvelles et très différentes de nos équipements classiques, un peu comme sa cousine la WP-34S. Nous avons tous été très surpris!

Malgré ces nombreux avertissements, il a fallu un certain temps aux pontes pour se rendre compte qu'il n'y avait pas de registre ALPHA mais que tous les registres, y compris les registres mémoires, pouvaient contenir des valeurs de différents types en peu comme les RPL.
C'est alors que l'analyse put progresser pas à pas.

La première observation et l'interprétation erronée du code qui en suivi constata que les registres R00 R01 et R02 sont utilisés. Mais chose inquiétante, sur la photo, ces résultats semblent être affichés simplement dans la pile opérationnelle de la machine. C'est alors seulement qu'un des Generalsekretär compris et fit observer à l'assemblée très dissipée que l'avant dernière instruction était un RCLS 00 et non pas un RCL 00 comme beaucoup d'officier empressés avaient cru lire.
D'ailleurs, au pas 05 lui correspond un tout aussi mystérieux STOS 00.

Bien que personne dans l'assemblée mouvementée qui s'agitait autour de la table aux cartes où était posé plusieurs exemplaires des documents transmis, l'analyse du code se poursuivit plus ou moins chaotique.

A la grande stupeur générale et surtout du Oberbefehlshaber des Armeekorps il apparut évident aux yeux de tous, que cette machine suisse possède une instruction FIB calculant directement les nombres de Fibonacci. Stupeur! Aucune de nos troupes, même les troupes d'élites, ne possède nativement une telle fonctionnalité.

Et l'algorithme utilisé tire parti de cette caractéristique car contrairement à l'algorithme impérial, il ne calcule pas séquentiellement et successivement les valeurs de Fibonacci afin de pointer correctement sur l'entier ciblé.
Non, non, à chaque tour de roue, la machine suisse estime l'indice et pointe directement. Les tirs trop longs sont immédiatement réajustés par un petit décrément de l'indice. L'entier est décomposé dans la seconde.
Puis l'algorithme récupère ce qu'il reste de l'entier et recommence. L'Etat Major est effrayé par une telle efficacité, pourvu que l'ennemi ne mette pas la main sur un tel équipement.

Mais, les officiers ne sont pas au bout de leur surprise. D'après nos ingénieurs, trouver le bon indice de tir paraissait être une opérations longue et risquée. Effectivement, elle nécessite quelques opérations logarithmiques mais surtout le Nombre d'Or qui peut nécessiter soit des efforts conséquents pour extraire racines carrées et diviser, soit de nombreux oktetten pour mémoriser cette constante avec une précision suffisante.
Mais non! Cette machine suisse semble avoir été conçue par le diable en personne car elle possède l'instruction qui nativement donne la valeur du nombre d'or ce qui ne prend qu'un pas et cela à pleine précision !!

Nous étions tous atterrés !

Un peu dépités, nous continuâmes l'analyse du code car il y avait ces curieuses instructions imprononçables <>ztxt <>ztzt et <>yyzt. C'est le Feldsegeant Pfahldickopf qui eut l'idée que cela pouvait correspondre à un déplacement des registres dans la pile. Nous nous mimes donc à tracer à la craie le déplacement des valeurs dans la pile opérationnelle sur le tableau noir au fond de la salle. Et nous dures recommencer une première fois car nous avions oublié qu'il n'y avait pas de registre dédié aux chaines alphanumériques mais que celles-ci se placent dans les registres exactement comme tout autre type de valeur.
Alors la mécanique interne de cet algorithme nous apparut sereinement et son mécanisme évidemment fut dévoilé.

Mais, il restait encore quelques mystères:
  • où dans ce code le signe "=" est-il affecté aux registres R01 et R02
  • comment sont construites les chaines alphanumériques dans les registres R01 et R02
  • comment la valeur binaire du code est construite.
Il nous fallut encore quelques minutes de travail collégial pour comprendre que l'instruction SB→Z met à un le n-ième bit en fonction de la valeur n contenue dans le registre Z. Astucieux! Et cela explique pourquoi il faut au final déplacer les bits d'un cran vers la droite SR 01 pour obtenir le code correctement aligné avec la norme impériale.

Ensuite, autre damnation de cette infernale machine, nous nous sommes rendu compte que les registres R01 et R2 sont alphanumériques tout au long du programme et que, contrairement aux instructions homonymes de nos équipements classiques et vétustes, les nouvelles instructions STO+ 01 et STO+ 02 permettent tout aussi bien l'arithmétique que a concaténation en mémoire. Kiischtebléien op de Kuch, elles sont capables de convertir les formats, les valeurs numériques en arguments étant visiblement converties en chaine de caractères dans le registre sans créer le moindre trouble! Grandiose!

Ce n'est qu'à la fin de cette réunion que nous comprîmes que les instructions spéciales STOS nn et RCLS nn permettent en réalité de mémoriser (STO Stack) ou de rappeler (RCL Stack) la pile tout entière dans les registres mémoire à l'adresse de départ indiquée par nn. Nous avons alors compris que les registres utilisés sont R00, R01 R02 et R03 qui contiennent à la fin du programme respectivement le code binaire (décalé), la liste des indices de Fibonacci, les termes de Fibonacci et une copie de l'entier dézingué.

Nous étions épuisés après un tel effort et la réunion du matin s'est terminée ainsi, en bavardages à propos de cette nouvelle machine et des circonstances et conséquences de son apparition.

J'en ai oublié de rappeler à l'Etat-Major de se prononcer à propos de l'inscription du Brigadier Zpalm au Rangaufstiegs-Ehrentafel. je n'ai pas non plus croiser le Kaporal Senf à propos du Chef de Section FLISZT.
Tant pis, cela sera à mettre à l'ordre du jour de la prochaine séance de commandement.
Modifié en dernier par C.Ret le 08 avr. 2023 11:38, modifié 2 fois.
SHARP PC-1211 PC-1360 EL-5150 PC-E500 | Commodore C=128D | Texas Instruments Ti-57LCD Ti-74BASICalc Ti-92II Ti-58c Ti-95PROCalc Ti-30XPROMathPrint | Hewlett-Packard HP-28S HP-41C HP-15C HP-Prime HP-71B | CASIO fx-602p | NUMWORKS | Graphoplex Rietz Neperlog | PockEmul | Sommaire des M.P.O. | Ma...dov'il sapone.
Zebulon
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 575
Enregistré le : 28 juin 2022 10:21

Re: MPO n°114: Eine Zeckendorf-Darstellung ganzer Zahlen

Message par Zebulon »

Il y a eu beaucoup d'effervescence ces derniers jours. Merci pour ces louanges et optimisations. Je vais regarder et intégrer tout cela dès que possible. :D
Zebulon
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 575
Enregistré le : 28 juin 2022 10:21

Re: MPO n°114: Eine Zeckendorf-Darstellung ganzer Zahlen

Message par Zebulon »

C.Ret je viens de faire tourner ta version Python du code et je crois que tu as touché le Graal. Elle est tout simplement fantastique, épurée, économe en resources et facilement transposable sur de nombreuses machines. Chapeau bas ! :ugeek:
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3404
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: MPO n°114: Eine Zeckendorf-Darstellung ganzer Zahlen

Message par C.Ret »

Zebulon a écrit : 07 déc. 2022 13:52Elle est tout simplement fantastique, épurée, économe en resources et facilement transposable sur de nombreuses machines.
Fantastique, pas tant que cela. En réalité, c'est tout l'avantage des MPO, on partage nos codes et les idées des uns permettent aux autres d'améliorer et revoir leur propre code ou de changer complètement d'approche.

Tu verras, à force de pratiquer, toi aussi tu vas te prendre au jeu. Au début, il faut juste un code qui fonctionne et donne les bons résultats. Après, c'est une course infinie d'améliorations et de chipotages pour gagner un tout petit rien (ou parfois tout perdre).

Comme premier exercice, tu pourrais commencer par simplifier le code Python du Grieg's Baron Von Nervigstück am Petrus qui n'est pas optimal. En effet, il peut être encore plus court et surtout, il peut se passer de la variable I. Je te laisse chercher, n'hésite pas à nous faire part de tes progrès ou déboires.

Il y a souvent sur notre forum des spécialistes du Python bien plus habiles que le baron. De vrai pros en réalité !
SHARP PC-1211 PC-1360 EL-5150 PC-E500 | Commodore C=128D | Texas Instruments Ti-57LCD Ti-74BASICalc Ti-92II Ti-58c Ti-95PROCalc Ti-30XPROMathPrint | Hewlett-Packard HP-28S HP-41C HP-15C HP-Prime HP-71B | CASIO fx-602p | NUMWORKS | Graphoplex Rietz Neperlog | PockEmul | Sommaire des M.P.O. | Ma...dov'il sapone.
Avatar du membre
gege
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 7141
Enregistré le : 31 janv. 2008 14:24
Localisation : Banlieue Paârisienne
Contact :

Re: MPO n°114: Eine Zeckendorf-Darstellung ganzer Zahlen

Message par gege »

Bonjour,
Au rapport sur Prime pour un canon de décomposition à détente directe.
Certains cas limites amenant à une portée légèrement surestimée, un test en deux temps permet de faire mouche à tout coup.
Les limites liées à la célèbre racine de 5 (certainement une référence au nombre de nos maréchaux) font que cette arme ne dépasse pas la limite des 999 999 999 999.

Code : Tout sélectionner

EXPORT zeckendorf(n)
BEGIN
LOCAL m,f,r,s;
√5▶r;(1+r)/2▶s;WHILE n>0 DO
1+FLOOR(LN(n*r)/LN(s))▶m;
ROUND(s^m/r,0)▶f;IF f>n THEN
m-1▶m;ROUND(s^m/r,0)▶f;END;
PRINT("F"+m+" "+f);
n-f▶n;END;END;
Exemple de salve :
zeckendorf(1000000)
F30 832040
F26 121393
F24 46368
F12 144
F10 55

Prêt à mettre en oeuvre cette pièce meurtrière !
G.E.
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3404
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: MPO n°114: Eine Zeckendorf-Darstellung ganzer Zahlen

Message par C.Ret »

Marge a écrit : 02 déc. 2022 12:3529ème régiment d'artillerie, au rapport !
L'entrée de l'obus dans la bouche à feu est indispensable avant d'actionner le tir au moyen de la commande GSB 9.

Code : Tout sélectionner

01 LBL 9     06 STO 1     11 RCL 1     16 STO 1      21 LBL 7      26 PAUSE
02 STO 3     07 STO 2     12 +         17 Rd         22 RCL 0      27 -
03 2         08 LBL 8     13 X>Y       18 STO 2      23 PAUSE      28 X=0
04 STO 0     09 RCL 3     14 GTO 7     19 ISZ        24 RCL 3      29 RTN
05 1         10 RCL 2     15 RCL 2     20 GTO 8      25 RCL 2      30 GTO 9
Les effectifs nécessaires se composent de quatre registres et de trente pas, soit 58 octets (l'âge du commandant !).
zpalm a écrit : 01 déc. 2022 23:11Brigade 25 en soutien à 41 pas:

Code : Tout sélectionner

 // Début du programme
01 STO 0                                                                // Mémorisation du nombre de départ N
// Boucle principale
02 5 SQRT STO 2 * LOG RCL 2 1 + 2 / STO 3 LOG / 1 + INT STO 1           // Calcul de l’indice n du nombre de Fibonacci le plus proche
19 RCL 3 RCL 1 y^x RCL 2 / . 5 + INT RCL 0 X>=Y? GTO 34 1 STO- 1 GTO 19 // Si Fn > N alors on prend l’indice n précédent
34 X<>Y STO- 0 R/S                                                      // Affichage nombre de Fibonnaci
37 RCL 1 R/S                                                            // Affichage  indice
39 RCL 0 X#0? GTO 02                                                    // Boucle si on n’a pas terminé la décomposition de N
Ach! Ce matin, je me suis rendu plein d'élan et d'entrain au Moien Sëtzung avec sous le coude les listings de ces deux brillants algorithmes de décomposition pour ces deux armements aussi classiques que prestigieux.

Mais, j'ai très vite déchanté.

Au vu des piètres résultats de nos troupes et des dégâts douloureux occasionnés aux différents fronts par les températures hivernales très négatives (ou avons atteint par endroit les -10°C qui ont figés la boue et nous avons eu une neige gelée et collante). Les officiers Supérieurs ainsi que le représentant de son Excellence étaient tous de très mauvaise humeur. Et je crois qu'ils ont eut l'idée de passer leur colère sur moi, ma bonne humeur ayant certainement été prise pour un manque de sérieux; il m'a été vertement reproché de ne pas prendre suffisamment conscience de la gravité de la situation et des difficultés occasionnées par ces circonstances alarmantes.

Tous les maux ont été reprochés à ces deux algorithmes, pourtant fort bien écrit et il a été demandé de corriger cela au plus vite. Ils sont trop longs et utilisent trop de ressource, l'Armée Impériale n'a plus les moyens de supporter un tels luxe ??!?
Puis leurs affichage successifs ne sont pas clairs et ils vont embrouiller nos pauvres soldats gelés et engourdis par le froid !

J'étais déconfit et j'ai tenté de sauver le coup avec un code bien plus court dont je donne ci-dessous le listing pour les unités 25. Il sera facile de l'adapter pour qu'il fonctionne sur les unités 19C et 29C en y ajoutant des labels. Pour que cette première version soit acceptée par l'Etat Major devenu grognon et mal embouché, j'ai limité l'affichage aux seules valeurs de Fibonacci de la décomposition.

Voici donc le code de 14 lignes que les autorités ont bien daigné certifier en fin de compte et non sans efforts. Il a fallu expliquer et justifier chaque détail. Dure réunion.

Pour décomposer un entier, il faut:
  1. Charger le code dans la machine. Le code fait 14 pas et utilise les registres R0 R1 et R2 en sus du registre de la dernière chance LASTx.
  2. Initialiser les registres R1 et R2 avec les valeurs respectives +7778742049 et -2971215073. Veillez à bien respecter le signe de ces deux valeurs. Il s'agit de +F49 et -F47. Je vous laisse le soin d'étudier le pourquoi et le comment de tout cela.
  3. Remettre à zéro le compteur programme par GTO 00 ou RTN,
  4. Saisir l'entier et lancer la décomposition par R/S.
Les valeurs de Fibonacci s'affichent en ordre décroissant. Pressez à nouveau sur R/S pour obtenir la suivante. La machine affiche zéro en fin de décomposition. Remettre à zéro le pointeur de programme pour le tir suivant.

Code : Tout sélectionner

---------------+---------------+---------------+---------------+
01  RCL 2      04  STO 0       09  R/S         12  RCL 0
02  RCL 1      05  RDN         10   -          13   -
03   +         06  LASTx       11  LASTx       14  GTO 04
               07  x>y?
               08  GTO 12
---------------+---------------+---------------+---------------+
Modifié en dernier par C.Ret le 08 avr. 2023 11:41, modifié 2 fois.
SHARP PC-1211 PC-1360 EL-5150 PC-E500 | Commodore C=128D | Texas Instruments Ti-57LCD Ti-74BASICalc Ti-92II Ti-58c Ti-95PROCalc Ti-30XPROMathPrint | Hewlett-Packard HP-28S HP-41C HP-15C HP-Prime HP-71B | CASIO fx-602p | NUMWORKS | Graphoplex Rietz Neperlog | PockEmul | Sommaire des M.P.O. | Ma...dov'il sapone.
Avatar du membre
zpalm
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 2919
Enregistré le : 03 mai 2008 15:33
Localisation : Grenoble

Re: MPO n°114: Eine Zeckendorf-Darstellung ganzer Zahlen

Message par zpalm »

C.Ret a écrit : 23 déc. 2022 16:09 Voici donc le code de 14 lignes que les autorités ont bien daigné certifier en fin de compte et non sans efforts. Il a fallu expliqué et justifier chaque détail. Dure réunion.
Brilliant !
Répondre

Retourner vers « Tous les Pockets »