1unitedpower: Informatik zum Dienstag

Beitrag lesen

ohne deine Helferfunktionen wüsste man zu wenig.

Frage wäre gewesen: n sei die Binärcodierung einer natürlichen Zahl und val(n) der Zahlenwert dazu. Ist dann val(b0(n)) == val(n) oder val(b0(n)) == 2*val(n)? Meint: Setzt b0(n) ein neues most significant bit oder ein neues least significant. Dein Helper macht klar: es ist ersteres.

Stimmt, danke für die Ergänzung.

Frage ist aber auch: Ist die rekursive Darstellung der unären und binären Codierung vorgegeben? Oder darf ich auch eine andere Implementierung der Peano- oder Binärcodierung benutzen, solange ich dabei keine Zahlen verwende? Ich denke da an ein Array, auf das ich push, pop, shift oder unshift anwenden könnte.

Ich bin auch gespannt auf Lösungen mit alternativen Definitionen für die Kodierungen. Die Vorlage war eine reine Hilfestellung und muss nicht benutzt werden.

Allgemeiner gefragt: Welchen Funktionsumfang hat deine zahlenlose Sprache? JavaScript minus Number? Oder noch weniger?

Meine Sprache ist noch dramatisch reduzierter, sie ist ein rein akademisches Experiment, das würde hier aber zu weit führen. Sie dient als prototypsche Sprache, um die Curry-Howard Korrespondenz auf kombinatorische Logik auszuweiten. Das wäre von praktischem Nutzen für die Implementierung von Compilern für funktionale Programmiersprachen und (semi-)automatischen Beweisassistenten. Die Sprache eignet sich nicht wirklich, um darin zu programmieren, sie ist mehr eine Zwischensprache, wie WebAssembly oder die JVM, die unter der Haube von Programmiersprachen benutzt wird. Beim Entwickeln von Fallballbeispielen bin ich kürzlich auf dieses Problem der Umkodierungen gestoßten und dachte mir, das hat einen Rätsel-Charakter und könnte vielleicht jemanden aus dem Forum Spaß machen. Deshalb habe ich TypeScript/JavaScript als Sprache für die Aufgabe gewählt, weil damit wohl viele Selfler vertraut sind.

Und ich nehme mal an, dass binaryLength bei der Implementierung von unaryToBinary nicht als Helper zur Verfügung steht, gelle?

Korrekt, die Funktion benutzt ja unter der Haube JavaScript nativen number-Typen.