CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Blabla] le /pub des barbus libres

Knakis
Knakis
Niveau 10
16 août 2014 à 13:58:56

Le bruteforce est la seule manière d'être sûr d'avoir un nombre premier. Les autres tests sont plus rapides mais donnent parfois des faux-positifs.

Caletlog :> En 2001, date de sortie de l'exercice, ça devait prendre «un peu» plus de temps j'crois. :noel:

Caletlog
Caletlog
Niveau 10
16 août 2014 à 14:05:28

Knakis > mais on serait pas passé de plusieurs heures à 0.08 secondes, quand même, si ?

Knakis
Knakis
Niveau 10
16 août 2014 à 14:18:28

Je sais pas, je l'avais fait en mode idiot, sans toutes les propriétés mathématiques pour réduire le temps que ça prends.

Faudrait que quelqu'un avec une épave tente de le faire, pour voir.

JameaGourmand
JameaGourmand
Niveau 7
16 août 2014 à 14:25:26

Toutes les propriétés mathématiques, c'est qu'une majoration hein :hap:

Bon sinon ça m'énerve ça fonctionne pas, ça fonctionne pour de petits nombre mais là il me renvoie que le plus grand diviseur premier est 137 :pf:

Sinon c'est quoi votre record à Projet Euler ? Je suis dans la trentaine en Ruby :hap:

JameaGourmand
JameaGourmand
Niveau 7
16 août 2014 à 14:30:07

Je vois pas pourquoi ça fonctionne pas pour des nombres trop grands :snif:

isPrime :: (Integral a) => a -> Bool
isPrime 0 = error "0 not allowed"
isPrime x
| length [ n | n<-[2..max],x `mod` n == 0] == 0 = True
| otherwise = False
where max = truncate $ sqrt $ fromIntegral x

Caletlog
Caletlog
Niveau 10
16 août 2014 à 14:34:26

48 en Ruby pour moi.
Mais faut dire que le n°48 est franchement très simple, il aurait plus sa place dans les 20 premiers.

JameaGourmand
JameaGourmand
Niveau 7
16 août 2014 à 14:36:54

Ouais après j'ai des périodes, des fois je me fous une semaine dessus et j'en résouds 15 puis j'en fais plus pendant 4 mois :hap:

Mais là les faire en Haskell c'est un challenge intéressant, les faire en Ruby a très peu d'intérêt pour moi. Même si je les réussis j'en pas bien fier :pf:

JameaGourmand
JameaGourmand
Niveau 7
16 août 2014 à 14:37:21

suis*

Caletlog
Caletlog
Niveau 10
16 août 2014 à 14:44:00

Oui, en Haskell c'est très intéressant à faire.
Et puis y'a des cas où le Haskell permet vraiment de résoudre ça en une ligne, genre quand ça touche aux triangles ou aux triplets X ou Y.

Après je les fais souvent d'abord en Ruby pour penser uniquement à l'algo et pas la syntaxe, pour les refaire ensuite en C++. Généralement c'est la même chose, de toute façon. Les structures sont juste 'dépliées'.

" Ouais après j'ai des périodes, des fois je me fous une semaine dessus et j'en résouds 15 puis j'en fais plus pendant 4 mois"

:d) Pareil. Parfois je bloque sur un problème pendant 3 semaines avant d'abandonner, et là 3 mois plus tard, illumination soudaine et on se demande comment on a pas pu voir ça :noel:

Et à côté je suis incapable de résoudre le problème 8 étonnement, ça fait un trou dans ma liste :o))

JameaGourmand
JameaGourmand
Niveau 7
16 août 2014 à 14:55:14

Ouais c'est clair, mais là par exemple le problème 3 je me fais enculer sevèrement :hap:
Clairement Ruby avec ses fonctions built in le projet euler tu lui fais mal quoi.

Mais je pense avoir compris mon problème, depuis le début j'utilise ghci. J'ai pas encore écrit de vrai script, du coup comme Haskell n'est pas un vrai langage interprêté ça doit jouer énormément sur la lenteur. Du coup je fais le compiler dans un script à part.

Mais j'ai jamais fait ça, tu peux m'expliquer le soucis dans mon main :question:

isPrime :: (Integral a) => a -> Bool
isPrime 0 = error "0 not allowed"
isPrime x
| length [ n | n<-[2..max],x `mod` n == 0] == 0 = True
| otherwise = False
where max = truncate $ sqrt $ fromIntegral x

divisorsOf :: (Integral a) => a -> [a]
divisorsOf 0 = error "Division by zero"
divisorsOf x = [ n | n<-[1..x], x `mod` n == 0]

main = putStrLn $ last $ filter (isPrime) $ divisorsOf 600851475143

Erreur:

prime_brute.hs:13:34:
No instance for (Integral String) arising from a use of ‘isPrime’
In the first argument of ‘filter’, namely ‘(isPrime)’
In the expression: filter (isPrime)
In the second argument of ‘($)’, namely
‘filter (isPrime) $ divisorsOf 600851475143’

prime_brute.hs:13:56:
No instance for (Num String)
arising from the literal ‘600851475143’
In the first argument of ‘divisorsOf’, namely ‘600851475143’
In the second argument of ‘($)’, namely ‘divisorsOf 600851475143’
In the second argument of ‘($)’, namely
‘filter (isPrime) $ divisorsOf 600851475143’

Sinon le problème 8 est pas trop dur en Ruby, mais j'ai mis un peu de temps à l'écrire. Peut être 1h :oui:

JameaGourmand
JameaGourmand
Niveau 7
16 août 2014 à 15:06:23

En fait il fallait appeler show avant de le passer à PutStrLn :ok:

Bon sinon je pense que que le bruteforce soit une option avec un langage paresseux, j'ai le même code qu'en Ruby là et j'ai toujours rien après une minute :ouch:

(Sinon t'as réussi le 18 mais pas le 8 wtf?)

Caletlog
Caletlog
Niveau 10
16 août 2014 à 15:15:55

"Clairement Ruby avec ses fonctions built in le projet euler tu lui fais mal quoi."

:d) Rooh, mais arrête avec ça :o))
Les built-ins pour des tours mathématiques comme ceux proposés dans Euler, y'en a dans _tous_ les langages. Sauf que pour les problèmes, suffit de ne pas les utiliser. J'ai pas utilisé la bibliothèque de primes de Ruby qui génère des primes de façon optimisée, par exemple. Et c'est normal, c'est même inscrit dans les règles.
Tout ce que j'ai fait en Ruby se développe exactement de la même façon dans n'importe quel autre langage impératif, simplement en plus de lignes en général. Tout ce que la syntaxe du Ruby apporte dans ces cas-là, c'est 3 lignes économisées en faisant un each plutôt qu'un for. Tu penses vraiment que c'est ça qui gâche le jeu ou qui apporte un quelconque avantage ? :pf:
Le langage ne change pas l'algorithme ni même son implémentation tant qu'on reste dans le même paradigme. Et dans le projet euler, c'est l'algo qui compte, on se fout de savoir si on l'a fait avec un forEach ou un for, puisque c'est juste du sucre syntaxique. Quelqu'un qui sait utiliser un forEach sait utiliser un for, quand même.
C'est comme si tu grognais parce que quelqu'un utilise les += ou ++/-- parce qu'on a toujours moyen de le faire plus classiquement.

JameaGourmand
JameaGourmand
Niveau 7
16 août 2014 à 15:22:46

Pas dans ce cas là, je te parle de la majorité des problèmes requierant un algorithme bien foutu qui se fait en quelques fonctions de Ruby déjà built-in :oui:

JameaGourmand
JameaGourmand
Niveau 7
16 août 2014 à 15:23:52

Après je dis pas que c'est le cas de tout les problèmes mais bon utiliser des fonctions built-in ça aide énormément et ça m'étonnerait que tu n'en aies jamais utilisés (autres que les simples raccourcis)

Knakis
Knakis
Niveau 10
16 août 2014 à 15:35:23

C'est pas de la sorcellerie, ces fonctions ont bien du être écrite par un être humain, donc je vois pas pourquoi c'est si étonnant. :(

the_alone
the_alone
Niveau 10
16 août 2014 à 15:35:25

Dites, j'ai installé Gnome, et maintenant mon Grub est limite vert avec écrit "Debianedu SkoleLinux", et j'ai aussi ce fond d'écran, et en l'ouvrant ça m'a ouvert une page web vers un truc de l'éducation ou je ne sais quoi, si je vais dans Aptitude et que je supprime tout GNOME, tout rentrera dans l'ordre?
Merci! :)

