nit icon indicating copy to clipboard operation
nit copied to clipboard

Play the Rosetta Code game

Open privat opened this issue 11 years ago • 16 comments

One nice way to experiment and test the language can be to implements the various tasks of the Rosetta Code project.

http://rosettacode.org/wiki/Category:Programming_Tasks

Current implemented tasks are in the https://github.com/privat/nit/tree/master/examples/rosettacode directory

Some tasks are implemented and not yet reported to the wiki pages. See http://rosettacode.org/wiki/Reports:Tasks_not_implemented_in_Nit for details

privat avatar Oct 24 '14 00:10 privat

http://rosettacode.org/wiki/Nit

jcbrinfo avatar Oct 25 '14 04:10 jcbrinfo

Si des gens veulent jouer, choisissez une lettre et faites les taches commençant par cette lettre. Personnellement, je trouve que c'est très relaxant.

Une fois #844 intégrée il sera facile d'ajouter de nouvelles taches au fur et à mesure.

privat avatar Oct 28 '14 13:10 privat

Salut, Je trouve un problème de performance en faisant l'exemple de http://rosettacode.org/wiki/Hailstone_sequence, j'ai utilisé l'algorithme le plus classique et le plus évident mais dans la 3ème partie où je dois avoir la plus longue séquence d'un nombre inférieur à 100000, l'execution prend presque 20 à 30 secondes, j'ai même vu l'implémentation du fun is_even qui utilise simplement un modulo. Est-ce qui il y a une solution ou je dois penser à optimiser plus en algorithmique ? Merci PS: voila le code que j'ai écrit: screen shot 2014-12-03 at 15 57 38

aminebenromdhane avatar Dec 03 '14 14:12 aminebenromdhane

@amineorion Bonjour, est-ce qu'on peut avoir le code autrement que dans un png pour qu'on puisse tester et vous revenir avec une réponse pertinente ? Vous pouvez utiliser gist pour facilement partager un morceau de code.

privat avatar Dec 03 '14 15:12 privat

Yo !

En refaisant ton algo naïf (perso je l'ai fait par raffinement de Int plutôt que top-level, mais ça devrait pas impacter), j'arrive à un runtime de .848 s compilé avec nitg et les options par défaut, c'est étrange en effet que ça prenne autant de temps chez toi...

Tu tournes sur quel environnement pour savoir ? On tourne pas mal tous sur un environnement analogue dans la team, fait que c'est peut-être ça le problème potentiel ?

D'autant que ma machine est loin d'être une brute (Q6600-4Gio RAM), j'imagine que tu devrais arriver à un meilleur runtime.

Au hasard tu l'exécutes comment ? Interpréteur ? Si c'est le cas, ouais, lui, il est lent comme jamais, je comprends le temps de runtime (chez moi il en finit pas, j'ai abrégé ses souffrances après quasi 3 minutes de moulinage).

Je te laisse checker mon code : https://gist.github.com/R4PaSs/831747860776257bb0a4

Si t'as d'autres questions, hésites-pas !

lbajolet avatar Dec 03 '14 15:12 lbajolet

Voila https://gist.github.com/amineorion/9b96c227369b73d8f608 Ma machine tourne sur un OSX (i7-16Go RAM) Oui j'utilise un interpréteur

aminebenromdhane avatar Dec 03 '14 16:12 aminebenromdhane

OK, interpréteur du coup c'est sûrement ça le trouble, essaye de le compiler avec nitg et regarde le temps qu'il prend, tu devrais arriver à des résultats sensiblement plus raisonnables !

lbajolet avatar Dec 03 '14 16:12 lbajolet

Oui sa marche très bien maintenant merci

aminebenromdhane avatar Dec 03 '14 16:12 aminebenromdhane

Salut, j'ai un petit problème de performance quand je calcul le hamming number au position 1,000,000 de http://rosettacode.org/wiki/Hamming_numbers voila mon code : https://gist.github.com/amineorion/f60f06382b51d079e244 sa prend presque 5 minutes ( j'utilise nitg) et il affiche au final un 0, je croix il a atteint le max. Je sais pas s'il y a un class comme BigInteger en java ou le Int est comme Ruby où il a un grand limite, merci

aminebenromdhane avatar Dec 05 '14 17:12 aminebenromdhane

Yo !

Hm, malheureusement à date y'a pas d'entiers de taille variable en Nit, on est limités à la spec des long de C. Ça prendrait de faire un wrapper de bignum par exemple pour avoir ça, mais à date personne s'y est attelé (faut dire personne en a eu besoin à date :) )

lbajolet avatar Dec 05 '14 18:12 lbajolet

Donc sa sert a rien de faire les problèmes de ce genre ?

aminebenromdhane avatar Dec 05 '14 18:12 aminebenromdhane

  1. Show the one millionth Hamming number (if the language – or a convenient library – supports arbitrary-precision integers).

Donc, la partie > 231 est optionelle.

jcbrinfo avatar Dec 05 '14 18:12 jcbrinfo

Oh ok

aminebenromdhane avatar Dec 05 '14 19:12 aminebenromdhane

Do I add RosettaCode problems in examples/rosettacode ?

aminebenromdhane avatar Dec 05 '14 19:12 aminebenromdhane

Ouais pas de soucis tu peux ! Tu pourras faire une Pull-Request quand tu veux pour faire intégrer ça dans le repo master !

lbajolet avatar Dec 05 '14 19:12 lbajolet

Template for a Nit entry in Rosetta Code:

=={{header|Nit}}==

Source: [$(URL) the official Nit’s repository]

<lang nit>$(IMPLEMENTATION)</lang>
{{out}}
<pre>$(OUT)</pre>

Where:

  • $(URL): The URL of the Nit module in GitHub (master branch). Should start with https://github.com/nitlang/nit/blob/master/examples/rosettacode
  • $(IMPLEMENTATION): Code of the module, excluding the boilerplate comments (shebang and copyright) and the # SEE: line.
  • $(OUT): The output, if meaningful. Usually, the content of the file found in tests/sav. If you don’t include the output, the whole {{out}}… part should be skipped.

Example: http://rosettacode.org/mw/index.php?title=Align_columns&diff=prev&oldid=247642

Notes:

  • Entries must be ordered by language name.
  • If you are not the author of the pull request that introduced the example in this repository, he/she should be mentioned in the commit message.

jcbrinfo avatar May 20 '17 23:05 jcbrinfo