Hov. Du er ikke logget ind.
DU SKAL VÆRE LOGGET IND, FOR AT INTERAGERE PÅ DENNE SIDE

Spinning Text

Side 1 ud af 1 (6 indlæg)
  • 1
Fra Helsingborg
Tilmeldt 3. Apr 05
Indlæg ialt: 6555
Fra  TextReactor Skrevet kl. 18:26
Hvor mange stjerner giver du? :

Nu har jeg søgt og søgt uden held så derfor tyer jeg til sidste bastion.

Jeg skal bruge en algoritme jeg kan omskrive til programmeringskode til at lave spinning text:

Dvs at tekst som

{han|hun} kører {bil|cykel} bliver til sætningerne som

han kører bil
han kører cykel
hun kører bil
hun kører cykel

Løsningen er sikkert lige foran mig, men jeg kan simpelthent ikke se løsningen. algoritmen skal naturligvis tage højde for at ordene mellem {} kan være fra 2 ->??? samt at der kan være mange ord der skal spinne..

Jeg er ikke interesseret i et program der kan den slags, men selve proceduren for hvordan jeg skal skrive koden.

 

Fra Søborg
Tilmeldt 31. Dec 05
Indlæg ialt: 88
Skrevet kl. 13:26
Hvor mange stjerner giver du? :

jeg ville gøre noget ligende;

Klip teksten ud i elementer, for hver gang du møder en macro - som følgende:

Element1 = "{han|hun} kører "
Element2 = "{bil|cykel} bliver til sætningerne som"
Element3....

Element strukturen ser således ud:
struct Element {
  string[] macros; .// fx. {Han|Hun}
  string Text; // fx. Køre
 
  Element nextElement;
}
og lig elementerne i en linked liste.

Derefter kan du rekusivt kalde en metode:

string ResolveText( Element ele ) {
  if( ele == null ) return "";

  forearch( macroText in ele.macros ) {
    return macroText + ele.Text + ResolveText(ele.nextElement);
  }
}


Hvis du har rigtig meget tekst/macroer, kan man lave en trådet løsning også men den er lidt mere kompleks at beskrive...

Det var midt bud, Cheers Frank

Fra Helsingborg
Tilmeldt 3. Apr 05
Indlæg ialt: 6555
Fra  TextReactor Skrevet kl. 13:34
Hvor mange stjerner giver du? :

Hej Frank

Det er helt sikkert noget jeg vil prøve.... gad vide om det er så nemt?

Fra Helsingborg
Tilmeldt 3. Apr 05
Indlæg ialt: 6555
Fra  TextReactor Skrevet kl. 06:40
Hvor mange stjerner giver du? :

Nårh.... det gik ikke. Men jeg kan så sige at jeg fik det løst ved at lave en tabel for hver tekstblok. Alle tabellerne selected i en cross join og vupti.... så har jeg alle rækkerne der skal bruges.

ikke kønt, men det virker :)

 

Fra Søborg
Tilmeldt 31. Dec 05
Indlæg ialt: 88
Skrevet kl. 10:10
Hvor mange stjerner giver du? :

Ok, lyder lidt voldsomt med det tabel halløjsa. Nå men der gik jo lidt sport i opgaven, og jeg kan godt se at jeg var lidt hurtig ude. Så jeg har lavet en løsning med den oprindelige model:

 

    private class MACROElement
    {
      public string[] macros;
      public string text;
      public MACROElement nextElement;

      public MACROElement(string[] macros, string text, MACROElement nextElement)
      {
        this.macros = macros;
        this.text = text;
        this.nextElement = nextElement;
      }
    }

    private static StringBuilder ResolveMacros(MACROElement root, StringBuilder buffer, string text)
    {
      if (root != null)
      {
        foreach (string macro in root.macros)
        {
          string elementText = string.Concat(text, string.Concat(macro, root.text));
          ResolveMacros(root.nextElement, buffer, elementText);
        }
      }
      else
      {
        buffer.AppendLine(text);
      }

      return buffer;
    }

    private static void ResolveMacros()
    {
      MACROElement root = new MACROElement(new[] { "Han", "Hun" }, " kører ",
                                           new MACROElement(new[] { "bil", "cykel" }, ", bliver til sætningerne som ",
                                                            new MACROElement(new[] { "passer" }, " sammen.", null)));

      Console.WriteLine(ResolveMacros(root, new StringBuilder(), string.Empty));
    }

Så mit skud var ikke langt fra at ramme målet...

 

Cheers Frank

Fra Helsingborg
Tilmeldt 3. Apr 05
Indlæg ialt: 6555
Fra  TextReactor Skrevet kl. 10:22
Hvor mange stjerner giver du? :

Frank Nielsen:

Ok, lyder lidt voldsomt med det tabel halløjsa.

[snip]

Så mit skud var ikke langt fra at ramme målet...

Tak for det. Det vil jeg kigge nærmere på  :)

Men godt ramt alligevel.... skønt at jeg kan komme videre nu. Det er så irriterende når man er spærret på den måde :(

 

Side 1 ud af 1 (6 indlæg)