Caletlog
Caletlog
Niveau 10
16 août 2014 à 15:39:23

Donne un exemple, parce que sérieusement je vois pas.
Je vois 2 choses à quoi tu peux penser : les fonctions wrappers qui ne sont que des _sucres syntaxiques_, comme les boucles et itérateurs (each, select, map, times, ...). C'est tellement mécanique qu'on peut tout à fait les convertir en boucles classiques avec un préprocesseur. Le seul avantage que ça apporte, c'est une diminution du nombre de lignes. Rien d'autre, et quiconque sait utiliser ces wrappers parfois obscurs sait utiliser les structures de base qu'il y a derrière. C'est exactement le même principe que les ++/-- ou +=/*=/... : ça permet de gagner du temps, mais n'importe quel idiot peut résoudre un problème sans s'en servir. Y'a pas besoin de sortir d'X pour implémenter un map ou un select, quand même.

L'autre option, ce sont les fonctions des bibliothèques standards ou utilisateur, type prime pour générer des nombres premiers, les fonctions de tri, ou celles qui bossent avec de l'aléatoire. Là, c'est plus compliqué à implémenter manuellement, forcément, et je suis d'accord, c'est de la triche si on s'en sert dans un problème Euler.
Mais ça, je me répète, c'est disponible dans n'importe quel langage. C++ les a, Python les a, Java les a, ... C'est stupide de s'en servir pour les problèmes Euler, mais ça c'est propre à l'utilisateur, pas au langage et sur ce point Ruby fait ni mieux ni moins bien que les autres.

Pour le reste, je vois pas. Ruby n'est pas un langage magique qui résout les problèmes pour toi. S'il est populaire, c'est surtout parce qu'il est bourré de sucres syntaxiques et de constructions souples (les if/while/whatever placables n'importe où dans une ligne, par exemple), ce qui permet de gagner du temps de développement parce qu'on a pas besoin de répéter 36k fois les mêmes choses.

JameaGourmand
JameaGourmand
Niveau 7
16 août 2014 à 15:57:24

Non mais sur ce point tu as parfaitement raison, Ruby est bourré de sucre syntaxiques qui font qu'on écrit qu'on écrit plus facilement ce qu'on pense. Toujours est-il que rien que ça c'est déjà un énorme avantage sur d'autres langages, mais nous ne leurrons pas 99% de ces choses peuvent être écrit avec des structures standards.

J'ai pas trop d'exemple ça fait longtemps le projet Euler et j'en suis qu'au problème 3 actuellement :hap: Mais particulièrement je pense à ça (il y a en d'autres),

https://projecteuler.net/problem=19

C'est un problème qui algorithmiquement n'est pas trivial à mon sens, mais en 10 lignes de Ruby c'est fait. On crée un objet Time avec la date de départ on fait une boucle où on incrémente d'un jour à chaque itération et là magie la petite fonction Sunday? de Ruby ( :hap: ) qui fait tout le boulot.

Quand je serais arrivé au point où j'en suis en Ruby actuellement avec Haskell je te donnerais d'autres exemples là je suis toujours au 3 ème :rire:

Caletlog
Caletlog
Niveau 10
16 août 2014 à 16:04:59

Et tu utilise un groupement non trivial de la bibliothèque standard.
Les objets Date/Time sont pas exclusifs au Ruby, t'en as dans la quasi totalité des langages de script, et C/C++ ont des utilitaires semblables avec le header <ctime> :(

C'est le même principe que les nombres premiers ou les algos de tri, là encore. Si on fait ce problème, on les utilise pas, mais c'est la même situation dans un nombre impressionnant de langages.

Google_Bot
Google_Bot
Niveau 14
16 août 2014 à 16:20:54

vava740 ( https://www.jeuxvideo.com/forums/1-38-7665853-2084-0-1-0-0.htm#message_7818638 )
« Lien du thème CSS GitHub pour GitWeb ? :noel: »

https://github.com/kogakure/gitweb-theme il me semble.
Simple et efficace. Le seul truc qui "manque" à gitweb vanilla c'est l'affichage du réseau de commits mais je m'en fous, je fais ça en local avec gitg :-p

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment