AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

String unter Haskell bearbeiten

Ein Thema von GLaforge · begonnen am 11. Jan 2006 · letzter Beitrag vom 14. Jan 2006
Antwort Antwort
Benutzerbild von GLaforge
GLaforge

Registriert seit: 16. Nov 2003
Ort: Halle
106 Beiträge
 
Delphi 6 Enterprise
 
#1

String unter Haskell bearbeiten

  Alt 11. Jan 2006, 19:32
Hi,
habe folgendes Problem. Ich studiere Informatik (1.Semester) und wir benutzen die funktionale Programmiersprache Haskell (bzw.Helium). Ich muss gestehen, dass ich mit Delphi mehr anfangen kann als mit Haskell jedoch muss man da beim Studium durch. Nun zu meinem Problem. Ich soll ein Eingabewort (Typ String) bearbeiten. Es handelt sich dabei um eine sehr simple Verschlüsselung. Sie funktioniert wie folgt. An gerader Position eines Zeichen im Wort soll dieses um 1 verringert (über ord Zeichen liefert Ascii-Wert) an ungerader um 1 erhöht werden. Mir ist soweit alles bekannt nur weis ich nicht wie ich im String eine ungerade und ungerade Position unter Haskell ermittle.
Zur Erklärung: Die Positionen in einer Zeichenkette werden mit 0 beginnend von links durchnummeriert,
d.h. das erste Zeichen in einer Zeichenkette (eines Wortes) besitzt die Position 0.
Ich wäre sehr dankbar, wenn sich einer meldet der Ahnung von Haskell hat.
Vielen dank schonmal.
Cogito ergo sum - Ich denke also bin Ich
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#2

Re: String unter Haskell bearbeiten

  Alt 11. Jan 2006, 19:38
gibt es nicht sowas wie mod?
oder direkt Odd()?

Also ich habe keine Ahnung von Haskell, aber sowas wird es ja wohl geben, hoffe ich ^^

Die Umwandlung Char->Int->Char scheint ja nicht das Problem zu sein...

und dann is der Code relativ simpel:
Delphi-Quellcode:
for i:=0 to Length(Input)-1 do
  if i mod 2 =0 then
    Input[i]:=Chr(Ord(Input[i])-1)
  else
    Input[i]:=Chr(Ord(Input[i])+1);
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Benutzerbild von GLaforge
GLaforge

Registriert seit: 16. Nov 2003
Ort: Halle
106 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: String unter Haskell bearbeiten

  Alt 11. Jan 2006, 19:47
die idee über length zu gehen hatte ich auch, das Problem length verlangt eine liste und keinen string. Man könnte es konvertieren aber aus meiner sicht zu aufwendig. Aber was ist ODD - kenn ich garnicht. Ich weis, dass das Problem sehr speziell ist und eigentlich auch nur jemand beantworten kann der Info o.ä studiert, da die funktionalen Programmiersprachen im Alltag eher eine untergeordnete Rolle spielen.
Cogito ergo sum - Ich denke also bin Ich
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#4

Re: String unter Haskell bearbeiten

  Alt 11. Jan 2006, 19:52
Zitat von GLaforge:
die idee über length zu gehen hatte ich auch, das Problem length verlangt eine liste und keinen string. Man könnte es konvertieren aber aus meiner sicht zu aufwendig. Aber was ist ODD - kenn ich garnicht. Ich weis, dass das Problem sehr speziell ist und eigentlich auch nur jemand beantworten kann der Info o.ä studiert, da die funktionalen Programmiersprachen im Alltag eher eine untergeordnete Rolle spielen.
Also ich habe mich grade mal an dem ersten Kapitel eines Haskell-Tutorials versucht. Rein aus Interesse da ich von dieser Sprache zwar schon mal was gehört hatte, aber keine Ahnung hatte wie die in etwa aussieht.
Ich verstehe eigentlich nichts.
Von daher kann ich dir bei dem String/Listen Problem (vielleicht bisher *die hoffnung stirbt zuletzt*) nicht helfen...

Odd ist in Pascal eine Funktion, welche Überprüft ob die gegebene Zahl gerade (oder ungerade?) ist.
Quellcode wahrscheinlich wie folgt:
Delphi-Quellcode:
function Odd(Val: Integer):Boolean;
begin
  Result:=(Val mod 2)=0; //oder eben ...=1;
end;
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Benutzerbild von GLaforge
GLaforge

Registriert seit: 16. Nov 2003
Ort: Halle
106 Beiträge
 
Delphi 6 Enterprise
 
#5

Re: String unter Haskell bearbeiten

  Alt 11. Jan 2006, 19:58
Hab gerade die Funktion Odd auch bei Haskell entdeckt, habe aber immernoch das Problem dass ich nicht weiss an welcher Position den Code sich gerade befindet. Dank dir dennoch für deine Mühen, und bitte verschwende deine wertvolle Zeit nicht dür Haskell Es hilft ein wirklich erst im Studium, da unter Haskell sehr streng auf Typtreue etc. Wert gelegt wird.
Cogito ergo sum - Ich denke also bin Ich
  Mit Zitat antworten Zitat
tigerman33

Registriert seit: 30. Jul 2005
Ort: München
423 Beiträge
 
Delphi 2005 Professional
 
#6

Re: String unter Haskell bearbeiten

  Alt 11. Jan 2006, 20:19
Das erste was mir dazu einfällt wäre der rekursive Ansatz:
Code:
versch :: String -> String
versch "" = ""
versch s = versch' 0 s
  where versch' :: Int -> String -> String
        versch' _ [] = ""
        versch' a (s:ss) = if a `mod` 2 == 0 then
                             (chr(ord(s) - 1)):versch' (a+1) ss else
                             (chr(ord(s) + 1)):versch' (a+1) ss
Aber mit ein bisschen mehr Denkarbeit ließe sich da sicher auch mit Listenkomprehension was machen.

//edit:
Oh, hab genau umgekehrt verschlüsselt. Behoben.
Christian
Der Computer hilft mir, Probleme zu lösen, die ich ohne Computer nicht hätte.
  Mit Zitat antworten Zitat
tigerman33

Registriert seit: 30. Jul 2005
Ort: München
423 Beiträge
 
Delphi 2005 Professional
 
#7

Re: String unter Haskell bearbeiten

  Alt 14. Jan 2006, 09:30
Mir war mal ein bisschen langweilig, also hier jetzt auch noch der Ansatz mit Listenkomprehension:
Code:
versch s = [chr(ord(s!!x) + delta(x))|x<-[0..(length s) - 1]]
  where delta x
          | even x = -1
          | otherwise = 1
Christian
Der Computer hilft mir, Probleme zu lösen, die ich ohne Computer nicht hätte.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz