Aller au contenu

Petit challenge de manipulation de chaine


DenisHen

Messages recommandés

Salut à tous.

 

Je propose un petit jeu, mais en Lisp et/ou en VLisp et sans mélanger les deux. Mais si vous êtes en mesure de proposer d'autres langages, libre à vous, faites-nous voir vos connaissances... ;)

 

Avec le moins de lignes possible, faire ceci :

 

1.La base est une chaine contenant un nombre à 16 chiffres (ex : "5637159071856346"),

2.Passer par l'étape d'inversion de ce contenu (ex : "6436581709517365"), en fait il faut lire la chaine depuis la fin,

3.Puis, permuter les paires 2 à 2 (ex : "46638571901537765"), on inverse les chiffres 2 par 2, 64 devient 46, 36 devient 63...

 

C'est parti... ;)

 

Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

  • Réponses 67
  • Créé
  • Dernière réponse

Meilleurs contributeurs dans ce sujet

Meilleurs contributeurs dans ce sujet

Bump ?

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

J'ai une solution, mais je laisse d'autres répondre avant de la poster.

J'en étais certain... ;)

 

PS: il y a une petite erreur dans l'énoncé : la base devrait être : "5637159071856346"

Oops, désolé, c'est modifié dans le post original. Merci.

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Salut Curlygoth.

 

Non, désolé, pas de VBA, et pour l'itération ou la boucle, c'est toi qui vois, il faut un minimum de ligne de code...

 

C'est le challenge. ;)

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Désolé...

 

Mais tu peux lancer ce challenge en VBA...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

On pourrait accepter des réponses dans d'autres langages.

Il est peu probable qu'on arrive à faire aussi concis qu'en LISP, excepté avec certains langages fonctionnels comme F#:

let jeu str =
   let rec f a = function
       | x :: y :: t -> f (x :: y :: a) t
       | _ -> a
   new string(str |> Seq.toList |> f [] |> List.toArray)

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

(gile), si c'est une idée pour augmenter le jeu, je suis preneur...

 

Désires-tu que je change les langages du challenge ?

 

je n'y vois rien à redire pour ma part... ;)

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Non, bien sûr (gile), je ne m'attends pas à un surprenant engouement suite à un coup de baguette magique de la part d'autrui, bien que ce forum regorge de personnes investies et de bonne fois, l'entente de ce forum, et tu en conviendras, est très sympathique, empathique, sans attente de retour (altruisme, es-tu là ?), et presque amical (je m'en suis aperçu lors du malheureux décès anonyme d'un des nôtres, j'ai été très triste, et je n'étais pas le seul...).

 

Mais je n'ai plus de "lien" avec le AutoCAD et le Lisp en ce moment et depuis quelques années (je travaille sur un autre logiciel, MIAO de AllSystems), mais je viens toujours faire un tour sur CadXP, nostalgie, quand tu nous tiens...

 

Je vais donc agrandir le cercle du développement de "mon" challenge à toutes formes de langage...

 

Tu as, encore une fois, raison... ;)

 

Je vais de ce pas changer mon premier post...

 

Merci à toi...

 

Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Une solution en Javascript

 

function chal(str) {
 var lstr = str.split('').reverse();  
 var lret = [];
 var cpt = 0;
for (var ii = 0; ii < lstr.length / 2; ii++){
	lret.push(lstr[cpt + 1],lstr[cpt]);
               var cpt = cpt + 2;
   }
console.log("".concat(...lret));
}
chal('5637159071856346');
> "4663857190153756"

Lien vers le commentaire
Partager sur d’autres sites

Voilà ! ! ! Merci Maître (gile), du java maintenant ! ! !

 

Non, je déconne, c'est vraiment curieux le java, et ça m'intéresse...

 

Mais on ne peut pas dire qu'il économise les lignes de codes...

 

Bien que, on est d'accord, le Lisp n'est, en fait, qu'une seule ligne de code...

 

Mais merci Fraid de participer... Et tu as bien relevé le challenge... Bravo...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Ah ben ouais, c'est "script" la différence ? ? ?

 

Non, je déconne, je ne connais pas la différence entre Java et JavaScript... Est-ce la même qu'entre VB et VBA ? Par exemple ? Est-ce la même qu'entre VB6 et .NET ? Est-ce la même qu'entre Lisp et V-Lisp ? Est-ce la même qu'entre un gratin et une tourte ?

 

Ok, je sors, je sais, je suis aller trop loin... Désolé... Mais j'aime humoristiquer mes propos pour "détendre", car je suis sur que je vais finir par connaître la différence entre Java et JavaScript... Car je suis sûr que tu va le faire...

 

Mais, est-ce que le javaScript est une évolution du Java, est-ce une révolution ? Est-ce le même langage de base ? Les fonctions, les paramètres, les termes, l'algorithme est-il le même ? ? ?

 

Dès qu'on me présente un langage, je suis toujours super curieux... Mais je sais pertinemment qu'il y en a eu un autre avant...

 

J'ai toujours vu le Java comme un super truc mais le JavaScript, est-ce le super truc du super-truc ? Est-ce une évolution ? Une décadence ? une suite précurcive ?

 

Allez, défoule-toi Fraid... j'ai soiffe de connaissance...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Dès que j'ai le temps je fait un exemple en Java.

J'en serais ravi, et je ne serais pas le seul... Car aller voir la différence entre le Java et le JavaScript sur le NET, je vais y passer des heures, et je ne suis pas sûr d'être plus renseigné à la fin, pas tel qu'un véritable utilisateur et développeur ne pourrais le faire... Via une explication concise soutenu par de petits exemples ne pourrait le faire...

 

Tu as la connaissance des deux, donc, il n'y a qu'une personne comme toi (et tant d'autre, on est bien d'accord), pour, en quelques lignes, m'expliquer la différence.

 

Car j'ai déjà essayé, mais rien de probant...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Pour faire court, JavaScript est un langage de script (langage interprété à typage dynamique) comme Python, VBScript ou encore LISP, Java est un langage compilé à typage statique comme C, C++, C#, VB.NET ou encore F#.

F#, qui privilégie la programmation fonctionnelle, utilise un typage très rigoureux (pas de conversions implicites) qui permet une puissante inférence de type (le type des données est directement déduit du code avant compilation). Ceci permet un syntaxe très concise qui rappelle les langages de script.

Un autre exemple F# encore plus concis :

let foo str =
   let rec f s r =
       if s = "" then  r
       else f  s.[2 ..] (s.[.. 1] + r)
   f str ""

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Hello Gilles

 

1) J admire ! Et ce code me parait "mysterieux" ...

 

2) Mes antecedants de "vieille" programmation : Assembleur, Fortran, Cobol, GAP/RPG, Pascal, Basic, un soupcon de C,

me m ont jamais permis de vraiment "bien" comprendre le Lisp. Mais j aurais du insister !

 

3) A l epoque (1980-1995) j admirais un autre langage "perdu aujourd'hui" : APL

https://fr.wikipedia.org/wiki/APL_(langage)

 

La Sante, Bye, lecrabe "fatigue"

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

ça devrait ressembler à du Java

 

Je confirme

 

public class Challenge {
   public static void main(String[] args){
   System.out.print(chal("5637159071856346"));
}
   public static String chal( String txt){
    String ret = "";
    while (1 < txt.length())
   {
       ret = txt.substring(0, 2) + ret;
       txt = txt.substring(2);
   } 
       return ret;
   }
}
run:
4663857190153756BUILD SUCCESSFUL (total time: 0 seconds)

Lien vers le commentaire
Partager sur d’autres sites

Salut (gile), je n'ai pas tout compris, mais c'était très clair... ;)

 

Ôh Décapode, tu as fais du Cobol ? ? ? Alors là bravo, j'en ai fais une minute, j'ai eu mal au crane pendant deux semaines... Mais j'ai adoré...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant



×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité