Histoire de ce remettre en selle...
shadwolf27-Dec-2012/14:12:13+1:00
... je vous propose un petit jeu style concours de code.

La chose a ecrire est une liste auto cyclante en rebol. Comme une liste chainee dont le dernier maillon renverait dans son champs next au premier maillon.

l idee c'est de voir comment arrive a faire en rebol une des choses qui ont fait le succes du C. Ca permettra de faire un article avancé sur un de point crucial de la programmation moderne.

Un an apres la disparition de notre regrette Dennis Ritchie ce serait un bel homage je trouve.

Laissez parler votre imagination tout est ouvert il n'y aura pas de vainqueur il n'y aura pas de perdant!

Liste a cyclee data: ["monday" "Tuesday" "Wednesday" "Thusday" "Friday" "sunday" "Saturday"]

Faire une fonction qui pour un jour donné en argument returnera la liste des autres jour de la liste tant qu'il ne retombe pas sur le jour donner en argument

listdays "Friday"
-> Results: "sunday" "Saturday" "monday" "Tuesday" "Wednesday" "Thusday"

La liste est donnee sous forme de block! a titre d'exemple tout autre format est possible, seul compte l'aspect cycle.
DideC27-Dec-2012/16:15:33+1:00
Shadwolf a dit "Faire une fonction qui pour un jour donné en argument returnera la liste des autres jour de la liste tant qu'il ne retombe pas sur le jour donner en argument"

Tu plaisante ou pas ?
Non !
Alors...
jours: ["monday" "Tuesday" "Wednesday" "Thusday" "Friday" "sunday" "Saturday"]
difference ["monday"] jours
;== ["Tuesday" "Wednesday" "Thusday" "Friday" "sunday" "Saturday"]
difference ["wednesday"] jours
;== ["monday" "Tuesday" "Thusday" "Friday" "sunday" "Saturday"]

Oups, pardon, monsieur veut une fonction :
autre-jours: func [jour /local jours][
	jours: ["Monday" "Tuesday" "Wednesday" "Thusday" "Friday" "sunday" "Saturday"]
	difference reduce [jour] jours
]
autre-jours "monday"
;== ["Tuesday" "Wednesday" "Thusday" "Friday" "sunday" "Saturday"]
autre-jours "sunday"
;== ["Monday" "Tuesday" "Wednesday" "Thusday" "Friday" "Saturday"]

Après, ta demande est pas claire : tu parle de quelque chose de générique au début, puis tu donne un exemple et à la fin tu demande autre chose !!
shadwolf27-Dec-2012/18:00:25+1:00
DideC l idee c'est "didentifier la possition du mot donner en argument puis de parcourir en sequence la liste jusqu'a rencontre de la fin puis on donne les elements de la liste au debut. Jusqu'a rencontre de l'element.

Je pense pas avoir dit tout et son contraire

je peux le faire avec des chiffre si tu veux que ce soit plus claire

---
data: [1 2 3 4 5 6]
listdata 4
>> Resultat 5 6 1 2 3
---

si la liste initiale de l exemple en forme de block! ne te plait pas tu peux la transforme en objets mis en relation (comme une liste chainée)

Si tu veux proposer autres chose comme structure de donnee tu es libre. tu peux meme utiliser parse si tu veux

l idée c'est juste de jouer ... et de voir si au fur et a mesur du jeu des solutions originales aparaissent.

ta solution didec est originale je n y avait pas pense mais on ne garde pas la succession en sequence.
DideC28-Dec-2012/10:14:53+1:00
suite: context [
	data: none
	
	set*: get in system/words 'set
	next*: get in system/words 'next
	
	set: func [d [block!]] [data: d]
	
	cycle: func [val /local pos res] [
		either pos: find data val [
			append copy next* pos copy/part data pos
		] [
			none
		]
	]
	
	next: func [val /local pos res] [
		either pos: find data val [
			first either tail? pos: next* pos [data][pos]
		] [
			none
		]
	]
	
]

suite/set ["Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday" "sunday"]

suite/cycle "monday"
;== ["Tuesday" "Wednesday" "Thursday" "Friday" "Saturday" "sunday"]
suite/cycle "wednesday"
== ["Thursday" "Friday" "Saturday" "sunday" "Monday" "Tuesday"]

