Posté le 02/01/2020 12:18
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 225 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
Citer : Posté le 08/01/2020 18:10 | #
Ok ! Merci ! Je connaissais pas du tout la prog récursive, mais depuis ce topic, j'ai fait une lib d'arithmétique avec des fonctions diverses, dont plusieurs sur une seule ligne : is_prime, fact… Ça m'a fait gagner presque 400 octets par rapport à mon code de base !!
Citer : Posté le 08/01/2020 18:52 | #
Bien joué ! Quoique note à part, si ton test de primalité est sur une seule ligne c'est probablement pas hyper efficace. xD
Citer : Posté le 08/01/2020 19:32 | #
Je te garantit que mon test de primarité sur une seule ligne est parfaitement au point et qu'en plus on peut choisir d'avoir une phrase ou un booléen en sortie…
Citer : Posté le 08/01/2020 21:13 | #
Oh je n'ai pas dit qu'il ne marchait pas ! :o
Simplement que les algorithmes rapides/puissants pour tester la primalité ne tiennent pas en une ligne. Contrairement par exemple à la factorielle ou de toute façon ne peut pas vraiment faire mieux que la méthode facile. Donc dire que la primalité tient en une ligne n'est pas une "aussi bonne nouvelle" que pour la factorielle.
Je chipote hein, c'était plus une blague qu'autre chose... peut-être un peu tordue... ^^"
Oskar130357 Invité
Citer : Posté le 09/01/2020 11:45 | #
Salut à vous, on peut encore gagner 3 symboles en remplaçant le « or » par un plus (et en inversant les deux termes)
Citer : Posté le 09/01/2020 11:52 | #
Bien tenté, mais... hélas non. Le or ici ne sert pas à calculer les deux nombres mais à arrêter d'appeler f() quand e devient égal à r. Dans la version avec +, l'opérande de gauche f()+e est évaluée à chaque fois et du coup le jeu continue de demander des nombres à l'utilisateur même une fois que la valeur secrète a été trouvée.
Citer : Posté le 10/05/2021 23:00 | #
Trop bien, on m'a linké ce topic ! J'avais envie de faire un simili-one liner (j'avoue du coup j'ai fait en deux), ça donne ça :
while (lambda x:(lambda:print("non")or 1, lambda:(0,print("empxolaiucnsts"[(int(x)!=n)+(int(x)<n)::3])or 1)[int(x)!=n])[x.isnumeric()]())(input()):pass
Bon je l'ai pas fait en vrai code golf ni avec l'élégance de la récursivité de Lephé, mais ça reste sympathique j'imagine. Et puis je gère les entrées invalides avec .isnumeric() (malheureusement les try/catch sur une seule ligne...)
Merci @Kikoodx de m'avoir linké ça
Mon blog ⋅ Mes autres projets
Citer : Posté le 10/05/2021 23:02 | #
Joli le trickz avec les textes entremêlés. x3
Citer : Posté le 10/05/2021 23:03 | #
Courtesy of @Julese50 et son "ftarlusee" enseigné sur les code golf de CodinGame
Mon blog ⋅ Mes autres projets
Citer : Posté le 10/05/2021 23:12 | # | Fichier joint
Je dois avouer que j'ai eu un coup de chance monstrueux
>>> while (lambda x:(lambda:print("non")or 1, lambda:(0,print("empxolaiucnsts"[(int(x)!=n)+(int(x)<n)::3])or 1)[int(x)!=n])[x.isnumeric()]())(input()):pass
...
50
plus
75
moins
60
exact
>>>
Un cas d'usage minimal avec tous les cas du premier coup. Je vous jure j'ai pas triché.
La preuve en images (oui, j'ai fail la première fois, il fallait deux retours pour valider la fonction)