From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM autolearn=unavailable autolearn_force=no version=3.4.4 X-Received: by 10.42.100.138 with SMTP id a10mr24677004ico.23.1435614313312; Mon, 29 Jun 2015 14:45:13 -0700 (PDT) X-Received: by 10.140.94.19 with SMTP id f19mr83214qge.23.1435614313281; Mon, 29 Jun 2015 14:45:13 -0700 (PDT) Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!news.eternal-september.org!mx02.eternal-september.org!feeder.eternal-september.org!news.glorb.com!j8no2742890igd.0!news-out.google.com!4ni25896qgh.1!nntp.google.com!z60no1258047qgd.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: comp.lang.ada Date: Mon, 29 Jun 2015 14:45:13 -0700 (PDT) In-Reply-To: <24d183ce-77b6-4fe1-a95e-0ff5ef72c7bd@googlegroups.com> Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=2001:470:9174:1:15b:4c3b:6e97:4dd9; posting-account=r0RePAgAAABkc8iAou09Mtfbf-fnKQql NNTP-Posting-Host: 2001:470:9174:1:15b:4c3b:6e97:4dd9 References: <24d183ce-77b6-4fe1-a95e-0ff5ef72c7bd@googlegroups.com> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <3a73a637-e02a-464f-ae7f-dfb04dac70ee@googlegroups.com> Subject: Re: How to shuffle/jumble letters of a given word? From: MM Injection-Date: Mon, 29 Jun 2015 21:45:13 +0000 Content-Type: text/plain; charset=ISO-8859-1 Xref: news.eternal-september.org comp.lang.ada:26547 Date: 2015-06-29T14:45:13-07:00 List-Id: On Sunday, 28 June 2015 15:06:29 UTC+1, Trish Cayetano wrote: > I am creating a "text twist game" where you guess the words in a jumbled manner. How do I set the code to shuffle the letters? > > Example: word to be guessed is HELLO > > What should be displayed is: LOLEH or LELHO > > Thanks in advance! Here is a rough-and-ready Fisher-Yates shuffle demonstration. This one shuffles whatever line it receives on STDIN (only one line). with Ada.Text_IO; use Ada.Text_IO; with Ada.Numerics.Discrete_Random; procedure Shuffle_String is function ShuffleRand (N: in Positive) return Integer is subtype Random_Range is Integer range 1 .. N; package Random_Shuffle_Integer is new Ada.Numerics.Discrete_Random(Random_Range); use Random_Shuffle_Integer; Generator : Random_Shuffle_Integer.Generator; Retval: Random_Range; begin Reset(Generator); Retval := Random(Generator); return Retval; end; function Shuffle (Item : String) return String is Result : String (Item'Range); Temp : Character; J : Integer; begin Result := Item; for I in reverse Result'first + 1 .. Result'last loop J := ShuffleRand (I); Temp := Result (I); Result (I) := Result (J); Result (J) := Temp; end loop; return Result; end Shuffle; begin Put_Line (Shuffle (Get_Line)); end Shuffle_String;