Einführung
Ich bin neulich beim Fernsehen über dieses (nutzlose) Muster gestolpert. Ich habe es "das 9-Muster" genannt, weil die erste Zahl, die es verwendet hat, 9 war. Der Kern davon ist, dass Sie eine Zahl eingeben (sagen wir x ) und dann zurückkommen:
- x
- x + ( x / 3) [nennen wir das y ]
- zwei Drittel von y [nennen wir das z ]
- z + 1
Wenn ich also die Zahl 9 als x in dieses Muster einfügen würde, würde Folgendes herauskommen:
- 9 ( 9 )
- 12 ( 9 + 9/3 ) [9 über 3 ist 3 und 9 + 3 ist 12]
- 8 ( 12 mal zwei Drittel) [ein Drittel von 12 ist 4 und 4 * 2 ist 8]
- 9 ( 8 + 1 ist 9)
Herausforderung
Schreiben Sie mir eine Funktion (in einer beliebigen Programmiersprache), die eine Zahl aufnimmt und anhand des Musters ein ganzzahliges Array ausgibt.
Etwas wie dieser Pseudo-Code:
function ninePattern(int myInt) returns IntegerArray {
int iterationA = myInt + (myInt / 3);
int iterationB = iterationA * (2 / 3);
int iterationC = iterationB + 1;
IntegerArray x = [myInt, iterationA, iterationB, iterationC];
return x;
}
Klarstellungen
In den Kommentaren zu den Spezifikationen der Frage wurden Diskussionen ausgelöst. Dieser Abschnitt soll einige davon verdeutlichen.
"Besser in Bytes als in Zeichen zählen"
Ich habe Charaktere ausgewählt, weil es (zumindest für mich) einfacher wäre, sie zu beurteilen. Natürlich kann ich das jetzt nicht ändern. (viele Antworten sind bereits veröffentlicht)
"Runden"
Die Rundung folgt diesem Reim:
Wenn es 5 oder mehr ist, erhöhen Sie die Punktzahl.
Wenn es 4 oder weniger ist, lassen Sie es ruhen
Einfach ausgedrückt, wenn es sich um 4,7 oder 3,85 handelt, runden Sie sie auf 5 bzw. 4 ab.
Beispiele
Input => Result
9 => [9, 12, 8, 9]
8 => [8, 11, 7, 8]
6 => [6, 8, 5, 6]
23 => [23, 31, 21, 22]
159 => [159, 212, 141, 142]
Wenn die Zahlen jedoch etwa 2,3 oder 10,435446 betragen, runden Sie sie auf 2 bzw. 10.
"Sprachunterstützung"
Es steht Ihnen frei, Funktionen und / oder Arrays NICHT zu verwenden, WENN UND NUR WENN die Sprache Ihrer Wahl sie nicht unterstützt. Wenn dies der Fall ist (auch wenn dadurch die Anzahl Ihrer Zeichen erhöht wird), müssen Sie sie verwenden .