suite/next "saturday"
;== "sunday"
suite/next suite/next "saturday"
;== "Monday"

Mais on peut aussi dériver pour créer différentes suites :
wjours: make suite [data: [monday tuedsday wednesday thursday friday saturday sunday]]
>> wjours/next 'monday
;== tuedsday
>> wjours/cycle 'friday
;== [saturday sunday monday tuedsday wednesday thursday]

dix: make suite [data: [1 2 3 4 5 6 7 8 9 10]]
dix/next 3
;== 4
dix/next 10
;== 1
dix/cycle 9
;== [10 1 2 3 4 5 6 7 8]

Content mon chou !?
PierreCh28-Dec-2012/11:00:18+1:00
Rigolote, la suite.

J'aurais fait beaucoup plus crade et dans le genre gaspilleur de mémoire:

cycle_through_list: func [list_items item_searched] [
copy/part (next find (join list_items list_items) item_searched) ((length? list_items) - 1)
]
PierreCh28-Dec-2012/11:00:54+1:00
Et l'exécution de la chose:

>> list_days: ["lundi" "mardi" "mercredi" "jeudi" "vendredi" "samedi" "dimanche"]
== ["lundi" "mardi" "mercredi" "jeudi" "vendredi" "samedi" "dimanche"]
>> cycle_through_list list_days "mardi"
== ["mercredi" "jeudi" "vendredi" "samedi" "dimanche" "lundi"]
>> data: [1 2 3 4 5 6]
== [1 2 3 4 5 6]
>> cycle_through_list data 4
== [5 6 1 2 3]
>> cycle_through_list list_days "jeudi"
== ["vendredi" "samedi" "dimanche" "lundi" "mardi" "mercredi"]
PierreCh28-Dec-2012/11:01:33+1:00
PS: comment qu'on fait, pour afficher du code qui ressemble à du code, dans rebelBB?
coccinelle28-Dec-2012/11:13:26+1:00
Et pourquoi pas :
>> x: [1 2 3 4 5 6]
== [1 2 3 4 5 6]

>> head move/part x length? x index? find x 4
== [5 6 1 2 3 4]

>>


Ca ne fait peut-être pas exactement ce qui est souhaité mais c'est joli.
olivier28-Dec-2012/11:15:30+1:00
@Shadwolf: elle est pas mal du tout ton idée de lancer des mini défis. On aurait du faire ça avant. ça permet de garder la main et d'apprendre en étudiant le code des autres.

@DideC: jolie implémentation dans un objet. Tu maitrises

On devrait peut être généraliser ce type d'exercise et regrouper ces snippets qui seront autant utiles pour R3 que pour Red dans le futur. Qu'en pensez vous ?

Olivier
coccinelle28-Dec-2012/11:17:54+1:00
Pour afficher du code, tu le mets entre
...
coccinelle28-Dec-2012/11:19:31+1:00
Entre [ code] ... [ /code] mais sans l'espace dans la balise.
PierreCh28-Dec-2012/12:09:21+1:00
Ah oui, coccinelle a battu le record d'élégance/simplicité, je trouve!

Je remets ma fonction pour essayer la balise de code:
cycle_through_list: func [list_items item_searched] [
    copy/part (next find (join list_items list_items) item_searched) ((length? list_items) - 1)
]
PierreCh28-Dec-2012/12:10:03+1:00
Effectivement, ce petit exercice est fort marrant. Je plussoie!
shadwolf28-Dec-2012/18:42:27+1:00
olivier heu monsieur j'ai essayer de lancer ce genre de mini defi l'annee dernier mais y avait personne !!!! aaaaaahahahahah...

Moi je suis tres joueur donc ca se reproduira regulierement probablement et au moins pendant ce temps la on parle du sujet qui nous rassemble sur ce forum rebol.


DideC ... tu vas arreter de m'appeller mon choux sinon je vais t'envoyer ma femme pour que tu t'expliques avec ...
shadwolf28-Dec-2012/18:44:52+1:00
>> a: "1 2 3 4 5 6"
== "1 2 3 4 5 6"

>> parse a "4"
== ["1" "2" "3" "5" "6"]

ca pourrait marche sinon dideC mais on a pas la sequence ouin !!!
shadwolf28-Dec-2012/18:52:07+1:00
DideC ton exemple me rappel un de grand point de rebol le clonage d'objet. Make c'est quand meme un outil fondemental et tellement merveilleux de rebol... tout VID reposait dessus.
shadwolf28-Dec-2012/18:55:07+1:00
Olivier, rassembler les scripts de nos jeux dans un article sur le wiki rebolfrance.info. Je dis oui ca pourrait meme devenir un jeu de tests avancés pour trouver des bugs ou des choses qui collent pas.
gerardcote31-Dec-2012/5:14:16+1:00
Les gars, j'adore. Je vais ainsi pouvoir recommencer petit à petit à étudier puis programmer en REBOL à partir de bien mieux que zéro ... i.e. d'exemples simples à étudier et qui susciteront ma matière grise.

Je n'ai jamais pris le temps de vraiment apprendre REBOL à ce jour faut le dire - puisque je n'en avais pas besoin mais chaque fois que je l'ai tenté, je me suis cogné la tête sur des problèmes auxquels je n'ai jamais trouvé de réponse malgré TOUTE la doc existante consultée.

Et puis j'étais un peu gêné de devoir toujours demander les réponses ... alors je suis demeuré ignorant par ma faute!

Quand j'aurai un peu plus de temps et de bonne volonté - car je suis un peu loin de la programmation maintenant,
je ressortirai quelques-uns de mes problèmes pour voir si quelqu'un peut enfin m'aider à trouver une piste de solution ou à tout le moins m'expliquer comment il se fait que mes essais restaient infructueux.

C'est vraiment cool cette initiative!

Merci à vous chers cousins de relancer le fil conducteur.

J'apprécie et essaierai d'être au rendez-vous lors des prochains défis - espérons-le aussi à la hauteur des problèmes proposés.
PierreCh1-Jan-2013/20:28:43+1:00
Super, cousin!

Qu'en est-il au juste de ce cousinage: serait-ce que gerardcote viendrait du côté de la Belle Province?


Au fait: je réalise que ma fonction ne donne padutout ce qui est escompté:
>> a: "1 2 3 4 5 6"
== "1 2 3 4 5 6"
>> cycle_through_list: func [list_items item_searched] [
[ copy/part (next find (join list_items list_items) item_searched) ((length? list_items) - 1)
[ ]
>> cycle_through_list a 4
== " 5 61 2 3 "

=> flûte, les deux bouts de la liste se sont bêtement concaténés. Merdalors.
gerardcote2-Jan-2013/0:39:52+1:00
Oui PierreCh je suis bel et bien du Québec.
shadwolf2-Jan-2013/15:01:48+1:00
bienvenue a toi gerardcote. Fait pas attention au desordre ca fait 7 ans que la maison etait abandonnées. On va rapidement remettre de l ordre
gerardcote3-Jan-2013/5:12:39+1:00
Merci. Dites-donc, concernant l'installation d'éclipse et des autres outils requis pour suivre l'évolution des tickets, j'ai téléchargé Eclipse 64 bits car je suis sur Win 7 (64 bits) mais là je vois que :

1) Java ne trouvait pas l'exécutable javaw.exe de la jre car il n'était pas sou Eclipse - alors je l'ai recopiée de mon autre répertoire de download.

2) Maintenant il démarre mais il ne veut pas tourner la JVM.DLL que j'ai recopiée du répertoire Jre7 puis renommé jre et placé dans le dossier Eclipse. Se peut-il que ce soit en raison du mode 64 bits ? Je vais tenter de vérifier si cela peut bien être la seule raison de tout ceci...

3) Enfin je n'ai aucun outil de développement pour le C/C++. Que me recommandez-vous ? Dois-je utiliser un kit sous MinGW ou Cygwin ou simplement télécharger un kit MS SDK ? Ce dernier est-il payant au fait ou existe-t-il une version Express gratuite qui ferait le travail ?

Je préfère attendre vos différentes recommandations (même si les points de vue diffèrent) pour ne pas travailler inutilement sur une option que je devrais désinstaller ensuite pour rien ... Je pourrai ensuite écrire un petit document sommaire en Français à ajouter à celui de Shadwolf pour les néophytes bien que tout ceci soit déjà écrit ailleurs je présume ... (ici il existe en anglais : http://help.eclipse.org/juno/index.jsp). Je ne connais rien des outils utilisés par chaque suite d'outils alors si c'est visuel (comme dans le temps avec les produits de Borland) et intégré à Eclipse cela me va. J'y pense, j'ai acheté il y a presque 3 mois le nouveau kit d'Embarcadero, cela vaut-il la peine que je l'installe avec Eclipse ou ferait-il le travail seul sans Eclipse ? Je n'ai jamais installé mais je croyais m'y mettre puis j'ai eu de nouvelles obligations et j'avais oublié cet animal là ... sans trop savoir ce que j'ai entre les mains - et sans savoir si cela sera compatible sans trop de recherche et d'adaptation - je deviens paresseux avec les années !
DideC3-Jan-2013/9:22:56+1:00
Je connais rien à Eclipse et tout ça. Mais peut-être que cette discussion serait mieux dans un thread propre ?!
ldci3-Jan-2013/9:47:03+1:00
Regarde de ce côté: http://pl.legoff.free.fr/dotclear/rebol-fondation/index.php/?q=eclipse
Amicalement
Philippe3-Jan-2013/9:57:02+1:00
Hello,

Je vois d'ailleurs que certains liens sur le site sont encore Ko, je pensais avoir tout nettoyé autrefois..
Je corrige çà dans la journée.

===Philippe
shadwolf3-Jan-2013/15:17:25+1:00
Bon retour parmis nous Philippe.

gerardcote pour eclipse on est daccord qu on le considere comme sdk de developpement de rebol. Pour faire du code rebol pas besoin d`eclipse emerald editor ou crimson editor sont largement suffisant.

Pour ce qui est d eclipse sous windows 7 64 bits la tu pousses un peu ! hahahaha. Perso j ai pas l occasion de travailler avec.

Pour ce qui est de cygwin MinGW tu fais bien de poser la question.

Premier point, si tu veux te mettre en action de suite utilise VisualStudio express c'est gratuit pas limité.
sinon il y a codeblock qui avait ete le framework que les gurus avaient choisi pour le dev de r3-hostkit (ou r3-host)
tout les details sont ici:
http://www.digicamsoft.com/cgi-bin/rebelBB.cgi?thread=%3C5Jan2011122635067482100%3E

L interret est qu il est deja intimement lié a minGW et qu il y a deja un projet pour compiler rebol hostkit dans les source de r3-hostkit. CodeBlock permet aussi l importation de projet VisualStudio et ca carl nous en donne un avec les source de r3. enfin le Make.exe de mingw doit etre capable de lire le makefile fait pour windows a partir du moment ou tu as editer le dit makefile pour changer le path et le nom des logiciels dont tu vas te servir.

La difference entre MinGW et CygWin est que MinGW est moin GNU et plus win32api alors que CygWin tente d'adapter un maximum d'outils de linux a windows. CygWin fait dans les 400Mo tout packages downloadée alors que MinGW fait dans les 12Mo grand max. MinGW c'est surtout le compilo gcc et library linker ld mais aussi la asm l assembleur qui fait partie du package avec make et res. Dans SharpDevelop c'est une version adaptée de MinGW qui est fournie pour le support c/c++

cyngwin c est donc un effort large de portage a windows des outils de linux alors que minGW ce resume au outils et librairies necessaire a gcc.


sur le wiki de r3 voila ce que carl nous mettait pour la compilation de r3 hostkit:

MinGW C

The distribution includes a standard makefile that you can use for Unix-like systems including MinGW (Min-GNU for Windows). We assume you've already downloaded and set-up MinGW, including the necessary environment variables.

Now, do this:
In mingw/bin copy ming32-make.exe to just make.exe.
In a command shell, go to your r3 dir and type "make".
Watch it compile and link.
Type "r3" to run the new r3 exe.

Note that in the default configuration, the DLL is linked at run time. So, it needs to be in the same dir as r3.exe. Of course, you can build-it-in if you want it as a single exe.

Bon mais nous ce qui nous interesse c'est eclipse car il est portable et apres c'est un portage de gcc qui nous interesse. de toute facon on a les instruction pour compiler rebol dans le make.exe du pack cyngwin ou mingw
doit pouvoir lire sans trop de problemes le contenu du fichier makefile (linux) de r3.

Si le coeur t en dit et si tu veux creusé l'emploi d eclipse sous windows tu peux creer une extension a l article qui existe deja sur le wiki rebol-france.info. Ca te permettra au moins de savoir ou tu en es dans tes recherches (ce qui marche ce qui marche pas, ce qui devrait marcher etc... ca peut permettre a d autre de te rejoindre dans ton exploration et de te proposer des alternatives interessantes)

Quand a la compilation sous linux j ai pas reussi a produire quelque chose avec le makefile fourni (probleme de chemins de fichier et le manque de r3 pour la compilation)
J ai pas eu le temps non plus de me concentrer dessus cette semain avec les fetes ...tout ca ...
gerardcote3-Jan-2013/18:32:17+1:00
OK Merci, je regarde tout ça tantôt - quand je reviens de donner mes 3 soins ...

Car je suis redevenu massothérapeute depuis peu et cela me laisse bien moins de temps libre qu'auparavant. Mais c'est tellement plus revalorisant comme effet sur les gens que l'informatique - telle qu'on la connaît aujourd'hui et telle qu'elle est appliquée hors du monde REBOL - pas par tous c'est certain mais quand même.

J'ai bien moins de frustration face aux efforts à déployer eu égard des résultats obtenus par la massothérapie et l'anatothérapie que si je compare à mes efforts et aux résultats obtenus en informatique. J'ai bien hâte que les deux se rapprochent d'un point de vue ration effort/résultats - mais cela n'est pas pour demain, j'en ai bien peur! Je garde le moral et l'espoir fait partie de ma Wish List pour le Nouvel an.

Bon retour en selle à tous et toutes.
gerardcote3-Jan-2013/18:42:39+1:00
ration -> ratio
gerardcote3-Jan-2013/18:43:22+1:00
DideC : Tu as raison - Je suggère un thread différent juste pour traiter des outils de développement pour R3 (env. C), que ce soit Eclipse ou les autres éditeurs, ainsi que les chaintools tel MingW, etc...

Que diriez-vous de :

R3: Compilation (Outils)

Ai-je la possibilité de créer seul un tel Thread ou quelqu'un doit-il s'en charger?

Je vérifierai plus tard si je peux le faire moi-même mais je vérifierai aussi afin de savoir si personne d'autre ne l'a pas fait avant moi - évitant du coup une duplication de sujet.
DideC3-Jan-2013/18:51:07+1:00
Bouton "POST"
shadwolf3-Jan-2013/19:47:57+1:00
mise a jour de la doc sur le wiki http://www.rebolfrance.info/articles/premier_debug

vous y trouverez deux doc qui explique dans le details comment faire comprendre a eclipse pour C++ d appeller minGW
PierreCh3-May-2013/22:52:56+2:00
Je viens de tomber là-dessus dans le livre de recettes: ça serait pas la bonne réponse au chat-lange de ce fil?

http://www.rebol.net/cookbook/recipes/0017
DideC6-May-2013/9:34:16+2:00
Le bon lien : http://www.rebol.net/cookbook/recipes/0017.html

C'est une réponse ultra-simple oui, mais cela ne répond qu'à la partie "next" (l'élément suivant), sans la partie "cycle" (tous les élements après, puis avant l'élément demandé).
shadwolf8-May-2013/16:10:18+2:00
bon pret pour le prochain defis ?

attention ca va etre violent !!! tous aux abris !!
gerardcote28-Jul-2013/18:13:49+2:00
DideC : Merci pour le tuyau - c'était trop simple. Est-ce semblable pour envoyer des fichiers à partager ou dois-je demander un accès sur REBOLFRANCE aussi ? Peut-être que je pourrais simplement publier un lien vers ma Dropbox mais il sera difficile de discuter ensemble du code si on ne le met jamais nulle part pour que tous y aient accès.

Par ailleurs, si on ajoute un post à ce thread pour chaque algo ou jeu à coder et à discuter, on surchargera vite le thread, non ? Avez-vous déjà pensé à une solution élégantge qui permet néanmoins de tout regrouper aisément et d'y avoir surtout accès un seul point d'entrée ?

Login required to Post.


Powered by RebelBB and REBOL 2.7.8.4.2