Kontrabass (Zeichenketten)
Und jetzt alle:
Gut, in der Schweiz ist die Melodie vielleicht eine andere, aber hier geht es allein um das Sprachspiel.
Das Lied soll in den einzelnen Strophen mit nur einem Vokal oder einem Diphtong (einem Doppellaut) gesungen werden.
Der Original-Text lautet:
Drei Chinesen mit dem
Kontrabass
saßen auf der Straße und erzählten sich was.
Da kam die
Polizei, fragt: „Was ist denn das?“
Drei Chinesen mit dem Kontrabass.
Beispiel 1: Die Strophe mit »A«:
Dra Chanasan mat dam Kantrabass
saßen af dar Straßa and arzahlten sach
was.
Da kam da Palaza, fragt: „Was ast dann das?“
Dra Chanasan mat dam
Kantrabass.
Beispiel 2: mit »Ö«:
Drö Chönösön möt döm Köntröböss
sößön öf dör Strößö önd örzöhltön söch
wös.
Dö köm dö Pölözö, frögt: „Wös öst dönn dös?“
Drö Chönösön möt döm
Köntröböss.
Beispiel 3: Mit Diphthong »AU«:
Drau Chaunausaun maut daum
Kauntraubauss
saußaun auf daur Straußau aund aurzaultaun sauch waus.
Dau kaum dau Paulauzau, fraugt: „Waus aust daunn daus?“
Drau Chaunausaun
maut daum Kauntraubauss.
Zur Aufgabe:
Verfassen Sie eine Routine, die einen Vokal oder Diphthong entgegennimmt, und
die entsprechende Strophe mit nur diesem Laut als Strophe ausgibt.
Beachten Sie hierbei, dass Diphthonge lang sind, und kein folgendes »h«
benötigen; daher sollte das »erzählten« des Textes bei Eingabe eines
Dipthongs »eirzeiltein/aurzaultaun/eurzeulteun« ausgeben, nicht aber
»eirzeihltein/aurzauhltaun/eurzeuhlteun«.
Erlaubte Vokale seien: a, e, i, o, u, ä, ö, ü sowie die
Diphtonge au, ei und eu.
In allen anderen Fällen (bei fehlerhafter Eingabe) soll die Routine als
Standard den Original-Text ausgeben.
- Noten: © Bottomline~commonswiki (Creative Commons Attribution-Share Alike 3.0 Unported)
- Wikipedia-Artikel
- Beispiel (als Video)
0 Kommentare
12 Lösung(en)
//gleich mal noch bisschen über regexp gelernt ^^
alert( replace("ei") )
function replace(vokal) {
Lied = 'Drei Chinesen mit dem Kontrabass\nsaßen auf der Straße und erzählten sich etwas.\nDa kam die Polizei, fragt: "Was ist denn das?"\nDrei Chinesen mit dem Kontrabass\n'
vokale = "eu|au|ei|ie|a|e|i|o|u|ä|ö|ü"
if( vokale.indexOf(vokal) >- 1 )
Lied = Lied.replace( RegExp(vokale ,"g"), vokal )
Lied = Lied.replace( RegExp("euh|auh|eih|ieh","g"), vokal )
return Lied
}
Lösung von: Alex Dev (Symbroson)
//ist eigentlich universell anwendbar
import re
def replace(vokal):
Lied = 'Drei Chinesen mit dem Kontrabass\nsaßen auf der Straße und erzählten sich etwas.\nDa kam die Polizei, fragt: "Was ist denn das?"\nDrei Chinesen mit dem Kontrabass\n'
vokale = "eu|au|ei|ie|a|e|i|o|u|ä|ö|ü"
if( vokale.find(vokal) > -1 ):
Lied = re.sub( vokale, vokal, Lied )
Lied = re.sub( "euh|auh|eih|ieh", vokal, Lied )
return Lied
print( replace( input("Vokal: ") ) )
Lösung von: Alex Dev (Symbroson)
import java.awt.List;
import java.util.ArrayList;
import java.util.Scanner;
public class Kontrabass {
public static void main(String[] args) {
char x = ' ';
ArrayList<String> worte = new ArrayList<String>();
int alZaehler = 0;
System.out.println("Bitte Text eingeben!");
// Aufforderung zur Texteingabe, wartet auf '#' als Ende des Textes
while (x != '#') {
String urSprungTextToChar;
Scanner urSprung = new Scanner(System.in);
urSprungTextToChar = urSprung.nextLine();
char[] kontrollBuchstabe = urSprungTextToChar.toCharArray();
String wortUmgewandelt = "";
// Den eingegebenen Text zerlegen, aendern und wieder
// zusammenstellen
for (int a = 0; a <= kontrollBuchstabe.length - 1; a++) {
// Kontrolle auf Vokale
switch (kontrollBuchstabe[a]) {
case 'e':
kontrollBuchstabe[a] = 'a';
wortUmgewandelt = wortUmgewandelt + kontrollBuchstabe[a];
break;
case 'E':
kontrollBuchstabe[a] = 'A';
wortUmgewandelt = wortUmgewandelt + kontrollBuchstabe[a];
break;
case 'i':
kontrollBuchstabe[a] = 'a';
wortUmgewandelt = wortUmgewandelt + kontrollBuchstabe[a];
break;
case 'I':
kontrollBuchstabe[a] = 'A';
wortUmgewandelt = wortUmgewandelt + kontrollBuchstabe[a];
break;
case 'o':
kontrollBuchstabe[a] = 'a';
wortUmgewandelt = wortUmgewandelt + kontrollBuchstabe[a];
break;
case 'O':
kontrollBuchstabe[a] = 'A';
wortUmgewandelt = wortUmgewandelt + kontrollBuchstabe[a];
break;
case 'u':
kontrollBuchstabe[a] = 'a';
wortUmgewandelt = wortUmgewandelt + kontrollBuchstabe[a];
break;
case 'U':
kontrollBuchstabe[a] = 'A';
wortUmgewandelt = wortUmgewandelt + kontrollBuchstabe[a];
break;
default:
wortUmgewandelt = wortUmgewandelt + kontrollBuchstabe[a];
}
}
// Array mit dem geaenderten Text erstellen
worte.add(wortUmgewandelt);
x = kontrollBuchstabe[kontrollBuchstabe.length - 1];
}
// Ausgabe des geaenderten Textes
System.out.println(worte.size());
for (alZaehler = 0; alZaehler < worte.size(); alZaehler++) {
System.out.println(worte.get(alZaehler));
}
}
}
Lösung von: Alex Mahlknecht (Privater Unterricht)
import sys
vokale = ["a", "e", "i", "o", "u", "A", "E" , "I", "O", "U", "au", "ei", "eu", "ä", "ö", "ü"] # Alle erlaubten Zeichen in einer Liste
ersetzen = ["a", "e", "i", "o", "u", "A", "E" , "I", "O", "U"] #Zu ersetzende Buchstaben
lied = 'Drei Chinesen mit dem Kontrabass saßen auf der Straße und erzählten sich was. Da kam die Polizei, fragt: „Was ist denn das?“ Drei Chinesen mit dem Kontrabass.' #Das normale Lied
neueslied = '' #Das spätere neue Lied
eingabe = input ("Welchen Vokal/Diphtong möchten sie nutzen? ") #Wahl des Vokals/Diphtongs
if eingabe in vokale: #Wenn die Eingabe ein valides Zeichen ist..
for char in lied: #Für jeden Buchstaben im Lied
if char in ersetzen: #Wenn der nächste Buchstabe ein Vokal ist...
if notnext == 0: #Siehe übernächste Zeile
neueslied = neueslied + eingabe #Füge den eingegebenen Vokal dem neuen Lied hinzu
notnext = 1 #Zähler um zu verhindern, dass aus "Drei" "Dreueu" wird, so wird immer nur ein Vokal nacheinander ersetzt
else: #Wenn der nächste Buchstabe KEIN Vokal ist...
neueslied = neueslied + char #Füge dem neuen Lied den Buchstaben aus dem alten Lied hinzu
notnext = 0 #Setze den Zähler zurück
else: #Wenn die Benutzereingabe nich valid ist...
print("Nicht valide Eingabe, valid sind: " + str(vokale)) #Informiere den Benutzer, dass er einen falschen Buchstaben eingegeben hat, zeige welche Buchstaben valid sind
print(lied) #Gib das alte Lied aus
sys.exit(1) #Beende das Programm
print(neueslied) #Gib das neue Lied aus
sys.exit(0) #Beende das Programm
Lösung von: Patrick L. (Gymnasium Friedrich II)
'30.5.2017 - PowerBasic 10
#COMPILE EXE
#DIM ALL
FUNCTION PBMAIN () AS LONG
DIM Lied AS STRING
DIM Vokale(10) AS STRING
DIM Ersetzen AS STRING
DIM x AS LONG
ARRAY ASSIGN Vokale() = "a","e","i","o","u","ä","ö","ü","au","ei","eu"
Ersetzen = LCASE$(INPUTBOX$("Bitte Vokal angeben:" & $CRLF & "(oder Diphthong: au/ei/eu)","Kontrabass"))
IF LEN(TRIM$(Ersetzen)) THEN
Lied = "Drei Chinesen mit dem Kontrabass" & $CRLF & _
"saßen auf der Straße und erzählten sich was." & $CRLF & _
"Da kam die Polizei, fragt: „Was ist denn das?“" & $CRLF & _
"Drei Chinesen mit dem Kontrabass."
ARRAY SCAN Vokale(), = Ersetzen, TO x
IF x THEN
REPLACE ANY "aeiouäöü" WITH "||||||||" IN Lied
REPLACE "||" WITH Ersetzen IN Lied
REPLACE "|" WITH Ersetzen IN Lied
IF LEN(Ersetzen) > 1 THEN
REPLACE Ersetzen & "h" WITH Ersetzen IN Lied
END IF
MSGBOX Lied,,EXE.NAME$
ELSE
MSGBOX Lied,,EXE.NAME$
END IF
END IF 'Len(Ersetzen)
END FUNCTION
Lösung von: Markus Sägesser (keine)
'30.5.2017 - PowerBasic 10
'Variante 2 mit Schleifen anstelle integrierter Replace-Funktion
#COMPILE EXE
#DIM ALL
FUNCTION PBMAIN () AS LONG
DIM Lied AS STRING
DIM Lied_Neu AS STRING
DIM Vokale(10) AS STRING
DIM Ersetzen AS STRING
DIM zwV AS BYTE
DIM x AS LONG
DIM i AS INTEGER
ARRAY ASSIGN Vokale() = "a","e","i","o","u","ä","ö","ü","au","ei","eu"
Ersetzen = LCASE$(INPUTBOX$("Bitte Vokal angeben:" & $CRLF & "(oder Diphthong: au/ei/eu)","Kontrabass"))
IF LEN(TRIM$(Ersetzen)) THEN
Lied = "Drei Chinesen mit dem Kontrabass" & $CRLF & _
"saßen auf der Straße und erzählten sich was." & $CRLF & _
"Da kam die Polizei, fragt: „Was ist denn das?“" & $CRLF & _
"Drei Chinesen mit dem Kontrabass."
ARRAY SCAN Vokale(), = Ersetzen, TO x
IF x THEN
FOR i = 1 TO LEN(Lied)
IF RETAIN$(MID$(Lied,i,1),ANY "aeiouäöü")=MID$(Lied,i,1) THEN
IF zwV <> 1 THEN
Lied_Neu += Ersetzen
zwV = 1
END IF 'zwV <> 1
ELSE
IF NOT(RIGHT$(Lied_Neu,2) & MID$(Lied,i,1) = Ersetzen & "h") THEN
Lied_Neu += MID$(Lied,i,1)
zwV = 0
END IF
END IF 'Retain$(Mid$...)
NEXT i
MSGBOX Lied_Neu,,EXE.NAME$ & " - " & Ersetzen
ELSE
MSGBOX Lied,,EXE.NAME$
END IF
END IF 'Len(Ersetzen)
END FUNCTION
Lösung von: Markus Sägesser (keine)
//Farben
static void ueberschrift()
{
Console.ForegroundColor = ConsoleColor.Magenta;
Console.BackgroundColor = ConsoleColor.Gray;
}
static void gruen()
{
Console.ForegroundColor = ConsoleColor.DarkGreen;
}
static void rot()
{
Console.ForegroundColor = ConsoleColor.DarkRed;
}
static void nix()
{
Console.ResetColor();
}
static void Main(string[] args)
{
ueberschrift();
Console.WriteLine("\t"+"Drei Chinesen mit nem Kontrabass"+"\n");
nix();
// Das Gedicht
string chinese = "Drei Chinesen mit nem Kontrabass saßen auf der Straße und erzählten sich was. Da kam die Polizei, fragt: Was ist denn das? Drei Chinesen mit dem Kontrabass.";
//welcher Vokal soll genutzt werden
string vokal;
do
{
gruen();
Console.Write("Durch welchen Vokal wollen Sie ersetzen? ");
vokal = Convert.ToString(Console.ReadLine());
} while (vokal != "a" && vokal != "e" && vokal != "i" && vokal != "o" && vokal != "u" && vokal != "ä" && vokal != "ö" && vokal != "ü");
//Vokale werden durch die Eingabe ersetzt
chinese = chinese.Replace("a", vokal);
chinese = chinese.Replace("e", vokal);
chinese = chinese.Replace("i", vokal);
chinese = chinese.Replace("o", vokal);
chinese = chinese.Replace("u", vokal);
chinese = chinese.Replace("ä", vokal);
chinese = chinese.Replace("ö", vokal);
chinese = chinese.Replace("ü", vokal);
chinese = chinese.Replace("ie", vokal);
chinese = chinese.Replace("ei", vokal);
chinese = chinese.Replace("auh", vokal);
chinese = chinese.Replace("euh", vokal);
chinese = chinese.Replace("eih", vokal);
chinese = chinese.Replace("ieh", vokal);
//Ausgabe des geänderten Gedichtes
Console.WriteLine();
rot();
Console.WriteLine(chinese);
}
Lösung von: Goo Muck (Uni)
# Kontrabass
# Author: Apop85
import re
strophe='''Drei Chinesen mit dem Kontrabass
sassen auf der Strasse und erzählten sich was.
Da kam die Polizei, fragt: "Was ist denn das?"
Drei Chinesen mit dem Kontrabass.'''
replace=['a','e','i','o','u','ä','ö','ü']
replace_with=['a','e','i','o','u','ä','ö','ü','au','ei','eu']
def choose_option():
options=["(1) Replace with single vocal", "(2) Replace with diphtong", "(3) Exit"]
for item in options:
print(item)
choose=int(input('Choose option: '))
if choose != "" and 0 < choose <= len(options)-1:
print('Choose letter from following list:')
replace_list=[item for item in replace_with if len(item) == choose]
for i in range(len(replace_list)):
print(str(i+1)+'. '+replace_list[i])
choose=int(input('Choice: '))
if 0 < choose <= len(replace_list):
replace_it(replace_list[choose-1])
elif choose == 3:
exit()
else:
print('Invalid option')
def replace_it(replace_with):
print(replace_with)
if len(replace_with) == 2:
search_pattern=re.compile(r'([AEIOUaeiouäöüÄÖÜ]+)([h]?)')
else:
search_pattern=re.compile(r'([AEIOUÄÖÜaeiouäöü]+)')
result=search_pattern.sub(replace_with,strophe)
print(result)
choose_option()
Lösung von: Name nicht veröffentlicht
// NET Core 3.x
namespace CS_Aufgabe_Kontrabass
{
class Program
{
static void Main()
{
var s =
"Drei Chinesen mit nem Kontrabass " +
"saßen auf der Straße und erzählten sich was." +
"Da kam die Polizei, fragt: Was ist denn das? Drei" +
"Chinesen mit dem Kontrabass.";
var v = "au";
var p = @"au|eu|ei|ie|a|e|i|o|u|ä|ö|ü";
if (p.Contains(v))
s = new Regex(@"auh|eih|euh|ieh").Replace(
new Regex(p).Replace(s, v), v);
Console.WriteLine(s);
}
}
}
Lösung von: Jens Kelm (@JKooP)
// C++ 14 | VS-2022
#include <iostream>
#include <regex>
auto get_replaced_text(const std::string& txt, const std::string& rep) {
const std::regex p1{ "au|eu|ei|ie|a|e|i|o|u|ä|ö|ü" };
const std::regex p2{ "auh|eih|euh|ieh" };
const auto r1{ std::regex_replace(txt, p1, rep) };
const auto r2{ std::regex_replace(r1, p2, rep) };
return r2;
}
int main() {
const std::string rep{ "ei" };
const std::string txt{ "Drei Chinesen mit dem Kontrabass saßen auf der Straße und erzählten sich was. Da kam die Polizei, fragt: 'Was ist denn das ?' Drei Chinesen mit dem Kontrabass." };
const auto rt{ get_replaced_text(txt, rep) };
std::locale::global(std::locale("German_germany.UTF-8"));
std::cout << rt << "\n";
}
Lösung von: Jens Kelm (@JKooP)
from re import sub as rs
v,vokale,s=input('Welcher Vokal soll genutzt werden? '),'[äöüaouieÄÖÜAOUIE]','Drei Chinesen mit dem Kontrabass \nsaßen auf der Straße und erzählten sich was.\nDa kam die Polizei, fragt: „Was ist denn das?\nDrei Chinesen mit dem Kontrabass\n'
print(rs(v+v,v,rs(vokale,v,s)) if len(v)==1 else rs(f'{v+v}|{v}+h',v,rs(vokale,v,s)))
Lösung von: rob ert (tub)
' VBA
Function GetReplacedText(txt$, rep$)
With CreateObject("VBScript.RegExp")
.Pattern = "au|eu|ei|ie|a|e|i|o|u|ä|ö|ü"
.Global = True
m$ = .Replace(txt, rep)
With CreateObject("VBScript.RegExp")
.Pattern = "auh|eih|euh|ieh"
.Global = True
GetReplacedText = .Replace(m, rep)
End With
End With
End Function
Sub Main()
Const rep$ = "ei"
Const txt$ = "Drei Chinesen mit dem Kontrabass saßen auf der Straße und erzählten sich was. Da kam die Polizei, fragt: 'Was ist denn das ?' Drei Chinesen mit dem Kontrabass."
Debug.Print GetReplacedText(txt, rep)
End Sub
Lösung von: Jens Kelm (@JKooP)
Verifikation/Checksumme:
Eingabe »A«:
Dra Chanasan mat dam Kantrabass [...] arzahlten sach was [...]
Eingabe »Ü«:
Drü Chünüsün müt düm Küntrübüss [...] ürzühltün süch wüs [...]
Eingabe »AU«:
Drau Chaunausaun maut daum Kauntraubauss [...] aurzaultaun sauch waus [...]
Keine Eingabe:
Drei Chinesen mit dem Kontrabass [...] erzählten sich was [...]
Eingabe »X«:
Drei Chinesen mit dem Kontrabass [...] erzählten sich was [...]
Aktionen
Neue Lösung hinzufügen
Bewertung
Durchschnittliche Bewertung: