J'ai résolu 84 des problèmes du projet Euler, principalement dans Haskell. Je vais maintenant revenir et d'essayer de résoudre en J certains de ceux que je déjà dans Haskell résolu, comme un exercice d'apprentissage J.Pourquoi n'ai-je pas la bonne réponse pour Euler 56 dans J?
Actuellement, je suis en train de résoudre Problem 56. Permettez-moi de souligner que je sais déjà quelle est la bonne réponse est, puisque je l'ai déjà résolu dans Haskell. C'est un problème très facile et trivial. Je ne donnerai pas la réponse ici.
Voici ma solution dans J:
digits =: ("."0)@":"0 eachDigit =: adverb : '[email protected]:digits"0' NB. I use this so often I made it an adverb. cartesian =: adverb : '((#~ #) u ($~ *:@#))' >./ +/ eachDigit x:^cartesian >: i. 99
Cela produit un nombre inférieur au résultat souhaité. En d'autres termes, c'est faux d'une manière ou d'une autre. N'importe quel J-ers sait pourquoi? Je suis déconcerté, car c'est assez simple et totalement brutal.
Qui l'a fixé! Il a également corrigé quelques autres problèmes de Project Euler sur lesquels je travaillais. J'étudie l'adverbe de la table pour le moment. –
Je viens de me rendre compte que je connaissais déjà l'adverbe de la table, mais je ne me suis pas rendu compte que vous pouviez l'utiliser pour des opérations cartésiennes. –
Oh! Quand c'est utilisé dyadiquement! J'ai compris. Très agréable! –