Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Actualités


Index du Forum » Actualités » [Concours] À La Limite Du Raisonnable #4
Lephenixnoir Hors ligne Administrateur Points: 24145 Défis: 170 Message

[Concours] À La Limite Du Raisonnable #4

Posté le 15/10/2021 15:13

Salut à tous programmeurs fous, et bienvenue dans la 4ème édition du concours À La Limite Du Raisonnable !


Les règles sont simples : vous devez programmer un jeu de votre choix avant Dimanche soir (17 Octobre) à 23h59, en respectant les règles suivantes. Les programmes seront notés semi-informellement sur 10 avec les critères du CPC (voir les règles du CPC #27).

Les caractères 0...9, +, -, × et ÷ sont interdits.

Bien sûr, vous aurez besoin de nombres et d'arithmétique... mais vous devrez les faire autrement.

Vous ne pouvez utiliser qu'une liste au plus, et aucune matrice.

Toutes les variables exotiques, Str, fn, et autres méthodes de stockages sont autorisées.

Goto/Lbl sont interdits, sauf si vous n'utilisez que ça.

Vous pouvez prendre la pilule bleue et écrire un programme qui ne contient aucun Goto/Lbl. Ou vous pouvez prendre la pilule rouge et n'utiliser que ça, auquel cas seuls Goto, Lbl, Isz et Prog sont autorisés pour les tests et sauts (Return, Dsz, ⇒ sont interdits en particulier, en plus évidemment de tous les If, For, While, Do, etc). En cas de doute demandez-moi si une instruction est autorisée. 1 point bonus si vous prenez la deuxième option.

Soit écran texte uniquement (avec au moins un ASCII art) soit écran graphique uniquement (avec au moins une Picture).

La qualité du pixel art ou de la Picture n'importe pas pour le respect de la règle, mais il y a des points de graphismes... x3

Le meilleur programme remportera une batterie portable CASIO grâce au soutien de CASIO Éducation !




À vos calculatrices !!


Dark storm Hors ligne Labélisateur Points: 11631 Défis: 176 Message

Citer : Posté le 15/10/2021 22:52 | #


J'ai fini de faire un + ou -, catégorie pillule rouge

J'essaie de poster ça demain.
Suivant le temps que je me libère, je tenterais soit un truc pour le concours de rentrée, soit un programme ALLDR
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir Hors ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 16/10/2021 07:42 | #


Kikoodx a écrit :
Incroyable, j'ai déjà mal au crane ! Je vais prendre la pillule rouge et ressasser tous mes choix de vie. Bon courage les gens

Je vais pas mentir, je l'ai fait expressément pour toi. Je pense que c'est vraiment galère sans génération automatique (je vais peut-être essayer ça lol), donc j'espérais calmer ta fervente défense du goto comme dans une certaine édition d'un grand titre pâtissier.

Hackcell a écrit :
Sinon j'ai pas vraiment compris d'où sort le 10^(20) de Lephé ?

Ton programme de boucle s'appelle récursivement 10 fois, et tu as environ 20 niveaux d'appels récursifs autorisés (24 je crois mais je prends un peu de marge). Avec ça tu peux créer jusqu'à 10²⁰ appels au programme principal en utilisant un Prog différent quand tu es à profondeur 20.

Sauf shenanigans qui m'échappent, il est très facile de prouver que tous les programmes terminent puisque Isz et Prog ne permettent pas de revenir en arrière dans le code ; si tu inlines tous les appels de sous-programmes ton programme devient linéaire et termine donc toujours. Pas Turing-complet du coup, mais "suffisant".

Dark storm a écrit :
J'ai fini de faire un + ou -, catégorie pillule rouge

Bien joué ! Un peu plus long que celui-là je parie ?
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Dark storm Hors ligne Labélisateur Points: 11631 Défis: 176 Message

Citer : Posté le 16/10/2021 08:39 | #


Ton programme de boucle s'appelle récursivement 10 fois, et tu as environ 20 niveaux d'appels récursifs autorisés

Je sais pas trop ce que tu veux dire par là, car actuellement la variante du plus ou moins pillule c'est violent est composé de trois programmes récursifs entre eux.

Mais quoi qu'il arrive, tu peux pas descendre de plus de 10 niveaux, que tu change de progamme ou non.

Une solution serait de dupliquer le code dans les programmes pour simuler plus de niveaux, mais à part ça je vois pas.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir Hors ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 16/10/2021 08:51 | #


Tu as raison, tu as droit à 11 niveaux y compris le niveau initial. Donc 10¹⁰ tours maximum, ce qui suffit aussi

Ajouté le 16/10/2021 à 10:55 :
Bon j'ai pas pu m'empêcher d'essayer donc je vais voir pour coder un petit jeu tout bête avec la pilule violette (et un autre caractère utile interdit, pour le trip).
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Dark storm Hors ligne Labélisateur Points: 11631 Défis: 176 Message

Citer : Posté le 16/10/2021 20:06 | # | Fichier joint


J'osais pas en faire un vrai programme, parce que je me respecte, contrairement à certains producteurs de jeux un peu cons à cliquer

Bref, ci-joint ALLRD. Cette première version est pilule rouge, classique.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Dark storm Hors ligne Labélisateur Points: 11631 Défis: 176 Message

Citer : Posté le 16/10/2021 20:06 | # | Fichier joint


La seconde version est pilule violette façon LSD :
  • les points généraux sont respectés (chiffres, ascii art, …)
  • j'ai pris la pilule bleue (aucun Lbl/Goto)
  • j'ai pris la pilule rouge (aucune instruction de branche If, While, Return, Dsz, ⇒)
  • ça manquait de piquant donc ce programme n'utilise que les variables C, A, S, I et O
  • pour la beauté du geste, il fait moins de 1ko


Puisqu'à la question « Les caractères interdits le sont seulement dans le code ou bien il est également interdit de les afficher ? » Lephe a répondu qu'il était autorisé de les afficher, j'en ai déduit qu'ils étaient seulement interdits dans le code. C'est pourquoi le second programme s'appelle ALLDR2, le 2 n'étant pas dans le code

Edit : ah oui, ce sont des plus ou moins
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir Hors ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 17/10/2021 12:11 | #


Merci pour les soumissions ! J'ai oublié de le préciser mais je testerai tout très rapidement (probablement d'ici demain soir) donc les résultats seront là tout de suite

Ajouté le 17/10/2021 à 16:07 :
Du coup j'ai réalisé ce que mentionnais précédemment en termes de comment faire un jeu avec la pilule violette : Metro Siberia ALLDR.

C'est pas si gros que ça en termes de code en fait, à peine 500 octets (et la Picture).

La question c'est comment programmer avec seulement Isz et Prog comme structures de contrôle (plus Exit pour quitter). Essentiellement je fais une initialisation dans METRO.SI et toute la magie se passe dans METROS.A. Ce programme est appelé initialement au "niveau 8" et il s'appelle récursivement 4 fois au niveau inférieur jusqu'à toucher le niveau 1, auquel cas il appelle METROS.B. Ici ça nous donne entre 50'000 et 1 million d'appels à METROS.B. Bien sûr il faut une liste pour servir de pile sinon la récursion ne marche pas ; j'utilise la liste 1.

METROS.B implémente une "étape" de jeu ; ici c'est assez facile parce que le jeu n'a qu'un écran, mais s'il y en avait plusieurs il devrait gérer les transitions. La contrainte c'est qu'il n'y a pas de boucles, donc si on veut une boucle il faut faire un seul tour dans METROS.B et ensuite attendre le prochain appel pour faire le tour suivant.
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Massena Hors ligne Ancien rédacteur Points: 2219 Défis: 11 Message

Citer : Posté le 17/10/2021 19:09 | # | Fichier joint


Bonsoir !

J'abandonne, parce que j'ai, euh, légèrement raté le concours x3.
L'origine du problème provient du fait que j'ai commencé à programmer le jeu directement sans me soucier des contraintes sur les chiffres et les opérations, en me disant que je pouvais convertir une addition en Sum {a, b}, rajouter un (-) pour soustraire, utiliser la fraction pour diviser, diviser avec un inverse pour multiplier, etc. Au niveau des chiffres, je comptais avoir une Liste prédéfinie contenant les variables principales parce que y'a rien d'illégal à ça

C'était une erreur. J'aurais dû coder directement le moteur avec les contraintes, parce que je me suis retrouvé à 18h30 avec la nécessité de remplacer une cinquantaine de valeurs et de changer toutes les opérations
Si j'avais eu plus de temps, je l'aurais fait, mais étant donné que je ma deadline personnelle se situait vers 19h30, et que j'ai mis 10 minutes pour convertir une dizaine de lignes de code, je me retrouve dans l'obligation d'abandonner.

À part ça, j'ai pris beaucoup de plaisir à développer un petit jeu, certes pas original, mais qui m'a permis de réviser la trigonométrie
C'est un petit jeu de tanks/worms ≤comme on en trouve beaucoup sur le site. On se déplace avec les flèches, la première pression sur [SHIFT] permet de choisir son angle de tir, puis en maintenant à nouveau [SHIFT] on contrôle la puissance de feu. On peut jouer seul face à robot totalement stupide ou bien à deux

J'ai mis les sources en pièce jointe, bonne chance aux autres participants

En vrai j'avais envie de faire un worms depuis quelques semaines–
Alexot Hors ligne Membre Points: 539 Défis: 18 Message

Citer : Posté le 18/10/2021 00:29 | #


Je participe avec Paper Fall

Je ne suis pas entièrement satisfait du jeu vu que j'ai manqué de temps (j'ai mis du temps à me fixer sur une idée et je n'ai commencé à coder que le dimanche après midi). La physique de la feuille et le level design pourraient être améliorés. Et comme j'ai opéré comme Masséna (coder le jeu normalement puis remplacer tous les chiffres et opérations à la fin), le jeu a beaucoup perdu en fluidité avec les techniques que j'ai utilisé pour générer des nombres et faire des additions (a+b = ln((e^a)(e^b))), que j'aurais pu mieux optimiser (j'ai aussi découvert à la fin que BG-Pict ne pouvait pas prendre de variable en argument, mais que RclPict si).

Je suis quand même content d'avoir pu rendre quelque chose
Cliquez pour découvrir
Cliquez pour recouvrir
2b 5b 2d 2d 2d 2d 2d 3e 2b 2b 2b 3c 5d 3e 2b 2e 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2e 2e 2d 2d 2d 2d 2e 2b 2b 2b 2e 2b 5b 2d 2d 3e 2b 3c 5d 3e 2e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2e 2e 2b 5b 2d 2d 3e 2b 2b 2b 2b 2b 3c 5d 3e 2b 2e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2e 2b 2b 2b 2b 2b 2b 2e 2d 2e 2b 2e 2d 5b 2b 2b 3e 2d 2d 2d 3c 5d 3e 2e 2b 2b 2b 5b 2d 3e 2b 2b 3c 5d 3e 2e 2b 2b 2b 2e 5b 2d 3e 2b 2b 2b 3c 5d 3e 2e 5b 2d 2d 2d 3e 2b 3c 5d 3e 2d 2e 2d 5b 2d 3e 2b 2b 2b 2b 2b 2b 3c 5d 3e 2d 2e 2d 5b 2d 2d 3e 2b 2b 2b 3c 5d 3e 2d 2e 2b 5b 2b 2b 3e 2d 2d 2d 3c 5d 3e 2e 5b 2d 2d 2d 3e 2b 2b 3c 5d 3e 2d 2e 2d 5b 2d 2d 3e 2b 3c 5d 3e 2d 2d 2e 2b 5b 2d 2d 3e 2b 2b 2b 3c 5d 3e 2e 2b 2b 2b 5b 2d 3e 2b 2b 2b 2b 3c 5d 3e 2d 2e 3e 2b 5b 2d 2d 2d 3e 2b 2b 3c 5d 3e 2b 2b 2e 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2e 5b 2d 3e 2b 2b 2b 2b 2b 2b 3c 5d 3e 2d 2e
Lephenixnoir Hors ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 18/10/2021 06:31 | #


Merci ! Avec tout ça, les participations sont closes. Désolé que tu n'aies pas réussi à aller au bout Masséna, et merci Alexot. Je testerai ça très vite, avec un peu de chance ce soir, les résultats seront annoncés dans la foulée

Puisqu'on est encore là, je propose de faire un tour des tricks utilisés pour esquiver les caractères limités !

Personnellement pour les chiffres, j'ai trouvé que le plus simple était de la trigo :

  • sin π donne 0, cos (sin π) donne 1, cos π donne -1.
  • J'avais aussi préparé π⁻¹π pour obtenir 1 (c'était mon idée initiale).
  • Pour les constantes, des combinaisons de 0/1/2 avec des 10^ (SHIFT+log ; pas ᴇ, qui ne prend pas les variables).

Et pour les opérations :

  • Pour +, Sum {...}.
  • Pour -, on pouvait soit prendre le symbole (-) soit multiplier par -1.
  • Pour ×, produit implicite AB ou (A)(B).
  • Pour ÷, produit implicite avec ⁻¹ (SHIFT, parenthèse fermante).

Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Dark storm Hors ligne Labélisateur Points: 11631 Défis: 176 Message

Citer : Posté le 18/10/2021 09:22 | #


Niveau trick pour la pilule rouge, un moyen simple de faire des sauts conditionnels est d'utiliser la valeur -1 fois le test qu'on cherche.

cos π→A
StrLen("This is hard")→B
?→C
A(C≠B→R
Isz R
Goto A
"B est égal à C"
Goto E
Lbl A
"B n'est pas égal à C"
Lbl E

Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir Hors ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 18/10/2021 21:58 | #


Oh le génie KikooDX il utilise . pour faire 0 parce qu'en Basic à la fois la partie entière et la partie décimale sont optionnelles xD
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Lephenixnoir Hors ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 18/10/2021 22:06 | # | Fichier joint


Une vidéo pour l'article de résultats. C'est propre y'a pas à dire !


Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Lephenixnoir Hors ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 18/10/2021 22:13 | # | Fichier joint


Ça c'est une vidéo de ma participation symbolique.


Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Lephenixnoir Hors ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 18/10/2021 22:24 | # | Fichier joint


Voici KABOOM !


Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Lephenixnoir Hors ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 19/10/2021 06:38 | # | Fichier joint


Et voilà le dernier, comme ça vous avez toute la collection en avance


Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 82 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd