π
<-
Chat plein-écran
[^]

News 2020
April (4)
March (17)

News 2019
August (10)
July (3)
June (4)
May (11)
April (7)
March (19)
January (14)

News 2018
August (5)
July (1)
June (9)
May (10)
April (2)
March (14)
January (12)

News 2017
August (10)
July (14)
June (14)
May (11)
April (9)
March (12)
January (11)

News 2016
October (10)
August (8)
July (4)
June (8)
May (14)
April (9)
March (13)
January (11)

News 2015
October (15)
August (11)
July (4)
June (7)
May (12)
April (6)
March (11)

News 2014
August (2)
July (4)
June (2)
May (5)
April (4)
March (5)

News 2013
August (6)
July (6)
June (8)
May (14)
April (24)
March (16)
January (10)

News 2012
October (11)
August (6)
July (7)
June (8)
May (16)
April (16)
March (6)

News 2011
August (4)
July (4)
June (11)
May (5)
April (2)
March (6)

News 2010
July (1)
June (1)
May (2)
April (1)

News 2009
August (2)
April (1)

Le bug suites TI-83 Premium CE corrigé en 5.2.1

New postby critor » 01 Oct 2016, 16:03

Le nouveau système
5.2
du 30 août 2016 apportait pour la rentrée des nouveautés très utiles dans le contexte de suites récurrentes
(Première)
: la possibilité de les définir directement aux rangs
n+1
ou
n+2
comme dans les livres et énoncés ! :bj:
La nouvelle version corrective
5.2.1
qui vient de sortir s'occupe justement de problèmes introduits dans ce contexte et qui nous ont été pointés par un de nos membres.



Prenons par exemple la suite
$mathjax$\left(v_n\right)$mathjax$
définie par récurrence par
$mathjax$v_{n+1}=2 v_n$mathjax$
et
$mathjax$v_0=1$mathjax$
.
On en déduit la relation
$mathjax$v_n=2 v_{n-1}$mathjax$
.
Version
$mathjax$n=0$mathjax$
$mathjax$n=1$mathjax$
$mathjax$n=2$mathjax$
5.2.0
$mathjax$v_0=1$mathjax$
$mathjax$v_1=2$mathjax$
$mathjax$v_2=4$mathjax$
5.2.1
$mathjax$v_0=1$mathjax$
$mathjax$v_1=2$mathjax$
$mathjax$v_2=4$mathjax$

Les deux versions donnent bien les mêmes résultats selon le tableau de valeur.
Notons toutefois un petit détail avec une légende contextuelle incorrecte en version
5.2.0
:
v(n+1)=1
qui sur la ligne sélectionnée se traduit en
v(0+1)=1
et donc au final
v(1)=1
ce qui est décalé d'un rang et faux.
Heureusement, cette légende a été corrigée en version
5.2.1
, devenant désormais directement
v(0)=1
. :bj:



Prenons maintenant la suite
$mathjax$\left(v_n\right)$mathjax$
définie encore une fois au rang
n+1
mais par son terme général
$mathjax$u_{n+1}=n$mathjax$
.
On en déduit la relation plus usuelle
$mathjax$u_n=n-1$mathjax$
.
Version
$mathjax$n=0$mathjax$
$mathjax$n=1$mathjax$
$mathjax$n=2$mathjax$
5.2.0
$mathjax$u_1=0$mathjax$
$mathjax$u_2=1$mathjax$
$mathjax$u_3=2$mathjax$
5.2.1
$mathjax$u_0=-1$mathjax$
$mathjax$u_1=0$mathjax$
$mathjax$u_2=1$mathjax$

Ce qu'affiche la calculatrice dans les deux cas est parfaitement juste, légende contextuelle incluse.
En version
5.2.0
, il était bien vrai que pour
$mathjax$n=0$mathjax$
,
u(n+1)=u(0+1)=u(1)=0
.
Mais voilà, la version
5.2.0
donnait donc un tableau de valeur incomplet en commençant par le terme de rang 1
$mathjax$u_1$mathjax$
, et de plus avec une numérotation des lignes qui si on omettait la légende contextuelle le faisait passer pour le terme de rang 0
$mathjax$u_0$mathjax$
...
C'est heureusement corrigé, et nous nous permettons encore de le qualifier de petit détail à côté de ce qui va suivre...



Car donc, entre les suites définies par récurrence et par leur terme général, il y avait donc en version
5.2.0
deux façons différentes en apparence d'effectuer les calculs, décalées entre elles d'un rang.
Mais que se passerait-il donc si nous prenions maintenant une suite hybride, comme par exemple
$mathjax$\left(w_n\right)$mathjax$
définie par
$mathjax$w_{n+1}=2 w_n+n$mathjax$
et
$mathjax$w_0=1$mathjax$
?
On en déduit la relation
$mathjax$w_n=2 w_{n-1}+n-1$mathjax$
.
Version
$mathjax$n=0$mathjax$
$mathjax$n=1$mathjax$
$mathjax$n=2$mathjax$
5.2.0
$mathjax$w_0=1$mathjax$
$mathjax$2 w_0+u_2=3$mathjax$
:mj:
$mathjax$2\times 3+u_3=8$mathjax$
:mj:
5.2.1
$mathjax$w_0=1$mathjax$
$mathjax$w_1=2$mathjax$
$mathjax$w_2=5$mathjax$

Bref, comme en version
5.2.0
on somme ici deux termes que la calculatrice traite différemment avec un décalage d'un rang, bien évidemment on obtenait des résultats complètement faux. :mj:

Un problème certes grave dans le contexte de l'enseignement secondaire français où les suites ont une importance capitale en Première et Terminale des séries générales et technologiques confondus, et on ne peut que se féliciter qu'il ait été corrigé en seulement 21 jours, un record je crois jamais vu tous constructeurs confondus ! :bj:

Il est donc très important d'effectuer la mise à jour
5.2.1
au plus tôt et ce même si tu ne travailles pas encore sur les suites, pour ne pas risquer d'oublier et d'avoir des résultats faux plus tard ! :#non#:


Téléchargements
:


Source
:
viewtopic.php?t=19052&p=207656#p207694

Le mois du jeu sur 82 Advanced : Semaine 1

New postby Alvoko » 02 Oct 2016, 14:58

Bienvenue dans le début du mois du
Jeu sur 82 Advanced
!

Image

Je vais vous présenter un jeu par genre pour 82 Advanced par semaine!

pendant tout le mois d'octobre en commençant par ce dimanche et en terminant le dernier lundi d'octobre !

Et pour commencer je vais vous montrer et vous expliquer ce qu'est un
runner
. ;)
Un
runner
est un jeu ou l'on doit avancer le plus loin possible en évitant des obstacles de plus en plus difficile au fil du temps,
il permet de jouer très rapidement dans des lieux ou l'on ne peut pas jouer normalement, comme les transports en commun par exemple.

C'est pourquoi ce type de jeu est très courant sur calculatrice :).
Ça permet d'y jouer très brièvement pendant la pause ou pendant des moments moins propice >:] .

Ce type de jeu est très populaire sur smartphone, on peut citer par exemple le très populaire
jetpack joyride
:

Image

Et pour ce
dimanche
nous allons commencer par un jeu créé par Jacques:
Icopter


Image

Je vous le recommande puisque le principal intérêt de ce jeu est de pouvoir choisir la tête de son hélicoptère! :
Image

(Attention le cos( (et autre formules similaires) peuvent provoquer des bugs)

La difficulté est croissante, personnellement je n'y arrive pas au-delà de 990 points:

Image

Je vous laisse donc l'essayer!

https://tiplanet.org/modules/archives/d ... hp?id=1593

A la semaine prochaine pour un nouveau jeu pour 82 Advanced!
Last edited by Alvoko on 02 Oct 2016, 19:30, edited 6 times in total.
Link to topic: Le mois du jeu sur 82 Advanced : Semaine 1 (Comments: 14)

Bug fatal 2048CE + fileioc2.4 - comment l'éviter ou réparer

New postby critor » 03 Oct 2016, 20:55

73637362Pour cette rentrée 2016, nombre d'entre vous avez rencontré de graves problèmes sur votre
TI-83 Premium CE
.
La calculatrice plantait et le système était alors incapable de redémarrer correctement, se bloquant sur un écran blanc avec un éventuel motif régulier en bas. La calculatrice devenait donc inutilisable, et sans outils extérieurs il était impossible de la débloquer - le bouton
'reset'
au dos ne changeant strictement rien au problème. :mj:
Imaginez le drame, si cela se produisait pendant un devoir... :#roll#:

C'était bien évidemment un bug dû à l'utilisation d'un programme assembleur particulier, mais lequel ? Personne ne nous donnait exactement le même contexte et c'était là toute la difficulté : le bug, qui probablement arrivait à corrompre la mémoire Flash, n'était pas visible immédiatement car se déclenchant à retardement, au prochain plantage/reset.

D'une part, nous te sortons aujourd'hui un tutoriel te permettant de réparer toute machine dans une telle situation. :)
Tu perdras l'intégralité des données de la machine, applications et système d'exploitation compris. Il n'y a hélas rien à faire, une fois que la calculatrice s'est bloquée avec une mémoire d'archive corrompue il est déjà trop tard... :'(

Après avoir demandé quels programmes assembleur avaient été utilisés sur les machines des victimes et recoupé plusieurs témoignages, nos soupçons se sont arrêtés sur le jeu diffusé par
Cemetech
. Toutes les personnes avaient en effet en commun d'avoir joué à ce jeu.
Mais nous n'étions pas au bout de nos peines, car le bug semblait aléatoire, étant loin de se déclencher systématiquement.

Précisons aussi que
2048 CE
nécessite l'installation des bibliothèques C, et que le bug pouvait donc aussi bien se situer dans ces dernières.



Ce week-end, nous avons enfin réussi à trouver un moyen de reproduire à coup sûr le bug, ouvrant donc la voie à son analyse et à sa correction ! :bj:
Il se produisait en fait lorsque l'on quittait le jeu sans que plus aucune partie ne soit en cours
(après avoir perdu, après avoir gagné, ou encore immédiatement après avoir lancé le programme)
.
En apparence la calculatrice continuait à fonctionner normalement, mais tout appui sur le bouton
'reset'
la rendait immédiatement inutilisable.
Il semblait donc que
2048 CE
tentait même dans ces cas-là une écriture du score en mémoire d'archive, et ce fort bizarrement puisqu'il n'y avait forcément rien de neuf à écrire puisqu'aucune nouvelle partie n'était démarrée...

Nous avons immédiatement reporté la méthode de reproduction du bug à l'équipe de développement des bibliothèques C.
Après analyse, il se trouve que c'était la sous-bibliothèque
fileioc 2.4
qui ne gérait pas correctement la situation assez particulière provoquée par
2048 CE
.
Le bug a été corrigé et la bibliothèque a été mise à jour hier soir,
fileioc
passant en version 2.5.

Mais... si jamais tu as joué à
2048 CE
, il ne te suffit pas de mettre à jour la bibliothèque pour être sorti(e) de l'auberge.
Car ta mémoire d'archive est peut-être déjà corrompue, chose qui ne deviendra visible qu'au prochain plantage, ce qui peut arriver dans des semaines ou même des mois pendant un devoir...

Il est donc
urgent
de t'occuper de ce problème dès maintenant, si jamais tu as
téléchargé les bibliothèques C avant ce 2 octobre 2016
et
joué à
2048 CE
.

Exposant ce grave problème à l'équipe de développement des bibliothèques C, cette dernière sort aujourd'hui à notre demande un utilitaire permettant de réparer les mémoires d'archive corrompues.
L'utilitaire va scanner les variables de la mémoire d'archive, à l'exception des applications qui y sont enregistrées de façon différente, et :
  • désarchiver les variables corrompues récupérables
  • effacer les variables corrompues irrécupérables
Nous complétons cet utilitaire d'un second tutoriel. Tu pourras donc remettre ta mémoire d'achive en état de marche en minimisant la perte de données, éliminant ainsi tout risque de blocage futur ! :bj:

Attention
dans ce dernier cas à ne tenter sur les variables de la mémoire d'archive aucune autre manipulation que celles du tutoriel, pas même une tentative de sauvegarde. :#non#:
Il est de toutes façons déjà trop tard pour les variables corrompues irrécupérables que l'outil effacera.

Toute tentative manuelle de désarchivage
(ou d'effacement car techniquement ça revient au même)
d'une variable archivée corrompue déclenchera immédiatement le bug décrit plus haut, ce qui veut dire qu'il faudra basculer sur l'autre tutoriel avec une perte totale de la mémoire ! :mj:


Nous tenons à remercier tous les utilisateurs francophones pour leurs signalements détaillés ouvrant la voie ce soir à l'éradication de ce bug, et sans lesquels nous n'aurions pas réussi ! :bj:




Tutoriels
:

Téléchargement
:
Bibliothèques C
(avec
fileioc 2.5+
)

SwitchOperator, fais passer les trains sur ta 83 Premium CE!

New postby critor » 05 Oct 2016, 20:19

7370Cette semaine aux commandes de ton extraodinaire
TI-83 Premium CE
, deviens aiguilleur du rail avec
Switch Operator
sorti par
Unicorn
!

Dans ce nouveau jeu de réflexes passionnant et au graphisme très agréable, afin de laisser passer les trains tu devras actionner les aiguillages des 4 voies que tu as à surveiller à l'aide des touches :f104:, :f94:, :f84: et :f74:.
Mais attention de bien déclencher les aiguillages au bon moment, car ils retourneront tout seuls dans leur position d'origine après un court laps de temps... ;)

Au fur et à mesure que tu enchaînes les trains sans accident, ces derniers se mettront à arriver plus vite et parfois même sur plusieurs voies en même temps...

Mais si tu arrives à trouver le bon rythme, l'argent gagné te permettra rapidement d'acheter nombre d'améliorations salvatrices :
  • panneaux de limitation de vitesse
  • aiguillages améliorés qui mettent plus de temps à se réinitialiser
  • et, le summum qui te permettra à terme de jouer sans clavier, aiguillages automatiques ! :bj:

Tu auras besoin des bibliothèques C, à retélécharger si tu les as déjà installées avant le 2 octobre.


Téléchargements
:

Avec Autocalc, calcul exact même sur ta TI-84 Plus CE

New postby critor » 08 Oct 2016, 10:10

7373La différence principale entre la
TI-83 Premium CE
commercialisée en France et les
TI-84 Plus CE
ou
TI-84 Plus CE-T
, est que ces dernière ne disposent pas d'un moteur de calcul exact.

Mais le choix entre ces modèles est loin d'être libre :
  • Si tu vis en Amérique du Nord, tu ne trouveras pas la
    TI-83 Premium CE
    en magasin, que la
    TI-84 Plus CE
    .
  • Si tu vis en Europe hors de France, c'est la
    TI-84 Plus CE-T
    que tu trouveras en magasin, mais il est sûrement bien plus facile dans ton cas de récupérer une
    TI-83 Premium CE
    . Toutefois nombre de pays ont une liste officielle des modèles autorisés aux examens, et la
    TI-83 Premium CE
    n'y étant pas commercialisée n'en fait bien évidemment pas partie.
  • Certains examens internationaux que tu peux passer en France, dont le Baccalauréat International, ont également des listes de modèles autorisés qui de façon similaire incluent les
    TI-84 Plus CE
    et pas la
    TI-83 Premium CE
    .

7374Mais si tu n'es pas
(encore?)
concerné(e) par le mode examen, tu peux désormais rajouter un programme de calcul exact dans ta
TI-84 Plus CE
,
AutoCalc
désormais porté pour ton modèle ! :bj:
Obtiens désormais gratuitement les mêmes performances que la
TI-83 Premium CE
... :bj:

7375... et même plus encore, avec :
  • pour les angles en radians, l'obtention de la mesure principale :bj:
  • pour les nombres complexes, l'obtention des deux formes algébrique et exponentielle :bj:

7376... et même encore plus avec des formes non gérées par la
TI-83 Premium CE
:
  • trigonométrie avec des angles en π/5 :bj:
  • trigonométrie avec des angles en π/8 :bj:
  • trigonométrie avec des angles en π/10 :bj:


Téléchargement
:
archives_voir.php?id=981

Joue tes partitions sur le TI-Innovator avec ta 83 Premium

New postby critor » 08 Oct 2016, 14:04

7289Aujourd'hui après le code Morse nous allons te proposer un nouveau projet construit, autour du périphérique
TI-Innovator
de cette rentrée 2016.
Il s'agit encore une fois d'utiliser son
buzzer
intégré, mais de façon différente. ;)

70367035Au salon de l'Orme 2.16 à Marseille en juin dernier,
Texas Intruments
démontrait à l'aide d'un mini programme qu'il était possible de jouer de la musique, ci-contre même si ça ne s'entend pas un petit extrait de
bon anniversaire
.

Mais voilà le problème. A partir d'une partition de musique, comment obtenir de façon simple et juste, la liste des fréquences jouables ?



Problématique à laquelle répond le projet d'aujourd'hui,
MUSICATOR
.
Le projet définit une façon textuelle de retranscrire de façon simple et complète des partitions :
  • notation anglaise unicaractère des notes : C=Do, D=Ré, E=Mi, F=Fa, G=Sol, A=La, B=Si
  • caractère espace pour un silence
  • chiffres pour spécifier la durée des notes/silences suivants : 8=ronde, 7=blanche, 6=noire, 5=croche...
  • possibilité de régler l'octave de façon absolue avec O0, O1, ... O9, ou bien relative en demandant le passage à l'octave supérieur/inférieur avec les caractères * ou ,
  • support des altérations dièse, bémol ou point de la note ou du silence précédent, à l'aide des caractères +, - et .
  • et même, possibilité de préciser librement le rythme en bpm
    (battements par minute, c'est-à-dire nombre de noires par minute)
    en début de texte :bj:

Quelques exemples de retranscriptions simples :
  • gamme majeure ascendante : CDEFGAB*C
  • gamme mineure ascendante : CDE-FGA-B-*C
  • gamme chromatique ascendante : CC+DD+EFF+GG+AA+B*C

Deux outils permettent alors :
  • la compilation de ces transcriptions texte en listes de fréquences+durées jouables
  • la lecture de ces liste sur le
    TI-Innovator
    si connecté

La seule contrainte est que le
TI-Innovator
ne représente qu'un seul et unique instrument à une seule voie.
A moins d'en avoir plusieurs et autant de calculatrices compatibles, ne pourront donc être retranscites sans modifications :
  • les partitions faisant jouer plusieurs instruments en même temps
  • l'éventuelle partie accompagnement des partitions
  • les partitions demandant à un même instrument de jouer plusieurs notes en même temps

Nous allons voir de suite ce que cela donne avec la vraie partition ci-contre, dont voici la transcription complète :
Code: Select all
128:O35 AAA6AAGECCAAGF7G 6FB-B-B-AGFFAAGF8A6 5AAAA6AGE7C6AAGF7G 5 B-B-B-6B-B-AGFFAAGF7A5 A*CD6 5,AA6*CD7D ..CDEF6E.D5C,A*CD6 7D6DC,AF5FG6AAGF7A5 A*CD6 5,AA6*CD7D ..DDEF6E.D7C6,B-*FFFCF7FF6FFE5,AA6*CDD5,AA*CD6F



Comme tu peux l'entendre, la transcription de la partition est bien correcte. :)



Un petit défaut subsiste toutefois. Ici tout a été fait pour que la calculatrice n'ait rien d'autre à faire pendant la lecture du morceau :
  • compilation à priori de la transcription en une liste de fréquences directement jouable
  • aucun affichage pendant la lecture
Malgré cela, la calculatrice perd du temps entre chaque note, puisqu'il y a un silence non négligeable alors qu'absent de la transcription.
C'est donc le temps perdu à chaque itération de la boucle de lecture.
Nous ignorons la raison exacte de ce retard, mais à notre avis c'est sûrement le temps mis :
  • soit pour envoyer la commande construite au
    TI-Innovator
  • soit pour construire cette commande, notamment avec la nouvelle instruction
    eval(
    du système 5.2 permettant d'inclure une valeur numérique dans une chaîne de caractères
En conséquence, pour que le morceau colle bien avec l'accompagnement, nous avons dû énormément augmenter le rythme.
Au lieu de 128bpm pour du
moderately fast
, il nous a fallu régler 860bpm.

Si l'on pouvait récupérer le temps perdu dès la première note, on pourrait corriger en rognant sur la durée des notes ou silences ultérieurs. Mais malheureusement, les instructions d'horloge du seul langage Basic retournent toutes un nombre entier de secondes, et ne permettent pas de connaître la fraction de seconde perdue dès la première note. :'(



Au final, encore une fois un projet qui s'inscrirait parfaitement dans le contexte des enseignements de ICE, TPE et ISN au lycée, ou des nouveaux EPI de la réforme du collège depuis cette rentrée.
Dans ce dernier cas, ce serait d'ailleurs une excellent moyen d'associer activement au sein d'un même projet scientifique l'enseignement d'Education musicale, afin de voir avec ses collègues et les élèves comment construire l'ensemble des différentes valeurs de fréquences nécessaires à la lecture de partitions. :bj:



Téléchargement
:
archives_voir.php?id=687757

Crédits
:
partition

Mise-à-jour/Update FILEIO 2.6 (CE C libraries)

New postby Adriweb » 09 Oct 2016, 17:29

Il y a à peine quelques jours, une mise-à-jour de FileIO (v2.5) est sortie, corrigeant un souci assez gros mis en évidence via 2048CE, tout en améliorant grandement les performances :bj:

Cependant... un
nouveau bug
dans certaines conditions (provoquant un crash/RAM clear) est passé inaperçu avec cette version là, du moins jusqu'à aujourd'hui...
Il est visible sur ChessCE par exemple, en sauvant l'état en cours, et apparemment en général pour les programmes tentant de sauvegarder des choses de plus de 255 octets.

Le bug est désormais corrigé
(un simple octet à changer :P)
dans la dernière version des bibliothèques C (avec FileIO 2.6), grâce à MateoC et jacobly qui ont pu intervenir rapidement :)
On vous invite donc à télécharger cette nouvelle version - et de manière générale, le bon réflexe en informatique est toujours d'avoir des sauvegardes de ses fichiers, ça évite les pertes ;)

Téléchargement
: dernière version des libraries (ou via GitHub directement, c'est pareil)

Résultats concours 2016 : le Tour du monde en 83 Premium CE

New postby critor » 09 Oct 2016, 20:22

7318Voici enfin ce soir les résultats de notre concours de rentrée 2016, le
Tour du monde en 83 Premium CE
.
Il s'agissait donc d'aider notre héroïne,
Sophia Flegg
, à réaliser un tour du monde sans escale. Pour cela, on te demandait donc l'expression d'une fonction définissant l'itinéraire en question.

Rien que dans l'énoncé de ce concours, tu avais d'énormes indices destinés à t'aider dans ta quête, et il est grand temps de les révéler :

Et oui car
Sophia Flegg
n'était que l'anagramme de
Phileas Fogg
, gentleman anglais héros du célèbre roman de
Jules Verne
de 1872,
Le tour du monde en 80 jours
.
La lecture du roman t'apportait nombre d'indices si tu décidais de contourner l'Eurasie par le sud, notamment en longeant la botte italienne, empruntant le canal de Suez, puis traversant la mer Rouge dans toute sa longueur.

De plus, on découvre au collège que le plus court chemin est la ligne droite, et lorsqu'il y a des contraintes une trajectoire qui peut se ramener par transformations à une ligne droite.

Enfin, on étudie en fin de collège les fonctions affines, et une idée pouvait donc être une fonction affine par morceaux.

Voici ci-contre une trajectoire respectant ces trois derniers points, et qui permettait déjà sans optimisation bien poussée de terminer le tour du monde avec encore
2428,4€
dans la tirelire ! :bj:
Code: Select all
(X≥0 et X<0.13)(1.1538462(X-0)+0)+(X≥0.13 et X<1.1)(0.83505155(X-0.13)+0.15)+(X≥1.1 et X<1.2)(0(X-1.1)+0.96)+(X≥1.2 et X<1.37)(­2.4117647(X-1.2)+0.96)+(X≥1.37 et X<1.5)(­13.307692(X-1.37)+0.55)+(X≥1.5 et X<2.14)(­1.28125(X-1.5)+­1.18)+(X≥2.14 et X<2.45)(­1.6129032(X-2.14)+­2)+(X≥2.45 et X<3.9)(­0.49655172(X-2.45)+­2.5)+(X≥3.9 et X<4.13)(­2.9565217(X-3.9)+­3.22)+(X≥4.13 et X<4.25)(­2.0833333(X-4.13)+­3.9)+(X≥4.25 et X<5.1)(­1.8(X-4.25)+­4.15)+(X≥5.1 et X<5.7)(0.26666667(X-5.1)+­5.68)+(X≥5.7 et X<12.4)(­0.38507463(X-5.7)+­5.52)+(X≥12.4 et X<14.1)(0.17647059(X-12.4)+­8.1)+(X≥14.1 et X<15.13)(0.33980583(X-14.1)+­7.8)+(X≥15.13 et X<15.41)(1.1785714(X-15.13)+­7.45)+(X≥15.41 et X<30.76)(0.074918567(X-15.41)+­7.12)+(X≥30.76 et X<30.91)(2(X-30.76)+­5.97)+(X≥30.91 et X<32.1)(0.98319328(X-30.91)+­5.67)+(X≥32.1 et X≤40)(0.51898734(X-32.1)-4.5)
Même si ce concours n'imposait pas de programmation, le sujet était ouvert et tous les moyens envisageables. Pour faciliter l'écriture de ce genre de fonction, on pouvait par exemple faire un programme la générant automatiquement à partir d'une liste de points. Voici celui que nous avons utilisé pour la fonction précédente.

Voyons donc maintenant comment les participants ont fait et jusqu'où ils sont allés.



10ème
, a choisi de mettre le cap plein sud, et une fois le continent africain franchi le reste est une promenade de santé.
Son trajet fait 54784km dont un remorquage non négligeable de 7768km. Il lui reste au final
2287,5€
.
Code: Select all
(X≤2)*(­2.5X-6.7)+(X>2)*(­0.1X-11.1)*(X<20)+(X≥20)*(0.7X-27)*(X<37.84)+(X≥37.84)*­0.514


9ème
, pour sa part choisit de contourner l'Eurasie par le nord, puis de mettre la barre au sud pour aller franchir l'Amérique centrale sans escale au niveau du canal de Panama.
Son trajet reste donc conséquent avec 52059km, mais dont seulement 869km de remorquage. Il termine avec
2373,7€
.
Code: Select all
(X≤0.286)*(0.5X)+(X≥0.286 et X≤0.57)*(1.529X-0.294)+(X≥0.57 et X≤1.833)*(1.847X+0.947)+(X≥1.833 et X≤7.571)*(0.494X+3.428)+(X≥7.571 et X≤11)*(7.167)+(X≥11 et X≤11.5)*(0.666X-0.167)+(X≥11.5 et X≤14)*(­0.067X+8.267)+(X≥14 et X≤16)*(­0.166X+9.667)+(X≥16 et X≤19)*(­0.673X+17.77)+(X≥19 et X≤21.33)*(­0.574X+15.81)+(X≥21.33 et X≤21.5)*(­13.714X+296.11)+(X≥21.5 et X≤22)*(­2.57X+56.57)+(X≥22 et X≤25.714)*(­0.808X+17.769)+(X≥25.714 et X≤30.286)*(­0.75X+16.286)+(X≥30.286 et X≤32.571)*(1.125X-40.5)+(X≥32.571)*(0.519X-20.769)


8ème
, met lui aussi d'abord le cap au nord, mais ose à la différence affronter le grand nord canadien où il n'effectue qu'une très courte escale.
Son voyage ne fait donc que 47543km, dont 1419km de remoquage. Il nous revient avec
2433,4€
.
Code: Select all
(1.4X)(X≥0)(X<.7)+(1.5X+1.4)(X≥.7)(X<2.2)+(.474X+3.657)(X≥2.2)(X<7.7)+(.04X+7)(X≥7.7)(X<11)+(.16X+5.6)(X≥11)(X<12)+(­.096X+8.673)(X≥12)(X<26.26)+(­.197X+11.266)(X≥26.26)(X<27.02)+(­.6564X+23.68)(X≥27.02)(X<27.47)+(.0984X+2.9429)(X≥27.47)(X<28.98)+(5.8)(X≥28.98)(X<29.9)+(5.7)(X≥29.9)(X<31.55)+(5.5)(X≥31.55)(X<32)+(5.3)(X≥32)(X<32.75)+(­1.89X+66.6)(X≥32.75)(X<34.5)+(­.353X+13.567)(X≥34.5)(X<39)+(­.5)(X≥39)(X<39.9)+(­.4)(X≥39.9)(X<39.95)+(­.35)(X≥39.95)(X<40)+(0)(X=40)


7ème
, adopte pour sa part un trajet similaire à celui de
Clifward
, n'osant pas braver les conditions extrêmes du Canada.
Il fait légèrement mieux puisqu'il lui reste à l'arrivée
2478,8€
.
Code: Select all
2.83X(X<1.5)+(3.93+.53(X-1.5))(X≥1.5 et X<7.8)+7.2(X≥7.8 et X<11.2)+(X≥11.2 et X<12)(2.8+.4X)+(8.4-.1X)(X≥12 et X<16.2)+(X≥16.2 et X<21.2)(10.4-.628(X-10.4))+(X≥21.2 et X<21.9)(3.6-(X-21.2)5.5)+(X≥21.9 et X<30.6)(.1-(X-21.9).76)+(X≥30.6 et X<31)(­6.4+(X-30.6)3)-5.2(X≥31 et X<32.5)+(X≥32.5 et X<39.2)(­5.2+.6(X-32.5))+(X≥39.2)(­5.2+(X-36)1.3


6ème
, choisit quant à lui avec courage un itinéraire comparable à celui de
vince960
.
Il fait là encore un peu mieux, optimisant ses bornes et paramètres jusqu'à 2 et 4 décimales, arrivant à s'économiser
2495€
.
Code: Select all
(X<0.90)(3X)+(X>0.90 et X<2.27)(1.8832X+0.6651)+(X>2.27 et X<7.57)(0.4283X+3.9677)+(X>7.57 et X<11.51)(0.0373X+6.9271)+(X>11.51 et X<12.87)(7.46)+(X>12.87 et X<26.06)(­0.1106X+8.8847)+(X>26.06 et X<27.42)(6)+(X>27.42 et X<28.48)(5.74)+(X>28.48 et X<30.15)(5.79)+(X>30.15 et X<32.42)(5.74)+(X>32.42 et X<35.28)(­1.779X+63.4174)+(X>35.28 et X<39)(­0.4054X+15.3108)+(X>39 et X<39.99)(­0.5)


5ème
, choisit un itinéraire très voisin de
Grosged
et
Clifward
, montant cette fois-ci à
2503,2€
sans besoin d'une optimisation aussi poussée.
Code: Select all
0(X=0)+0.2(X>0 et X<0.3)+(X*6-0.3)(X>0.3 et X<0.6)+(X*1.9+1)(X>0.6 et X<2)+(X*0.45+3.76)(X>2 et X<8)+7.2(X>8 et X<11.5)+7.5(X>11.5 et X<12.57)+(­X*0.2+10)(X>12.57 et X<16.21)+(­X*0.69+18.2)(X>16.21 et X<21.45)+(­X*0.98+22.5)(X>21.45 et X<28)+(8.6876-0.48X)(X>28 et X<30.75)+(­67.42+2X)(X>30.75 et X<31.2)+­5(X>31.2 et X<31.81)+(­18.46+0.44X)(X>31.81 et X<39.39)+­0.51(X>39.39 et X<39.9)+0(X>39.9)+0(X>39.9)


En
4ème
position, avec , on affronte à nouveau le même raccourci du grand nord canadien.
L'optimisation est ici bien poussée, avec des bornes et paramètres jusuqu'à 3 et 9 décimales, nous faisant monter à
2506,9€
.
Code: Select all
(1.142857143*(X-0)+0)*(0<X et X≤0.175)+(5.636363636*(X-0.175)+0.2)*(0.175<X et X≤0.45)+(1.864661654*(X-0.45)+1.75)*(0.45<X et X≤1.78)+(0.5*(X-1.78)+4.23)*(1.78<X et X≤7.96)+(0.01447178*(X-7.96)+7.32)*(7.96<X et X≤11.415)+(0.4293785311*(X-11.415)+7.37)*(11.415<X et X≤12.3)+(­0.1205385165*(X-12.3)+7.75)*(12.3<X et X≤26.818181)+(­0.3849999615*(X-26.818181)+6)*(26.818181<X et X≤27.727272)+(0.0841688299*(X-27.727272)+5.65)*(27.727272<X et X≤29.45)+(0*(X-29.45)+5.795)*(29.45<X et X≤29.9)+(­0.2*(X-29.9)+5.795)*(29.9<X et X≤30.1)+(0*(X-30.1)+5.755)*(30.1<X et X≤31.4)+(­0.8772727273*(X-31.4)+5.755)*(31.4<X et X≤32.5)+(­1.605882353*(X-32.5)+4.79)*(32.5<X et X≤34.2)+(­0.7714285714*(X-34.2)+2.06)*(34.2<X et X≤35.25)+(­0.4133333333*(X-35.25)+1.25)*(35.25<X et X≤39)+(­0.1671671672*(X-39)+­0.3)*(39<X et X≤39.999)+(467*(X-39.999)+­0.467)*(39.999<X et X≤40)
Comment as-tu fait ?

StarTrekVoyager wrote:j'ai juste fait un petit programme en Basic qui se sert de la fonction toString( et qui transforme deux listes (en l'occurence L1 et L2) contenant les coordonnées en fonction piecewise. Au final, je suis passé par le Canada, et au fil d’optimisations pointilleuses et de l'aide de Hayleia ( :troll: ), j'ai fini par atteindre 2507, ce dont je suis fier car je suis le seul à avoir atteint ce score via le Passage du Nord-Ouest, et seulement 2 pixels rouges au milieu du trajet :P


3ème
, nous reprend le trajet passant au nord puis au Panama, et l'optimise à fond aux limites de la calculatrice avec des bornes et paramètres jusqu'à 12 décimales.
Ce travail énorme lui fait gagner
2520,8€
.
Code: Select all
(X≥0 et X<0.39040072)*(1.1154517614619X+0)+(X≥0.39040072 et X<0.6159999999999)*(6.2523551901438X+­2.0054507971278)+(X≥0.6159999999999 et X<1.5151817999999)*(2.0589510374876X+0.57768616090792)+(X≥1.5151817999999 et X<2.272727273)*(1.0357190795859X+2.1280686006988)+(X≥2.272727273 et X<8.18181833)*(0.48688104011428X+3.3754277814656)+(X≥8.18181833 et X<10.31757576008)*(0.00324894152321X+7.3324177506944)+(X≥10.31757576008 et X<12.459242419992)*(0.0651476536958X+6.6937730984024)+(X≥12.459242419992 et X<16.818100001)*(­0.24931238202496X+10.611706914846)+(X≥16.818100001 et X<21.21212121)*(­0.67863042907404X+17.832020762352)+(X≥21.21212121 et X<21.3436666726)*(­5.0339797617236X+110.2182187184)+(X≥21.3436666726 et X<21.66599999989)*(­5.0326587114136X+110.19002266093)+(X≥21.66599999989 et X<22.27)*(­1.510660628864X+33.8824122048)+(X≥22.27 et X<29.24242424)*(­0.82065043104722X+18.515885099421)+(X≥29.24242424 et X<31.21212121)*(­0.4781740360904X+8.5010450659072)+(X≥31.21212121 et X<31.730666669964)*(1.7532633637234X+­61.146849529606)+(X≥31.730666669964 et X<33.630000001)*(0.60265048290128X+­24.637135742072)+(X≥33.630000001 et X<39.613939381)*(0.6443365292748X+­26.039037481656)+(X≥39.613939381 et X<39.999)*(0.26151722801858X+­10.874056887815)+(X≥39.999 et X<40)*(413.6292843X+­16545.171372)
Comment t'y es-tu pris ?

Wistaro wrote:J'ai tout d'abord commencé par développer en langage TI-Basic un programme permettant de générer une trajectoire avec une série de points. Le fonctionnement est plutôt simple: on va tracer une fonction affine entre chaque points.
Pour cela, je vais d'abord trouver le coefficient directeur de cette droite en faisant la différence des valeurs en Y sur la différence des valeurs en X.
Pour trouver l'ordonnée à l'origine (B), il suffit de faire , pour un point, Y moins le coefficient directeur multiplié par la valeur de X.
Nous avons donc, entre 2 points A et B, une équation de la forme aX+B
Reste à faire cela entre les points B et C, C et D, etc...

Il faut ensuite appliquer telle fonction sur tel intervalle.
Donc, j'ai fais ceci:
(X >= POINT "gauche" and X< POINT suivant "droite") * (aX+B)
Ainsi, le premier point sera évalué avec la fonction aX+B.
Le second point, lui, sera évalué avec la fonction suivante, donc a'X+b'.

L'inverse pouvait provoquer des bugs, c'est pour cela que j'ai choisi ce sens.

Si l'on a 2 listes, l'une comportant les X (x1,x2,x3,x4...) et l'autres les Y (y1, y2, y3, y4, ...), la fonction totale se présente sous la forme:
(X >= x1 and X< x2) * (aX+B) + (X >= x2 and X< x3) * (a'X+B') + (X >= x3 and X< x4) * (a''X+B'')....

La génération de la fonction fonctionne. Il faut désormais définir la trajectoire.
J'ai tout d'abord commencé sur papier.
J'ai imprimé la carte en grand format et essayé de tracer à la règle (car la droite est la trajectoire la plus courte) la meilleure trajectoire.
Il ne restait ensuite qu'à stocker dans une liste les différentes coordonnées des points de ma trajectoire, puis d'appliquer mon programme de génération de fonction.
Au fur et à mesure, j'ai proposé divers trajectoires, m'améliorant de version en version. J'ai optimisé ma manière de travailler, en utilisant un double écran (sur un écran, la carte sur CEmu, avec la résolution quasi-maximale et sur l'autre le clavier).
J'ai finis par arriver à la limite de mon programme, vers les 2 500.
Pour continuer à grossir le score, j'ai conçu un autre algorithme pour affiner les points à 0.0001 près.
Le fonctionnement était trivial.Pour chaque point, il augmentait de 0.0001 sur Y, puis lançait la génération, puis lançait TOUR83, obtenait le score. Si le score était supérieur au score précédant, on recommence en augmentant de 0.001. Autrement, on diminuait.

Ce programme étant relativement lent, j'ai finis par affiner à la main tout les points , pour enfin arriver au score de 2 520,8.


Avec cette technique et cette trajectoire, je doute que l'on puisse aller plus loin.


2ème
, nous arrache
2574,0€
.
Il s'agit à nouveau de partir vers le nord et d'affronter le Canada, mais à la différence de ses adversaires, tel un
TASseur (Tool Assisted Speedrunneur)
de jeux vidéo,
Hayleia
arrive à trouver au pixel près une façon de traverser le Canada sans escale !
Ses paramètres sont aussi optimisés à fond jusqu'à 12 décimales.
Mais sa stratégie est également bien différente des autres candidats. Au lieu d'être définie comme un assemblage de segments, sa fonction est ici définie point par point, pour chacune des 265 colonnes de pixels de la zone graphique, ce qui bien évidemment donne une équation ci-dessous beaucoup plus longue.
Une autre astuce apparemment payante, est également l'utilisation de la variable système
ΔX
accessible via :f44: :f105:, qui contient la distance séparent deux pixels consécutifs sur une même ligne.
Code: Select all
0+(X=0ΔX)0+(X=1ΔX)0.167530487805+(X=2ΔX)0.637256097561+(X=3ΔX)1.122134146341+(X=4ΔX)1.622164634146+(X=5ΔX)2.137347560976+(X=6ΔX)2.39493902439+(X=7ΔX)2.652530487805+(X=8ΔX)2.91012195122+(X=9ΔX)3.167713414634+(X=10ΔX)3.425304878049+(X=11ΔX)3.682896341463+(X=12ΔX)3.955640243903+(X=13ΔX)4.107164634146+(X=14ΔX)4.25868902439+(X=15ΔX)4.334451219512+(X=16ΔX)4.410213414634+(X=17ΔX)4.485975609756+(X=18ΔX)4.561737804878+(X=19ΔX)4.6375+(X=20ΔX)4.713262195122+(X=21ΔX)4.789024390244+(X=22ΔX)4.864786585366+(X=23ΔX)4.940548780488+(X=24ΔX)5.01631097561+(X=25ΔX)5.092073170732+(X=26ΔX)5.167835365854+(X=27ΔX)5.243597560976+(X=28ΔX)5.3193597560972+(X=29ΔX)5.39512195122+(X=30ΔX)5.4708841463412+(X=31ΔX)5.5466463414632+(X=32ΔX)5.6224085365852+(X=33ΔX)5.6981707317072+(X=34ΔX)5.7739329268292+(X=35ΔX)5.8496951219512+(X=36ΔX)5.9254573170732+(X=37ΔX)6.0012195121952+(X=38ΔX)6.0769817073172+(X=39ΔX)6.1527439024392+(X=40ΔX)6.2285060975612+(X=41ΔX)6.3042682926832+(X=42ΔX)6.3800304878052+(X=43ΔX)6.4709451219512+(X=44ΔX)6.5618597560972+(X=45ΔX)6.652774390244+(X=46ΔX)6.74368902439+(X=47ΔX)6.8346036585372+(X=48ΔX)6.9103658536592+(X=49ΔX)6.98612804878+(X=50ΔX)7.0618902439032+(X=51ΔX)7.137652439024+(X=52ΔX)7.137652439024+(X=53ΔX)7.137652439024+(X=54ΔX)7.137652439024+(X=55ΔX)7.137652439024+(X=56ΔX)7.137652439024+(X=57ΔX)7.137652439024+(X=58ΔX)7.1528048780492+(X=59ΔX)7.1679573170732+(X=60ΔX)7.1831097560972+(X=61ΔX)7.198262195122+(X=62ΔX)7.213414634146+(X=63ΔX)7.2285670731712+(X=64ΔX)7.2437195121952+(X=65ΔX)7.25887195122+(X=66ΔX)7.274024390244+(X=67ΔX)7.289176829268+(X=68ΔX)7.3043292682932+(X=69ΔX)7.3194817073172+(X=70ΔX)7.3346341463412+(X=71ΔX)7.349786585366+(X=72ΔX)7.36493902439+(X=73ΔX)7.3800914634152+(X=74ΔX)7.3952439024392+(X=75ΔX)7.4103963414632+(X=76ΔX)7.425548780488+(X=77ΔX)7.440701219512+(X=78ΔX)7.440701219512+(X=79ΔX)7.440701219512+(X=80ΔX)7.440701219512+(X=81ΔX)7.440701219512+(X=82ΔX)7.440701219512+(X=83ΔX)7.440701219512+(X=84ΔX)7.440701219512+(X=85ΔX)7.440701219512+(X=86ΔX)7.440701219512+(X=87ΔX)7.440701219512+(X=88ΔX)7.440701219512+(X=89ΔX)7.440701219512+(X=90ΔX)7.440701219512+(X=91ΔX)7.440701219512+(X=92ΔX)7.440701219512+(X=93ΔX)7.440701219512+(X=94ΔX)7.440701219512+(X=95ΔX)7.440701219512+(X=96ΔX)7.440701219512+(X=97ΔX)7.440701219512+(X=98ΔX)7.440701219512+(X=99ΔX)7.440701219512+(X=100ΔX)7.440701219512+(X=101ΔX)7.440701219512+(X=102ΔX)7.440701219512+(X=103ΔX)7.440701219512+(X=104ΔX)7.440701219512+(X=105ΔX)7.440701219512+(X=106ΔX)7.440701219512+(X=107ΔX)7.440701219512+(X=108ΔX)7.440701219512+(X=109ΔX)7.440701219512+(X=110ΔX)7.440701219512+(X=111ΔX)7.440701219512+(X=112ΔX)7.440701219512+(X=113ΔX)7.440701219512+(X=114ΔX)7.440701219512+(X=115ΔX)7.440701219512+(X=116ΔX)7.440701219512+(X=117ΔX)7.440701219512+(X=118ΔX)7.440701219512+(X=119ΔX)7.440701219512+(X=120ΔX)7.440701219512+(X=121ΔX)7.440701219512+(X=122ΔX)7.440701219512+(X=123ΔX)7.440701219512+(X=124ΔX)7.440701219512+(X=125ΔX)7.440701219512+(X=126ΔX)7.440701219512+(X=127ΔX)7.440701219512+(X=128ΔX)7.440701219512+(X=129ΔX)7.440701219512+(X=130ΔX)7.440701219512+(X=131ΔX)7.440701219512+(X=132ΔX)7.440701219512+(X=133ΔX)7.440701219512+(X=134ΔX)7.440701219512+(X=135ΔX)7.440701219512+(X=136ΔX)7.440701219512+(X=137ΔX)7.440701219512+(X=138ΔX)7.440701219512+(X=139ΔX)7.440701219512+(X=140ΔX)7.440701219512+(X=141ΔX)7.440701219512+(X=142ΔX)7.440701219512+(X=143ΔX)7.440701219512+(X=144ΔX)7.440701219512+(X=145ΔX)7.440701219512+(X=146ΔX)7.440701219512+(X=147ΔX)7.440701219512+(X=148ΔX)7.440701219512+(X=149ΔX)7.440701219512+(X=150ΔX)7.440701219512+(X=151ΔX)7.440701219512+(X=152ΔX)7.440701219512+(X=153ΔX)7.440701219512+(X=154ΔX)7.440701219512+(X=155ΔX)7.440701219512+(X=156ΔX)7.440701219512+(X=157ΔX)7.440701219512+(X=158ΔX)7.440701219512+(X=159ΔX)7.440701219512+(X=160ΔX)7.440701219512+(X=161ΔX)7.440701219512+(X=162ΔX)7.440701219512+(X=163ΔX)7.440701219512+(X=164ΔX)7.440701219512+(X=165ΔX)7.440701219512+(X=166ΔX)7.440701219512+(X=167ΔX)7.440701219512+(X=168ΔX)7.440701219512+(X=169ΔX)7.440701219512+(X=170ΔX)7.440701219512+(X=171ΔX)7.440701219512+(X=172ΔX)7.440701219512+(X=173ΔX)7.440701219512+(X=174ΔX)7.440701219512+(X=175ΔX)7.440701219512+(X=176ΔX)7.440701219512+(X=177ΔX)7.440701219512+(X=178ΔX)7.440701219512+(X=179ΔX)7.440701219512+(X=180ΔX)7.440701219512+(X=181ΔX)7.274024390244+(X=182ΔX)7.198262195122+(X=183ΔX)7.1225+(X=184ΔX)7.0921951219512+(X=185ΔX)7.0618902439032+(X=186ΔX)7.031585365854+(X=187ΔX)7.0012804878052+(X=188ΔX)6.970975609756+(X=189ΔX)6.970975609756+(X=190ΔX)6.970975609756+(X=191ΔX)6.98612804878+(X=192ΔX)6.9103658536592+(X=193ΔX)6.8346036585372+(X=194ΔX)6.728536585366+(X=195ΔX)6.6224695121952+(X=196ΔX)6.5315548780492+(X=197ΔX)6.2133536585372+(X=198ΔX)5.9103048780492+(X=199ΔX)5.7587804878052+(X=200ΔX)5.74362804878+(X=201ΔX)5.728475609756+(X=202ΔX)5.713323170732+(X=203ΔX)5.6981707317072+(X=204ΔX)5.6830182926832+(X=205ΔX)5.6678658536592+(X=206ΔX)5.652713414634+(X=207ΔX)5.63756097561+(X=208ΔX)5.6224085365852+(X=209ΔX)5.4708841463412+(X=210ΔX)5.3193597560972+(X=211ΔX)5.167835365854+(X=212ΔX)5.01631097561+(X=213ΔX)4.864786585366+(X=214ΔX)4.713262195122+(X=215ΔX)4.561737804878+(X=216ΔX)4.3647560975612+(X=217ΔX)4.167774390244+(X=218ΔX)3.970792682927+(X=219ΔX)3.77381097561+(X=220ΔX)3.576829268293+(X=221ΔX)3.379847560976+(X=222ΔX)3.182865853659+(X=223ΔX)2.985884146341+(X=224ΔX)2.788902439024+(X=225ΔX)2.591920731707+(X=226ΔX)2.39493902439+(X=227ΔX)2.197957317073+(X=228ΔX)2.000975609756+(X=229ΔX)1.819146341463+(X=230ΔX)1.66762195122+(X=231ΔX)1.561554878049+(X=232ΔX)1.455487804878+(X=233ΔX)1.364573170732+(X=234ΔX)1.334268292683+(X=235ΔX)1.303963414634+(X=236ΔX)1.273658536585+(X=237ΔX)1.243353658537+(X=238ΔX)1.213048780488+(X=239ΔX)1.182743902439+(X=240ΔX)1.15243902439+(X=241ΔX)1.122134146341+(X=242ΔX)1.091829268293+(X=243ΔX)1.061524390244+(X=244ΔX)1.031219512195+(X=245ΔX)1.000914634146+(X=246ΔX)0.970609756097+(X=247ΔX)0.940304878049+(X=248ΔX)0.91+(X=249ΔX)0.879695121951+(X=250ΔX)0.849390243903+(X=251ΔX)0.819085365854+(X=252ΔX)0.788780487805+(X=253ΔX)0.758475609756+(X=254ΔX)0.728170731707+(X=255ΔX)0.713018292683+(X=256ΔX)0.697865853659+(X=257ΔX)0.682713414634+(X=258ΔX)0.66756097561+(X=259ΔX)0.652408536585+(X=260ΔX)0.637256097561+(X=261ΔX)0.622103658537+(X=262ΔX)0.394817073171+(X=263ΔX)0.167530487805+(X=264ΔX)0
Peux-tu expliquer les astuces qui t'ont permis d'atteindre un tel score ?

Au départ, j'essayais simplement de traduire une liste de points cherchés à la main en une fonction ligne brisée afin d'obtenir une courbe potable, en passant notamment par le Canada (le passage à 2 pixels), directement sur calculatrice.

Ensuite, ayant appris que le Panama avait un passage sans rouge, j'ai écrit quelques programmes de bruteforce en Basic afin d'essayer rapidement des points et trouver comment y passer, et Ruadh a été assez sympathique pour m'indiquer qu'il fallait une certaine pente. Ceci sur CEmu afin de tester plus vite.
Une fois ce bruteforce effectué et une courbe à 2528 trouvée, j'ai pensé que quitte à écrire des bruteforces, autant en écrire un qui me donne toute la trajectoire. J'ai donc converti l'image du planisphère avec sourcecoder et écrit un programme C pour PC qui teste "tous" les Y possibles (évidemment sur un échantillon discret paramétrable avec un pas) pour tous les I possibles et qui renvoie le plus court chemin. Ruadh a aussi été d'une grande aide pour les corrections de ce programme, sur le calcul du coût (à traduire depuis le Basic) ou la "traduction en fonction" finale (j'ai longtemps pensé que mon bruteforce ne fonctionnait pas alors que c'était la traduction en fonction qui posait problème). Il y avait notamment un bug final qui n'a pas été corrigé avant l'envoi de la fonction qui faisait que le bruteforce trouvait un bon chemin mais n'arrivait pas à sortir une liste de points (problème de précision des float...). La fonction que j'ai envoyée provient donc d'un bruteforce de Ruadh, mon programme ayant un score inférieur de 0.5€ (le problème a été résolu ensuite, et de toute façon à 0.5€ près j'ai la même place au classement...).

Si ça vous intéresse aussi, le bruteforce ne tourne qu'en 5 minutes, pas plus. Il serait plus lent avec une précision supérieure mais cela semblait inutile (et il pourrait être amélioré mais j'ai la flemme).


1er
, nous décroche le gros lot avec
2574,4€
.
La trajectoire est similaire à celle de
Hayleia
, mais avec à nouveau un assemblage de segments et donc une équation beaucoup plus courte.
La méthode de recherche utilisée est par contre visiblement beaucoup moins empirique que celle des concurrents, puisqu'il n'y a aucune approximation dans l'équation, juste des valeurs exactes.
En plus de la variable système
ΔX
, il utilise également la variable système
ΔY
également accessible via :f44: :f105: , et donnant cette fois-ci la distance séparant deux pixels consécutifs dans une même colonne.
Code: Select all
ΔY(157/142(X=ΔX)+(13/4/ΔXX-609/284)(X>ΔX et X≤5ΔX)+(12/7/ΔXX+5501/994)(X>5ΔX et X≤12ΔX)+(X/ΔX+2003/142)(X>12ΔX et X≤14ΔX)+(17/33/ΔXX+97907/4686)(X>14ΔX et X≤47ΔX)+(X/ΔX/2+1534/71)(X>47ΔX et X≤51ΔX)+(X/ΔX/13+79715/1846)(X>51ΔX et X≤77ΔX)+6973/142(X>77ΔX et X≤180ΔX)+(9841/71-X/2/ΔX)(X>180ΔX et X≤183ΔX)+(59431/710-X/5/ΔX)(X>183ΔX et X≤188ΔX)+6547/142(X>188ΔX et X≤191ΔX)+(10054/71-.5/ΔXX)(X>191ΔX et X≤193ΔX)+(74027/426-2/3/ΔXX)(X>193ΔX et X≤196ΔX)+(61785/142-2/ΔXX)(X>196ΔX et X≤198ΔX)+5411/142(X=199ΔX)+(76957/1278-X/ΔX/9)(X>199ΔX et X≤208ΔX)+(34805/142-X/ΔX)(X>208ΔX et X≤215ΔX)+(304695/994-9/7/ΔXX)(X>215ΔX et X≤229ΔX)+1577/142(X=230ΔX)+(70051/426-2/3/ΔXX)(X>230ΔX et X≤233ΔX)+(100817/1988-5/28X/ΔX)(X>233ΔX et X≤261ΔX)+(28088/71-3/2/ΔXX)(X>261ΔX et X≤263ΔX))-­11(X≥181ΔX et X≤183ΔX ou X=188ΔX ou X=198ΔX ou X=199ΔX ou X≥229ΔX et X≤233ΔX
Quel est ton secret ?

J'ai travaillé uniquement en utilisant les pixels, en utilisant ΔX et ΔY. D'abord il a fallu trouver la trajectoire optimale, ce qui m'a pris un certain temps. Pour cela, je me suis aidé du programme du concours grâce auquel j'ai remarqué que seuls les pixel de départ et d'arrivé (et ceux directement en dessous) étaient importants (c'était en v3, ça a été modifié par la suite), on pouvait donc traverser la terre s'il y avait deux cases vides (eau) adjacentes ou diagonalement voisines. Cela autorisait à passer à deux endroits, au Canada et au Panama. Le Canada semble le passage qui réduit au maximum la distance et c'est donc celui que j'ai choisit d'emprunter.

J'ai ensuite cherché les coordonnées en pixels (plus simple car ce ne sont que des entiers naturels) pour lesquelles je doit changer la pente de la fonction. Je me suis ensuite servi du fait que le programme arrondit les pixels à l'entier le plus proche pour optimiser la trajectoire. J'ai ainsi pu ajouter ou enlever 0,5 à chaque ordonnée Y pour avoir la pente de chaque partie de la fonction la plus petite en valeur absolue. J'ai ensuite cherché les fonctions affines qui reliaient chacun de ces pixels, de la façon suivante (f(x)=a.(ΔY/ΔX).X+b une fonction affine utilisée pour X1⩽X⩽X2 , Y1=f(X1), Y2=f(X2) , X1,Y1,X2,Y2 sont en pixels) : a=-(Y2-Y1)/(X2-X1) et b=y1-a.(ΔY/ΔX).x1 . J'ajoute ensuite les valeurs (plus en pixels cette fois) minimale et maximale de X (X1.ΔX et X2.ΔX respectivement) ce qui donne : (a.(ΔY/ΔX).X+b)(X>X1.ΔX et X⩽X.ΔX).

Une fois cela fait, j'ai tout rassemblé en une unique fonction affine par morceaux simplement en ajoutant un plus (+) entre chaque fonction.




Nous tenons à remercier et féliciter tous les participants pour leurs recherches et productions très intéressante et pertinentes. :bj:
En effet le climat a évolué depuis l'époque de
Jules Verne
, et avec la fonte des glaces il est vrai que le grand nord canadien devient de plus en plus navigable et est donc un enjeu économique important.

Comme prévu, nous allons donc maintenant contacter dans l'ordre chaque gagnant, afin qu'il puisse choisir son lot.



Et à bientôt pour un futur concours ! ;)

-
Search
-
Featured topics
Omega, le fork étendant les capacités de ta NumWorks, même en mode examen !
Comparaisons des meilleurs prix pour acheter sa calculatrice !
12
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...

Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety 
-
Stats.
364 utilisateurs:
>354 invités
>3 membres
>7 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)