Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
			
		
		
			
				
								Thorsten1867 							 
									
		Beiträge:  1360  		Registriert:  04.02.2005 15:40 		
		
											Computerausstattung:  [Windows 10 x64] [PB V5.7x] 
																						Wohnort:  Kaufbeuren 
							
							
				Kontaktdaten: 
				
			 
				
		 
		
						
						
						 
			 
													
							
						
									
						Beitrag 
					 
								von Thorsten1867   »  03.05.2009 19:10 
			
			
			
			
			Little John hat geschrieben: Das selbe Problem z.B. bei
Holz - ti - sch
Aber komisch ist -- zumindest für mich, der ich mich mit dem zu Grunde liegenden Algorithmus nicht beschäftigt habe -- dass
Tisch
richtigerweise nicht getrennt wird.
Die Pattern stammen nicht von mir, sondern gehören zum Algorithmus.
Zusammengesetzte Wörter sollen teilweise Schwierigkeiten machen. Man muss dafür wohl eine Ausnahmeliste erstellen.
[Edit]Problem gefunden! Wortende wurde nicht als solches erkannt.[/Edit]
 
			
			
									
									Download  of  PureBasic - Module 
Download  of  PureBasic - Programmes 
[Windows 11 x64] [PB V6]
 
						 
		 
				
		
		 
	 
				
			
		
		
			
				
								Thorsten1867 							 
									
		Beiträge:  1360  		Registriert:  04.02.2005 15:40 		
		
											Computerausstattung:  [Windows 10 x64] [PB V5.7x] 
																						Wohnort:  Kaufbeuren 
							
							
				Kontaktdaten: 
				
			 
				
		 
		
						
						
						 
			 
													
							
						
									
						Beitrag 
					 
								von Thorsten1867   »  04.05.2009 18:23 
			
			
			
			
			Optimierter und fehlerbereinigter Code:
Code: Alles auswählen 
;/ Silbentrennung
;/ Algorithmus von Frankling Mark Liang (1983)
;/ basierend "hyphenator für HTML" (Mathias Nater, Zürich)
;/ Mai 2009 Thorsten Hoeppner (Thorsten1867)
Structure HyphenStructure
  chars.s
  pattern.s
EndStructure
Global NewList HyphPattern.HyphenStructure()
Procedure LoadPattern(PatternFile.s)
  ClearList(HyphPattern())
  If ReadFile(0, PatternFile.s)
    While Eof(0) = 0 
      pattern$ = Trim(ReadString(0,#PB_UTF8))
      AddElement(HyphPattern())
      HyphPattern()\chars = StringField(pattern$,1,":")
      HyphPattern()\pattern = StringField(pattern$,2,":")
    Wend 
    CloseFile(0)
  Else
    MessageRequester("Lade Trennungsmuster", "Datei konnte nicht eingelesen werden.", 0)
  EndIf
EndProcedure
Procedure.s InsertString(string.s, idx.b, chars.s)
  If idx > 1
    result.s = Left(string, idx-1)+chars+Mid(string, idx)
  ElseIf idx >= Len(string)
    result.s = string + chars
  Else
    result.s = chars + string
  EndIf
  ProcedureReturn result
EndProcedure
Procedure.s HyphenateWord(wort.s)
  Define.b WLen, WIdx
  Define.s Char, LWort
  
  wort = "_"+wort+"_"
  LWort = LCase(wort)
  WLen = Len(wort)
  Dim Hypos.s(WLen)
  
  ForEach HyphPattern() ; Pattern auswerten
    WortIdx = FindString(LWort, HyphPattern()\chars, 1)
    If WortIdx
      digits = 1
      For i=1 To Len(HyphPattern()\pattern)
        Char.s = Mid(HyphPattern()\pattern, i, 1)
        If Asc(Char) >= 48 And Asc(Char) <= 57 ; Ist Zahl (0-9)
          If i = 1
            z = WortIdx
          Else
            z = WortIdx + i - digits
          EndIf
          If Not Hypos(z) Or Hypos(z) < Char ; kleinere Zahl überschreiben
            Hypos(z) = Char
          EndIf
          digits + 1
        EndIf
      Next
      Debug "Pattern: "+HyphPattern()\pattern+" ("+Str(WortIdx)+")"
    EndIf
  Next
  inserted.b = 0 ; Trennmuster erzeugen
  For i = 3 To WLen-2
    If Val(Hypos(i))
      wort = InsertString(wort, i + inserted, Hypos(i))
      inserted + 1
    EndIf
  Next  ;}
  
  wort.s = RemoveString(wort, "_") ; Wortanfang/-ende entfernen
  Debug "Trennmuster: "+wort
  For i = 1 To 9 ; Trennstellen ermitteln (ungerade Zahlen)
    If (i % 2) ; Trennstelle
      wort = ReplaceString(wort, Str(i), "|")
    Else ; keine Trennstelle
      wort = RemoveString(wort, Str(i))
    EndIf
  Next
  ProcedureReturn wort
EndProcedure
LoadPattern("HyphenPattern.de")
wort$ =  InputRequester("Silbentrennung", "Wort eingeben:", "")
result$ = HyphenateWord(wort$)
MessageRequester("Silbentrennung", ReplaceString(result$, "|", " - "), #MB_OK) 
Sourecode + Hyphenation Patterns  
			
			
													
					Zuletzt geändert von 
Thorsten1867  am 05.05.2009 22:15, insgesamt 1-mal geändert.
									
 
			
									Download  of  PureBasic - Module 
Download  of  PureBasic - Programmes 
[Windows 11 x64] [PB V6]
 
						 
		 
				
		
		 
	 
	
						
		
		
			
				
								Kiffi 							 
									
		Beiträge:  10715  		Registriert:  08.09.2004 08:21 		
		
											Wohnort:  Amphibios 9 
							
						
		 
		
						
						
						 
			 
													
							
						
									
						Beitrag 
					 
								von Kiffi   »  04.05.2009 20:05 
			
			
			
			
			Thorsten1867 hat geschrieben: Optimierter und fehlerbereinigter Code:
Super, vielen Dank! 
 
Grüße ... Kiffi
 
			
			
									
									a²+b²=mc²
						 
		 
				
		
		 
	 
	
						
		
		
			
				
																			
								Andesdaf 							 
						Moderator 			
		Beiträge:  2673  		Registriert:  15.06.2008 18:22 		
		
											Wohnort:  Dresden 
							
						
		 
		
						
						
						 
			 
													
							
						
									
						Beitrag 
					 
								von Andesdaf   »  05.05.2009 16:29 
			
			
			
			
			ich schließe mich Kiffi an  
 
			
			
									
									Win11 x64 | PB 6.20
						 
		 
				
		
		 
	 
	
						
		
		
			
				
								Bagalut 							 
									
		Beiträge:  9  		Registriert:  29.04.2009 17:42 		
		
						
						
		 
		
						
						
													
							
						
									
						Beitrag 
					 
								von Bagalut   »  05.05.2009 17:39 
			
			
			
			
			Andesdaf hat geschrieben: ich schließe mich Kiffi an  
Ich auch! Danke!  
 
			
			
									
									
						 
		 
				
		
		 
	 
	
						
		
		
			
				
																			
								Little John  							 
									
						
		
						
						
		 
		
						
						
						 
			 
													
							
						
									
						Beitrag 
					 
								von Little John   »  05.05.2009 17:41 
			
			
			
			
			Ich schließe mich Andesdaf an. 
Beeindruckend!
Gruß, Little John
 
			
			
									
									
						 
		 
				
		
		 
	 
	
						
		
		
			
				
																			
								c4s 							 
									
		Beiträge:  1235  		Registriert:  19.09.2007 22:18 		
		
						
						
		 
		
						
						
						 
			 
													
							
						
									
						Beitrag 
					 
								von c4s   »  05.05.2009 19:47 
			
			
			
			
			Danke!
Aber was ist z.B. hiermit:
fußballspieltorwart -> fuß - ball - spieltor - wart
"Spiel" und "Tor" müssten doch ebenfalls getrennt werden?!
 
			
			
									
									"
Menschenskinder, das Niveau dieses Forums singt schon wieder! " — 
GronkhLP  ||| "
ich hogffe ihr könnt den fehle endecken " — 
Marvin133  ||| "
Ideoten gibts ... " — 
computerfreak  ||| "
Jup, danke. Gruss " — 
funkheld  
						 
		 
				
		
		 
	 
	
						
		
		
			
				
																			
								Little John  							 
									
						
		
						
						
		 
		
						
						
						 
			 
													
							
						
									
						Beitrag 
					 
								von Little John   »  05.05.2009 20:36 
			
			
			
			
			c4s hat geschrieben: Danke!
Aber was ist z.B. hiermit:
fußballspieltorwart -> fuß - ball - spieltor - wart
"Spiel" und "Tor" müssten doch ebenfalls getrennt werden?!
Das Wort
fußballspieltorwart
habe ich weder je gehört noch im Duden gefunden. Erwartest Du, dass das Programm jedes ausgedachte Wort trennen kann?
Die Wörter
Fußballspiel 
Fußballspieler 
Fußballspielerin 
Fußballtor 
Fußballtorwart
werden jedenfalls alle korrekt getrennt.
Gruß, Little John
 
			
			
									
									
						 
		 
				
		
		 
	 
	
						
		
		
			
				
																			
								c4s 							 
									
		Beiträge:  1235  		Registriert:  19.09.2007 22:18 		
		
						
						
		 
		
						
						
						 
			 
													
							
						
									
						Beitrag 
					 
								von c4s   »  05.05.2009 21:21 
			
			
			
			
			So ganz zufrieden bin ich dennoch nicht:
Heizöl -> Hei - zöl 
Schifffahrt -> Schif - f- fahrt
Aber hast ja recht 
 
			
			
									
									"
Menschenskinder, das Niveau dieses Forums singt schon wieder! " — 
GronkhLP  ||| "
ich hogffe ihr könnt den fehle endecken " — 
Marvin133  ||| "
Ideoten gibts ... " — 
computerfreak  ||| "
Jup, danke. Gruss " — 
funkheld  
						 
		 
				
		
		 
	 
	
						
		
		
			
				
								Thorsten1867 							 
									
		Beiträge:  1360  		Registriert:  04.02.2005 15:40 		
		
											Computerausstattung:  [Windows 10 x64] [PB V5.7x] 
																						Wohnort:  Kaufbeuren 
							
							
				Kontaktdaten: 
				
			 
				
		 
		
						
						
						 
			 
													
							
						
									
						Beitrag 
					 
								von Thorsten1867   »  05.05.2009 21:47 
			
			
			
			
			Zusammengesetzte Namenwörter können evtl. Probleme machen, da es sich um einen Algorithmus und nicht um eine Wörterliste handelt. 
Für solche Fälle muss eine Ausnahmeliste angelegt werden. 
 
Ich empfehle zu dem Thema Trennproblematik die Artikeln zur Silbentrennung (siehe Beitrag weiter oben) zu lesen. 
 
Der "Schifffahrt" und der "Balletttänzerin" kann man abhelfen. Füge folgende Pattern in die Pattern-Datei ein: 
fff:f6f9f 
ttt:t6t9t 
[Edit]In der neuen Patterndatei schon enthalten.[/Edit]
			
			
													
					Zuletzt geändert von 
Thorsten1867  am 06.05.2009 15:45, insgesamt 1-mal geändert.
									
 
			
									Download  of  PureBasic - Module 
Download  of  PureBasic - Programmes 
[Windows 11 x64] [PB V6]