BPS #21: Strings attached - Auswertung
Übersicht

![]() |
XeresModeratorBetreff: BPS #21: Strings attached - Auswertung |
![]() Antworten mit Zitat ![]() |
---|---|---|
Legt Schere und Kleber nieder und zeigt, was ihr mit den Strings angestellt habt!
Das war die Aufgabe Postet hier eure Ergebnisse, Codes, Gedanken. Lernt von den anderen, seht euch deren Quelltext an und versucht euren eigenen zu verbessern. Diskussion Postet zu euren Codes stets eine kurze Erklärung mit euren Gedanken in denen ihr simpel gesagt die Frage "Wieso habe ich XY auf diese Art gelöst?" beantwortet. Beiträge, die nur den Code enthalten werden wir aus dem Thread entfernen. Nächste Aufgabe In einer Woche wird die Musterlösung nach editiert und in 2 die nächste Aufgabe eingestellt. Viel Spaß & viel Erfolg! Musterlösung: BlitzBasic: [AUSKLAPPEN] Local Source$ = "Wozu sollte man das brauchen?" |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
- Zuletzt bearbeitet von Xeres am So, Jul 08, 2012 13:56, insgesamt 2-mal bearbeitet
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Beim String umdrehen habe ich eine For Schleife gebastelt und mittels Step![]() Die Zeichen zu zählen war ein einfacher durchlauf mittels Mid ![]() Ich habe hier bewusst nicht Instr ![]() Beim Palindrom check habe ich zuerst geschaut ob der String eine gerade Anzahl von Zeichen hat, danach von dem ersten Zeichen bis zur mitte und von der Mitte bis zum letzen Zeichen in einzelne Strings gepackt. Nun den zweiten mit meiner Umdreh funktion gedreht und beide Strings verglichen. Beim Anagramm habe ich eine Quersumme aller ASCII Werte der Buchstaben erstellt, und diese dann verglichen ![]() BlitzBasic: [AUSKLAPPEN] While 1 Nachtrag : ![]() ![]() |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
- Zuletzt bearbeitet von ozzi789 am So, Jun 24, 2012 17:44, insgesamt einmal bearbeitet
![]() |
SpionAtomBetreff: Meine Lösung |
![]() Antworten mit Zitat ![]() |
---|---|---|
Da hat sich noch ein paarmal der Fehlerteufel eingeschlichen, Ozzi.
Wenn du mit mid ![]() Außerdem ist es für ein Palindrom nicht notwendig, aus einer geraden Anzahl von Zeichen zu bestehen: "Radar" ist doch ein klasse Palindrom! Code: [AUSKLAPPEN] Local meinString$ = "Wozu sollte man das brauchen?" Local meinString_A$ = "Dormitory", meinString_B$ = "Dirty Room" Local meinString_P$ = "Die Liebe ist Sieger; stets rege ist sie bei Leid." Print "Original: " + meinString Print "Rückwärts: " + invertString(meinString) Print "Leerzeichen: " + countChars(" ", meinString) Print "Fragezeichen: " + countChars("?", meinString) Print "Ist '" + meinString_A + "' ein Anagramm von '" + meinString_B + "'?" If isAnagram(meinString_A, meinString_B) Then Print "Ja sicher dat" Else Print "Nönö" End If Print "Ist '" + meinString_P + "' ein Palindrom?" If isPalindrome(meinString_P) Then Print "Ja sicher dat" Else Print "Nönö" End If WaitKey End ;Diese Funktion dreht einen Text um. ;Um das zu erreichen wird von hinten angefangen jedes Zeichen ;in einen neuen String angehängt Function invertString$(txt$) Local i, output$ = "", l = Len(txt) For i = l To 1 Step -1 output = output + Mid(txt, i, 1) Next Return output End Function ;Diese Funktion zählt die Anzahl eines bestimmten Zeichens in ;einem String. ;Dazu wird in einer Schleife jedes Zeichen angeschaut und mit ;dem gesuchten Zeichen verglichen. Function countChars(char$, txt$) Local i, count = 0, l = Len(txt) For i = 1 To l If Mid(txt, i, 1) = char Then count = count + 1 Next Return count End Function ;Prüft, ob zwei Strings buchstabendeckungsgleich sind :D. Function isAnagram(txt_a$, txt_b$) ;Zunächst werden die Buchstaben alle in Großbuchstaben gesetzt, ;damit die Prüfung unabhängig davon wird. Außerdem werden Nicht- ;Buchstaben gelöscht. txt_a = cleanLetterString(Upper(txt_a)) txt_b = cleanLetterString(Upper(txt_b)) Local l = Len(txt_a), i, char$, checked_chars$ = "" For i = 1 To l char$ = Mid(txt_a, i, 1) ;Geprüft werden sollen nur die Buchstaben, die nicht schon ;geprüft wurden. Buchstaben, die schon geprüft wurden, werden ;in den String checked_chars geschrieben. If countChars(char, checked_chars) = 0 Then If countChars(char, txt_a) <> countChars(char, txt_b) Then Return False Else checked_chars = checked_chars + char End If End If Next Return True End Function ;Prüft, ob ein String ein Palindrom. Dies ist genau dann der Fall, wenn ;das Wort rückwärts genau wieder das Wort ergibt. Function isPalindrome(txt$) txt = Upper(cleanLetterString(txt)) Return txt = invertString(txt) End Function ;Säubert einen String, sodass nur die Buchstaben übrigbleiben. ;Dazu wird jedes Zeichen auf seinen Ascii-Wert überprüft. ;Befindet sich dieser Wert in einem bestimmten Bereich, so ;handelt es sich bei dem Zeichen um einen Buchstaben Function cleanLetterString$(txt$) Local a, i, output$ = "", l = Len(txt), char$ For i = 1 To l char = Mid(txt, i, 1) a = Asc(char) ; (Großbuchstaben ) (Kleinbuchstaben ) If (a >= 65 And a <= 90) Or (a >= 97 And a <= 122) Then output = output + char End If Next Return output End Function |
||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
![]() |
KnorxThieus |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hier mein Werk:
BlitzBasic: [AUSKLAPPEN] Global inp$ Bitte verzeiht mein Englisch! ![]() Tschüüüß! |
||
Version: BlitzPlus / Blitz+ |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich muss aber auch drauf hinweisen dass die Quersumme kein sicheres Zeichen für ein Anagramm ist.
ABD hat die gleiche Quersumme wie BBC, aber ein Anagramm ist es deswegen nicht ![]() |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group