BlitzQuiz - AUFLÖSUNG: Geheime Bild-Botschaften

Übersicht Sonstiges Projekte

Gehe zu Seite 1, 2, 3, 4, 5  Weiter

Neue Antwort erstellen

BlitzMoritz

Betreff: BlitzQuiz - AUFLÖSUNG: Geheime Bild-Botschaften

BeitragSo, Mai 08, 2011 17:38
Antworten mit Zitat
Benutzer-Profile anzeigen
(Das hier war) das erste Rätsel: "Zahlensysteme"

Die Zahl 140454 eines zu erratenden Zahlensystems wird zu einem Palindrom, wenn man sie in ein anderes ebenfalls zu erratendes Zahlensystem konvertiert. Wie lautet das Palindrom und um welche Zahlensysteme handelt es sich, wenn außer den Ziffern 0 bis 9 bei Bedarf außerdem noch die Großbuchstaben A bis höchstens Z erlaubt sind?

Weitere Erläuterungen:
Eine "Palindrom"-Zahl ist vorwärts und rückwärts gelesen identisch, z.B. 3077703 oder 1196911. Im täglichen Umgang mit Zahlen sind wir das Zehnersystem gewohnt, vom Computer her kennen wir z.B. auch das Zweiersystem, das nur mit Nullen und Einsen auskommt, oder das Hexadezimalsystem, welches nach den bekannten zehn Ziffern mittels der Großbuchstaben A bis F weiterzählt. Theoretisch ist jedoch jedes beliebige System mit natürlicher Basis möglich, wie etwa ein Dreier-, Siebener- oder 11er-System. Für die Aufgabenstellung ist das 36er-System das "größte" in Betracht zu ziehende Zahlensystem.

Beispiel:
Die Antwort bezüglich der alternativen Rätselzahl 1619 könnte beispielweise so aussehen:
"Die Zahl 1619 des Zehnersystems ergibt, konvertiert ins Zweiersystem, das Palindrom 11001010011."
Die Beispielzahl 1619 hätte übrigens mehrere Lösungen, bei der Aufgabenzahl 140454 existiert nur eine einzige. Ich habe übrigens darauf geachtet, dass es unseren BlitzBasic-Freunden nicht zum Nachteil gereicht, dass sie im Gegensatz zu BlitzMax nicht auf Long-Variablentypen zugreifen können.


Regeln (deren Einhaltung ich mir persönlich wünsche, die aber natürlich völlig inoffiziell sind):
Nachfragen, Problemeröterungen und Diskussionen zum möglichen Lösungsweg sind erlaubt.
Die konkrete Antwort darf erst nach einer Woche, also am 15.Mai veröffentlicht werden, damit der Rätselspaß nicht zu früh verdorben wird und noch ein paar mehr Interessenten Zeit haben, sich daran zu versuchen. Dann muss allerdings jede Antwort einen der Lösung dienlichen Quellcode enthalten.


Falls dieser Thread nicht zum Subforum "Projekte" gehören darf, dann bitte nicht trashen, sondern woandershin verschieben.
  • Zuletzt bearbeitet von BlitzMoritz am So, Jun 24, 2012 10:56, insgesamt 30-mal bearbeitet

Tennisball

BeitragSo, Mai 08, 2011 18:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
bei die Aufgabenzahl 140454 existiert nur eine einzige.


Bist du dir da 100%ig sicher? Ich finde nämlich 10 Lösungen.

mfg,
Tennisball

BlitzMoritz

BeitragSo, Mai 08, 2011 18:12
Antworten mit Zitat
Benutzer-Profile anzeigen
@Tennisball: Dann schicke sie mir bitte mal per PN

Edit.: Hab' mich beinahe verunsichern lassen und hätte 'was verraten ... Cool
  • Zuletzt bearbeitet von BlitzMoritz am Mi, Mai 18, 2011 7:40, insgesamt 4-mal bearbeitet

Tennisball

BeitragSo, Mai 08, 2011 18:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm, ich scheine mich geirrt zu haben, wie ich gerade merke. Mein Code beachtete nicht, dass es z.B. im Binärsystem keine 5 gibt. Sry!

M0rgenstern

BeitragSo, Mai 08, 2011 18:27
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Tennisball: DIe 5 ist im Binärsystem doch sogar ein Palindrom: 0110
Oder verstehe ich dich gerade falsch?

Lg, M0rgenstern

Tennisball

BeitragSo, Mai 08, 2011 18:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Oder verstehe ich dich gerade falsch?


Ja. Ich meine, dass es im Binärsystem nur zwei Ziffern gibt, nämlich die 0 und die 1, und nicht die 5.

mfg,
Tennisball

M0rgenstern

BeitragSo, Mai 08, 2011 18:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Achso okay.
Dann entschuldige.

Lg, M0rgenstern

BladeRunner

Moderator

BeitragSo, Mai 08, 2011 20:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich muss jetzt mal - auch wenn mir deine Idee durchaus gefällt - einen Rüffel anbringen. BlitzMoritz, Du hättest Dich vor einstellen dieses Quizzes erstmal mit uns Kontakt aufnehmen können damit man die Rahmenbedingungen für solch ein Quiz hätte klären können. Meines Erachtens nach ist es nämlich in Projekte gänzlich fehl am Platz, zumindest in der Form wie es nun präsentiert wird.
Solche potentiellen 'Institutionen' bereden wir üblicherweise intern, bevor wir sie freigeben.
Bevor Du also eine Zweite Folge veröffentlichst möchte ich Dich bitten erstmal mit uns Kontakt aufzunehmen.
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

grafe

BeitragSo, Mai 08, 2011 21:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Echt gut, hat ein Weilchen gedauert bis ich es hatte Very Happy !

mfg grafe

BlitzMoritz

BeitragSo, Mai 15, 2011 17:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Woche ist 'rum, einige haben mir die richtige Antwort per PN geschickt, hier nun die Auflösung:

Die Zahl 140454 des 19er-Systems ergibt, konvertiert ins 13er-System, das Palindrom 810018

Zur Lösung könnte man folgende Konvertierungsfunktion nutzen:
BlitzMax: [AUSKLAPPEN]
SuperStrict

Local Raetselzahl:String = "140454"

'Da die größte Ziffer der Raetselzahl eine 5 ist, muss es sich beim Ausgangszahlensystem
'mindestens um ein 6er-System handeln, also starten wir bei der Basis1 mit der 6:
For Local Basis1:Int = 6 To 36
For Local Basis2:Int = 2 To 36
If Basis1 <> Basis2 Then
Local Zahlenstring:String = ZahlensystemKonvertierung(Raetselzahl, Basis1, Basis2)
If Palindrom(Zahlenstring) = True Then
Print "Die Zahl " + Raetselzahl + " des " + Basis1 + "er-Systems ergibt, konvertiert ins " + Basis2 + "er-System, das Palindrom " + Zahlenstring
End If
End If
Next
Next

'Die folgende Funktion prüft, ob eine String-Variable ein Palindrom ist:
Function Palindrom:Byte(StringVar:String)
Local Laenge:Int = Len(StringVar)
For Local i:Int = 1 To Laenge/2
If Mid(StringVar, i, 1) <> Mid(StringVar, Laenge + 1 - i, 1) Then Return False
Next
Return True
End Function

'Die folgende Funktion wandelt eine Zahl zwischen zwei beliebigen Zahlensystemen um:
Function ZahlensystemKonvertierung:String(QuellZahl:String, QuellBasis:Long, ZielBasis:Long)

'Als Ziffern dienen die normalen Zahlenziffern 0 bis 9 und danach die Grossbuchstaben A bis Z,
'deshalb sollen die Zahlensysteme auf die maximale Basis 36 begrenzt werden:
If QuellBasis < 2 Or ZielBasis < 2 Or QuellBasis > 36 Or ZielBasis > 36 Then RuntimeError(" Die Zahlensystemkonvertierung behandelt nur Zahlensysteme mit Basen zwischen 2 und 36")

'Als erstes soll die QuellZahl in das Zehnersystem umgewandelt werden:
Local DezimaleGanzzahl:Long, Exponent:Long
For Local Stelle:Long = Len(QuellZahl) To 1 Step -1
Local Faktor:Long, Zeichen:String = Mid(QuellZahl, Stelle, 1)
If Asc(Zeichen) < 65 Then '(normale Ziffer 0 - 9)
Faktor = Long(Zeichen)
Else '(Buchstabe A - Z)
Faktor = Asc(Zeichen) - 55
End If
DezimaleGanzzahl = DezimaleGanzzahl + Faktor * (QuellBasis ^ Exponent)
Exponent:+1
Next
If ZielBasis = 10 Or DezimaleGanzzahl = 0 Then Return String(DezimaleGanzzahl)

'Dann erfolgt die Umwandlung in das Ziel-Zahlensystem:
Local ZielZahl:String
Exponent = Long(Log(DezimaleGanzzahl) / Log(ZielBasis))
While Exponent >= 0
Local Potenz:Long = ZielBasis ^ Exponent
Local Quotient:Long = DezimaleGanzzahl / Potenz
If Quotient < 10 Then
Zielzahl = Zielzahl + String(Quotient)
Else
Zielzahl = Zielzahl + Chr(Quotient + 55)
End If
DezimaleGanzzahl = DezimaleGanzzahl - Quotient * Potenz
Exponent = Exponent - 1
Wend

Return Zielzahl

End Function

Wer andere Wege beschritten hat, kann nun seine Lösungsvariante gern vorstellen.

BlitzMoritz

BeitragDi, Mai 17, 2011 8:02
Antworten mit Zitat
Benutzer-Profile anzeigen
(Das hier war das ...) zweite Programmier-Rätsel:

"Wieviel Quadrate enthält dieses Bild?"

user posted image

Hilfe:
Die Rechtecke liegen auf einer rein-weißen Hintergrundfläche (RGB-Werte 255, 255, 255).
Es gibt keine einzelnen Pixel, die als Rechtecke zu gelten hätten: Jedes Rechteck ist mindestens 2 Pixel breit bzw. tief.
Keines der Rechtecke ist gedreht, darum ist auch kein Antialiasing notwendig bzw. vorhanden.
Keines der Rechtecke schneidet oder berührt die vier Ränder des Gesamtbildes.
Keine der Rechteckseiten schneidet oder berührt die Seite eines anderen Rechtecks.
Mehrere Rechtecke können jedoch komplett aufeinander liegen bzw. ineinander verschachtelt sein.
Die zu zählenden Quadrate sind von Rechtecken zu unterscheiden.


Regeln: ... wie beim ersten Rätsel auch ...

Allen Interessierten wünsche ich viel Spaß Very Happy
  • Zuletzt bearbeitet von BlitzMoritz am Fr, Mai 27, 2011 11:21, insgesamt 3-mal bearbeitet

grafe

Betreff: Auflösung vom Letzten

BeitragDi, Mai 17, 2011 8:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Ups ich hab die Auflösung verpasst. Hier noch der Code vom letzten Rätsel.
BlitzMax: [AUSKLAPPEN]
'#####################################################
'Lösungsvorschlag zum BlitzQuiz "Zahlensysteme"
'von Grafe
'-----------------------------------------------------
'Kleine Anmerkung vom Autor:
'Der Code ist nicht sehr Ordentlich
'da er in Hast geschrieben wurde!
'#####################################################

SuperStrict

Global Wert:Int = 140454

Local Result:Int[] = PalindromMaker(Wert)

Print "Das Palindrom ist " + Result[0] + ", welches entstand als das Programm die Zahl " + Wert + " im " + Result[1] + "er System ins " + Result[2] + "er System umwandelte."

WaitKey()

Function PalindromMaker:Int[] (Wert:Int)
Local tmpReturn:String
For Local VonZS:Int = 6 To 36
For Local NachZS:Int = 2 To 36
'Umwandeln###########
Local tmpWert:String = WechselZahlenSystem(Wert, VonZS, NachZS)

'Überprüfen###########
tmpReturn = tmpWert
For Local i:Int = 1 To Len(tmpWert)
Local ichanged:Int = Len(tmpWert) - i
If Mid(tmpWert, i, 1) <> Mid(tmpWert, ichanged + 1, 1)
tmpReturn = 0
Exit
EndIf
Next

'Falls Richtig dann zurückgeben###########
If tmpReturn <> 0
Return[Int(tmpReturn), VonZS, NachZS]
EndIf
Next
Next
End Function

Function WechselZahlenSystem:String(Wert1:String, ZahlSys1:Double, ZahlSys2:Double)
Local Wert10Sys:Double

For Local i:Int=0 To Len(Wert1)-1
Local Vari:String = Mid(Wert1, Len(Wert1) - i, 1)
If Int(Vari)>=ZahlSys1 Then RuntimeError "Angegebener Wert wurde nicht im "+ZahlSys1+"er System angegeben"
Wert10Sys = Wert10Sys + Int(Vari) * ZahlSys1 ^ i
Next

Local tmpMaxHoch:Int
Repeat
If Wert10Sys/ZahlSys2^tmpMaxHoch<1 Then Exit

tmpMaxHoch=tmpMaxHoch+1
Forever

Local tmpRest:Double = Wert10Sys
Local tmpResult:String


For Local i:Int = 1 To tmpMaxHoch
Local ichanged:Double = tmpMaxHoch - i
If ichanged = 0 Then
tmpResult = tmpResult + IntOrAlphabet(tmpRest)
Exit
EndIf

tmpResult = tmpResult + IntOrAlphabet((tmpRest / ZahlSys2 ^ ichanged))

tmpRest = tmpRest Mod ZahlSys2 ^ ichanged
Next

Return tmpResult
End Function

Function IntOrAlphabet:String(Vari:Int)
Vari = Int(Vari)
If Vari > 9
Vari:-10
Vari = Vari + 65
Return Chr(Vari)
End If
Return Vari
End Function

Er ist nicht sehr hübsch aber er erfüllt seinen Zweck Wink

mfg Grafe

Blitzprogger

BeitragDi, Mai 17, 2011 13:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe die neue Aufgabe gelöst. Very Happy Allerdings bin ich mir nicht sicher, ob ich das richtige Resultat habe (echt so viele O.o (?!)). Naja. In einer Woche werde ich es erfahren.

Bis dann, viel Spass beim Rätseln!

mfg, Blitzprogger
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/

Unfreiwilliger Gewinner des BAC# 115. Wink

Tennisball

BeitragDi, Mai 17, 2011 13:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

Sehr coole Sache, habe es auch eben gelöst.


@Blitzprogger : Hast ne PN Wink


mfg
Tennisball

SpionAtom

BeitragDi, Mai 17, 2011 23:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

Sehr coole Sache, habe es auch eben gelöst.

mfg
SpionAtom
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080

ToeB

BeitragMi, Mai 18, 2011 15:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Jap, war doch nicht so schwer wie es auf den ersten Blick aussieht (Nur die Auswertung über mein Programm dauert ca. 30 sekunden, dafür habe ich aber sowohl Rechtecke als auch Quadrate)

Freu mich auf die Auswertung Very Happy

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Blitzprogger

BeitragMi, Mai 18, 2011 19:39
Antworten mit Zitat
Benutzer-Profile anzeigen
So, habe den Code nun korrigiert. Der alte hat etwas völlig falsches berechnet. Wink
Der neue ist um einiges besser, schneller (566 Millisekunden *stolz sein*), und gibt vorallem auch das richtige Resultat aus, also nur die Anzahl der Quadrate. Man könnte ihn allerdings sehr einfach auch für Rechtecke oder beides zusammen umschreiben.

[edit:] Gesagt getan. Er gibt nun die Anzahl der Quadrate und Rechtecke an, sowie beide zusammengerechnet. Er braucht dafür jetzt aber auch eine Millisekunde länger. Smile

cya, Blitzprogger
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/

Unfreiwilliger Gewinner des BAC# 115. Wink

grafe

BeitragMi, Mai 18, 2011 20:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Habs auch gelöst und mein Code braucht 30 millisekunden *stolz fühl* .
Wink

mfg Grafe

ToeB

BeitragMi, Mai 18, 2011 21:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Lol ich komme mir so doof vor dass ich als einziger 30 sekunden brauche Shocked

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Blitzprogger

BeitragMi, Mai 18, 2011 22:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Es interessiert mich jetzt aber auch, was für einen Code du hast, dass du so lange brauchst. Surprised Ich werde ihn mir dann auf jeden Fall genau ansehen.
@grafe: Deinen Code möchte ich auch betrachten. Wie schaffst du das nur so schnell. Confused

mfg, Blitzprogger
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/

Unfreiwilliger Gewinner des BAC# 115. Wink

Gehe zu Seite 1, 2, 3, 4, 5  Weiter

Neue Antwort erstellen


Übersicht Sonstiges Projekte

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group