5/8 fini \o/
Il est pas si dur que ça, il faut juste être TRES rigoureux :
.
mais quand je regarde les cores des autres, je me dis que j'ai loupé des trucs .
Spoiler Alert!
5/8 fini \o/
Il est pas si dur que ça, il faut juste être TRES rigoureux :
.
mais quand je regarde les cores des autres, je me dis que j'ai loupé des trucs .
Spoiler Alert!
Ce qui est bien avec un score comme ça, c'est que n'importe quelle optimisation te retire des milliers de cycles.
A condition d'en trouver une d'optimisation.
Tu disais que la 6 était facile? je sais même pas par ou commencer... j'ai un début d'idée mais je bloque sur le transfert de variables en croisée.
Rooooh, t'as 148 lignes de code, y en a forcément que tu peux supprimer sans problème !
Pour la 6, j'avais commencé à écrire un diagramme de séquence pour comprendre quelles informations devaient circuler et je me suis rendu compte que le tout tenait en exactement 4 interactions répétées (et l'initialisation rentre dans le cas commun).
Je me souviens pas vraiment du problème, ça va être dur de faire une vraie revue, héhé.
En tout cas, en lisant à l'arrache, si j'ai un commentaire à faire, c'est que tu peux SWIZ vers M directement. Si le lecteur est bien celui vers COP, ça doit libérer juste ce qu'il faut comme lignes pour pouvoir vérifier M > 9990 et gagner un test sur le cas courant. En fait, j'imagine que ça peut même ressembler à
Spoiler Alert!
Ah, et XC peut commencer dans le bon mode.
Bon, ok, c'est tout pourri comme optim.
Ce qui est chronophage c'est de devoir tester toutes les possibilités de 0 à 999 quand il y a trois x. Gagné un cycles dans cette boucle serait le seul moyen de gagner beaucoup de temps. Mais c'est pas grave, je vais essayer d'avancer dans les suivants (je suis en bonne voie pour le 6).
Ah, ça avance !
Et de mon côté, j'ai fini la campagne bonus ! La 7 est... affreuse, y a clairement un bout de mon code qui marche uniquement contre les exemple, pas contre la spec (et je ne sais pas comment améliorer ça), le 9 est relativement simple mais j'ai dû réécrire un petit bout pour passer sous la limite de taille.
C'est le premier Zachtronics que je finis complètement (Shenzhen et Opus Magnum, je n'ai fait que la campagne principale ; les autres, je n'en suis même pas là), ça a vraiment été une super expérience !
Pour le coup, je viens de trouver 13k cycles dans ma propre solution en enlevant certaines communications sous-optimales. Bon, reste à comprendre comment en enlever 90k de plus pour se rapprocher des meilleurs... Il doit y avoir un moyen de complètement changer cette boucle, mais je ne vois pas encore comment.
À la réflexion, c'est pareil pour le #4, le top percentile me semble physiquement impossible pour le moment.
Dernière modification par Le Canard fou ; 29/05/2020 à 13h56.
Et la patience (je suis à 25) et Kleptomancer (j'ai une petite idée de quel problème correspond, faut juste que j'essaie ---> ah oui, j'ai passé mon temps à essayer de kleptomancer l'autre problème où il y a des choses à voler ).
Donc, ça, c'est pas de la kleptomancie :
Et avec un peu plus de bidouillage :
Dernière modification par Le Canard fou ; 29/05/2020 à 15h42.
Magnifique le top percentile!
Bonjour, sur le 7, je vois comment faire, j'arrive à transférer sans soucis un fichier, j'ai juste un "petit problème" sur comment aller chopper le second sans saturer mes canaux de discussion.
On verra bien .
La création du premier fichier reconstitué marche! Mais il me reste que 29 lignes pour gérer la boucle et l'envoi dans l'host. Je sens qu'il va falloir dégraisser. Pour info, tu mets combien de cycles à créer un fichier? (830 pour ma part).
Edit : presque .
Dernière modification par Clydopathe ; 30/05/2020 à 15h18.
J'en mets vraiment beaucoup (entre 1k5 et 2k), mais j'ai au cœur de ma boucle (pour chaque ligne à copier) un magnifique
qui doit pas aider.Code:@REP 13 NOOP @END
Mes communications rebondissent beaucoup, je suis très dépendant du jeu de tests. Et TEST MRD est très douteux dans cet exercice.
edit : je viens de passer un temps déraisonnable à virer ce bout de code pour quelque chose de légèrement moins pire (mais avec des NOTE LOL WTF à la place). J'ai mon premier fichier après 1300 cycles.
edit : du coup, je viens de complètement changer d'algo pour quelque chose de nettement plus propre, mais avec plus de rebonds et plus lent.
edit : ah, j'ai réussi à minimiser le nombre de rebonds entre deux exas qui n'ont rien à voir avec l'information, cette dernière circule donc un peu moins mal. \o/
Dernière modification par Le Canard fou ; 30/05/2020 à 18h28.
Bien joué! Demain je vais tenter de finir mon code. J’ai juste un bug sur un retour en cas de lien cassé.
Et le 7 viens d'y passer, avec une grosse méthode de brute force
J'ai un truc horrible base de :
@REP 10
REPL 801
REPL 802
REPL 803
@END
Je suis obligé de le faire 15 fois pour être sur que les hexas vont bien au bout. J'aurais bien mis un gif, mais il fait 33mo de taille...
Edit : J'ai amélioré mes cycles avec un tuning aux petits oignons, je ne pense pas pouvoir descendre plus bas.
Dernière modification par Clydopathe ; 01/06/2020 à 10h03.
Bien joué !
À la base, j'avais aussi 3 MARK différents pour chacune des 3 rangées, mais ça faisait vraiment beaucoup trop de lignes de code et je suis finalement revenu à un code commun aux 3 lecteurs. J'imagine que t'as dû pas mal compresser le code pour faire rentrer les 3 dans la limite de 150 ? Ou c'est juste pour faire
?Code:MARK 801 LINK 801 JUMP DOSTUFF MARK 802 LINK JUMP DOSTUFF ...
Merci
Chaque mark a son propre code (mais très ressemblant) avec un timing différent pour commencer à envoyer ses infos. C'est l'Hexa qui reçoit qui fait le tri. Par exemple :
Les autres ont deux lignes de plus.NOTE FICHER1
MARK 801
LINK 801
GRAB X
MARK LECTF1
TEST EOF
TJMP SORTIE
COPY F M
JUMP LECTF2
J'ai regardé le 8eme, il a l'air de beaucoup ressemblé au dernier de la campagne de base. Je pense m'inspirer de ce code pour le faire. Mais bon, pas tout de suite .
J'étais assez curieux de voir comment j'avais fait, mais j'avoue que j'ai eu beaucoup de mal à décrypter ma solution quelques mois après ! De mon côté je ne parallélise pas la lecture des trois lecteurs mais je les faits un par un. Ca simplifie énormément la synchronisation et le résultat n'est pas trop mauvais (6377 cycles).
J'avais un début comme ça, mais j'arrivais pas à gérer la synchro pour monter et descendre dans les différentes pièces.
Le 8 est passé! \o/
Par contre, le 9 me fait peur. On a que 100 lignes pour faire tout ça, je vois pas comment faire .
JE L'AI FINI!!!
Oh, ça fait du bien! bon par contre mon code est en 112 lignes donc je n'ai pas le doit au leaderboard, mais c'est pas grave. Mon premier Zachtronics fini à 100% .
Je vais attaquer lequel maintenant?
Bravo !
Ben, déjà, tu vas passer sous les 100 lignes, hein. Et après, pas Shenzhen s'il te plaît, je veux pas revoir ce langage horrible ni faire la campagne bonus.
C’est celui qui me tente le plus pourtant...
Tis est trop dur, Opus Magnum est trop visuel et SpaceChem me fait mal aux neurones. Et j’ai déjà platiné Eliza .
Oui, je vais tenter de passer sous 100lignes.
Il faudrait que je le refasse en entier et là euh... je vais déjà passer sous les 100 commandes .
Je confirme, il faut passer l'impression initiale : oui on peut très bien s'y éclater sans savoir coder du tout, c'est vraiment un apprentissage progressif et je le trouve plus simple qu'un Shenzen par exemple. Et c'est vraiment celui que j'ai préféré avec Spacechem (que j'ai jamais fini parce que il y a un stade où il me rappelle toujours qu'il me manque quelques points de QI).
Les points de QI en moins, je suis en train de le vivre pour l'optimisation de mon code. Je suis passé à 105 lignes en grattant partout, pour optimiser plus va falloir que je recode tout . En sachant que le calcul du checksum me prends bien 25 lignes.
TIS, il me reste que les trois derniers exercices de la campagne mais quand je regarde l'interface actuellement je saigne des yeux.
Edit : j'ai commandé le livret pour Shenzen, je crois que ce sera mon prochain (après tout j'ai une formation d'électronicien à la base).
https://www.lulu.com/fr/fr/shop/zach...-23899820.html
Mais qu'est ce qu'il est hard Shenzen... Je galère sur deux nivaux : la veste de lazer game et le poseidonn-779. Je suppose que ce sera encore pire après.