Die fehlende Ganzzahl ausgeben

34

Sie erhalten eine Zeichenfolge. Es enthält 9 eindeutige Ganzzahlen von 0 bis 9. Sie müssen die fehlende Ganzzahl zurückgeben. Die Zeichenfolge sieht folgendermaßen aus:

123456789
 > 0

134567890
 > 2

867953120
 > 4
Josh
quelle
5
@riker Das scheint eine Zahl zu sein, die in einer Sequenz fehlt. Hier scheint es darum zu gehen, eine Ziffer zu finden, die in einer Menge fehlt.
DJMcMayhem
10
@Riker Ich würde nicht denken, dass es ein Duplikat ist, da die verknüpfte Abfrage eine streng inkrementelle Folge (von möglicherweise mehrstelligen Zahlen) aufweist, während sie hier in willkürlicher Reihenfolge ist.
AdmBorkBork
3
Hallo Josh! Da es bisher noch niemand erwähnt hat, leite ich Sie an die Sandbox weiter, wo Sie Vorschläge für zukünftige Herausforderungen veröffentlichen und ein aussagekräftiges Feedback erhalten können, bevor Sie sie an main senden. Das hätte geholfen, Details auszubügeln (wie STDIN / STDOUT) und das doppelte Dilemma zu lösen, bevor Sie hier Abwertungen erhalten haben.
AdmBorkBork
1
Es ist so schade, dass 9-x% 9 für jede Ziffer außer 0 funktioniert. Vielleicht findet jemand, der klüger als ich ist, einen Weg, es zum Laufen zu bringen.
Bijan
2
Bei mehreren Antworten wird eine Ganzzahl als Funktionseingabe verwendet. Ist das erlaubt
Dennis

Antworten:

36

Python 2 , 18 16 Bytes

+ Schönheit dank @Sarge Borsch

`99066**2`.strip

Probieren Sie es online!

99066**2 Dies ist nur eine kürzere Möglichkeit, eine Zeichenfolge zu generieren, die 0 bis 9 enthält

Stange
quelle
7
32043 kann in eine schönere Nummer geändert werden. 99066 ist zentrumsymmetrisch (ändert sich nicht, wenn um 180 Grad um die Mitte gedreht) oder vielleicht 97779 (Palindrom, zwei verschiedene Ziffern)
Sarge Borsch
1
Wenn das OP erlaubt, die Zahl zweimal zu drucken, 764**4können zwei Bytes gespart werden.
Titus
@ Titus 764**4fehlt 5, 8und9
Rod
1
Tippfehler ... Ich meinte 763**4=338920744561
Titus
25

Python , 22 Bytes

lambda s:-int(s,16)%15

Probieren Sie es online!

Eine arithmetische Lösung. Interpretiert die Eingabezeichenfolge als hexadezimal, negiert sie und nimmt das Ergebnis Modulo 15.

xnor
quelle
2
Können Sie erklären, warum das funktioniert?
KarlKastor
1
@KarlKastor, Modulo 15 in Basis 16 funktioniert analog zu Modulo 9 in Basis 10. Modulo Base-1 ist konstant, wenn die Summe der Ziffern verwendet wird, nur weil 10 ≡ 1 (Mod Base-1). Die Summe aller möglichen Ziffern ist konstant, daher ist die fehlende Ziffer die Differenz zwischen dieser Konstante und der eingegebenen Zahl (Modulo-Basis-1).
mik
16

APL (Dyalog) , 4 Bytes

Abgeleitete Funktion

D∘~

⎕DD igits

 (Verknüpft ein linkes Argument mit der folgenden dyadischen Funktion, um eine monadische Funktion zu erstellen.)

~ außer [das Argument]

Probieren Sie es online!


Funktionszug

D~⊢

⎕DD igits

~ außer

 das richtige argument

Probieren Sie es online!


Explizites Programm

D~⍞

⎕DD igits

~ außer

 Zeicheneingabe

Probieren Sie es online!

Adam
quelle
12

Brain-Flak , 48 38 36 + 3 = 39 Bytes

10 Bytes gespart dank DJMcMayhem!

((([]())[]{}){()()({}[()])}{}[{{}}])

Probieren Sie es online!

Erläuterung

Die Summe aller Ziffern in Ascii ist 525. Dieses Programm summiert die Eingabe und subtrahiert sie von 525, um die fehlende Ziffer zu erhalten.

((([]())[]{}){()()({}[()])}{}      )

Will push 525. Dies nutzt die Tatsache aus, dass wir wissen, dass es zunächst 9 Eingabeelemente geben wird. Dies bedeutet, dass der []Wert 9 ergibt, wodurch wir schnell zu großen Zahlen wie 525 gelangen können.

Als nächstes haben wir das bisschen:

                             [{{}}]

Dadurch werden die Eingaben summiert und von der Gesamtsumme subtrahiert.

Weizen-Assistent
quelle
Wie funktioniert das?
Pavel
@ ГригорийПерельман Erläuterung hinzugefügt!
Wheat Wizard
2
Wenn Sie das negative(sum(input()))zum Ende bewegen , können Sie den stapelhohen Nil missbrauchen, um 525 leichter zu schieben. (([][][]()()()){()()({}[()])}{}[{{}}])sollten Sie 10 Bytes sparen
DJMcMayhem
30 Bytes durch Subtrahieren von 477 statt
Jo King
12

Haskell , 24 23 Bytes

(477-).sum.map fromEnum

Probieren Sie es online! Verbrauch: (477-).sum.map fromEnum $ "123456890". 477 ist die Summe der Zeichencodes der Ziffern 1 bis 9 mit Ausnahme von 0. Diese anonyme Funktion berechnet 477 abzüglich der Summe aller Ziffernzeichencodes, um den fehlenden zu finden.

Das Umwandeln der Zeichen in Ints dauert ein Byte länger:

(45-).sum.map(read.pure)
foldl(\a b->a-read[b])45

Probieren Sie es online!

Laikoni
quelle
10

Gelee , 3 Bytes

ØDḟ

Filtert ( ) einfach die Eingabezeichenfolge aus "0123456789" ( ØD).

Probieren Sie es online!

Dennis
quelle
3
Ich mag die Art und Weise, wie alle Golfsprachen (und sogar einige Nicht-Golfsprachen) denselben Algorithmus verwenden, aber Jelly hat die kürzesten Namen für die von ihm verwendeten Builtins und die geringste Anzahl für die Umkehrung der Argumente .
1
@ ais523 APL ist Buchstabe für Buchstabe gleich (außer dass es sich um ein APL-Snippet handelt und nicht um eine Funktion / ein Programm): Ø= , D= D, = ~, wie in ⎕D~'867953120'.
Adám
3
Ich, während ich durch die Antworten scrolle: "Ich sage 3 Zeichen in Jelly voraus." Bingo. : ^ D
DLosc
9

Rubin, 14

Summiert die ASCII-Codes und subtrahiert von 48 * 9 + 45

->s{477-s.sum}

Verwenden Sie wie folgt

f=->s{477-s.sum}

puts f["123456789"]
Level River St
quelle
9

JavaScript (ES6), 26

Bearbeiten Sie 1 Byte und speichern Sie @Neil mit einem viel intelligenteren Trick

Das Xoring aller Werte von 1 bis 9 ergibt 1. Oder 1 noch einmal und das Ergebnis ist 0. Wenn also ein einzelner Wert fehlt, ist das Ergebnis der fehlende Wert.

s=>eval([1,...s].join`^`)

Prüfung

f=s=>eval([1,...s].join`^`)

function go() {

  var i=I.value;
  O.textContent = f(i)
}  

go()
<input oninput='go()' value='012987653' id=I>
<pre id=O></pre>

edc65
quelle
s=>eval([1,...s].join`^`)Speichert ein Byte.
Neil
@Neil ... und es ist auch viel interessanter
edc65
Ich habe das Gefühl, dieser Tipp kam verdächtig kurz nach meiner Antwort : D trotzdem schön Golf +1.
Christoph
1
@Christoph Nun, es klang, als wollten Sie das Wort verbreiten ...
Neil
@Neil absolut :) Schön zu sehen, dass es geholfen hat!
Christoph
8

Retina , 27 21 19 Bytes

-6 Dank an Basic Sunset
-2 Dank an Martin Ender

.
$*_5$*
+`_1|1_

1

Probieren Sie es online!

Ersetze jede Ziffer mit so vielen _s und 5 1s:

.
$*_5$*

Entfernen Sie alle _s und a 1für jedes:

+`_1|1_ 


Zähle die Anzahl der 1verbleibenden s:

1
Riley
quelle
Die erste Zeile der zweiten Antwort kann gerade sein ..
Neil
Sie können ein paar Bytes sparen, indem Sie die Deduplizierung anstelle der Ersetzung verwenden: Probieren Sie es online aus
Business Cat
Na ja, und hier habe ich gerade die zweite Antwort auf die alte Byteanzahl der ersten Antwort gebracht ...^ 5 ^. $*9¶ . $*_ +`_¶_ _
Neil,
@Neil Ich habe es zu einem weniger als das Original.
Riley
(Huh, das sieht meiner Antwort verdächtig ähnlich, der einzige Unterschied ist, dass Sie von _zu gewechselt haben 1, um ein Byte zu speichern.)
Neil
6

05AB1E , 6 Bytes

45¹SO-

Probieren Sie es online!

45     # Push 45
  ¹    # push input
   S   # Split
    O  # Sum
     - # Subtract (45 - sum)
Riley
quelle
6

JavaScript (ES6), 31 29 28 22 Byte

s=>(15-`0x${s}`%15)%15

Port von @ xnors Python-Antwort, außer dass JavaScript nur einen Restoperator anstelle eines Modulo-Operators hat, daher kann ich das nicht in einem einzigen Schritt tun. Bearbeiten: 6 Bytes dank @Arnauld gespeichert.

Neil
quelle
s=>[...s].map(c=>r-=c,r=45)|r;-)
ETHproductions
3
Du bist zu verliebt in reduce.
Trotzdem
@Arnauld Ich sehe das nicht, wenn s[0]!='0'es funktioniert , aber es gibt bereits eine Antwort, die verwendet wird eval.
Neil
Könntest du tun s=>(15-`0x${s}`%15)%15?
Arnauld
@Arnauld Bah, und das hatte ich auch schon für den Batch-Port getan ...
Neil
6

Gehirnfick, 17 15 Bytes

-[-[->-<],]>++.

Probieren Sie es hier aus . Diese Lösung funktioniert nur mit Standard-Brainfuck (8-Bit-Zellen), da es sich um ein Wrapping handelt.

Es ist ein seltener Tag, an dem Brainfuck tatsächlich antreten kann, aber diese Herausforderung stimmte einfach ziemlich gut mit der BF-Spezifikation überein!

Anstatt diese Antwort direkt aufzuschlüsseln, möchte ich die Iterationen durchgehen, die ich gemacht habe, weil ich denke, dass dies verständlicher (und interessanter) wäre.
Hinweis: Diese Lösung ist weitgehend von der Brain-Flak-Antwort von Wheat Wizard inspiriert .

Erläuterung

Schritt 1, 26 Bytes

In seiner Antwort wies Wheat Wizard darauf hin, dass sich die Summe der ASCII-Werte von 0-9 zu 525 summiert. Und da Standard-Brainfuck nur einen Begriff von [0,255] hat, ergibt dies den Wert 525% 256 = 13 . Das heißt, wenn Sie die ASCII-Werte der Eingabe von 13 subtrahieren, erhalten Sie die fehlende Ziffer.

Die erste Version dieses Programms war:
1. Setzen Sie 13 in die erste Zelle
2. Nehmen Sie Eingaben in die zweite Zelle
3. Subtrahieren Sie die zweite Zelle von der ersten Zelle
4. Springen Sie zu 2, wenn noch Eingaben vorhanden sind
5. Drucken Sie die erste Zelle

Und hier ist der Code für die einfache Lösung:

+++++++++++++ #Set the first cell to 13  
>,            #Take inputs into the second cell  
[[<->-],]     #Subtract the second cell from the first cell and repeat until inputs are over  
<.            #Print the first cell  

Schritt 2, 19 Bytes

Wie in seiner Antwort ausgeführt, können wir, da wir wissen, dass die Eingabe genau die Länge 9 hat, diesen Wert als Konstante verwenden und diese lange Zeichenfolge von + gleich am Anfang entfernen.
Es ist auch egal, zu welchem ​​Zeitpunkt wir 13 addieren (danke, kommutative Eigenschaft!), Also mischen wir es mit den Schritten Subtraktion und Drucken.

,        #Take input to enter the loop
[[->-<], #Subtract the first cell from the second cell 
>+<]     #Add 1 for each input; totaling 9
>++++    #Add the missing 4 to make 13
.        #And print

Dies war meine ursprüngliche Antwort auf dieses Problem, aber wir können es besser machen.

Schritt 3, 17 Bytes

Interessanterweise funktioniert die vorherige Antwort auch dann, wenn wir mit einem + anstelle von einem beginnen.

+[[->-<],>+<]>++++.

Brainfuck benötigte etwas in einer Zelle, um eine Schleife zu beginnen. Wir haben diese zusätzlichen 4 am Ende naiv hinzugefügt, wenn es an anderen Orten gegangen sein könnte.

-[[->-<],>+<]>++.

Mit etwas völlig absichtlich (sprich: Versuch und Irrtum) Schleife Tricks, Anfahren des Programm mit einem - führt zu zwei interessanten Ergebnissen:

  1. Man wird zur zweiten Zelle hinzugefügt (1 Byte am Ende speichern).
  2. Die Schleifen werden ein weiteres Mal ausgeführt, insgesamt 10 statt 9 (wobei ein weiteres Byte eingespart wird).

1 + 10 + 2 = 13, und wir erhalten die ursprüngliche Antwort.

Rückblickend ist dies wahrscheinlich ein übermäßiger Aufschub für solch ein einfaches Brainfuck-Programm.

Schritt 4, 15 Bytes

Nachdem ich ein bisschen mehr über diese Lösung nachgedacht hatte, konnte ich 2 Bytes abschneiden.

Ich wollte etwas über den vorherigen Schritt klarstellen:
Das Minus zum Eingeben der Schleife addiert effektiv 1, aber was es tatsächlich tut, ist das Subtrahieren von 255 von der zweiten Zelle (was zu 1 führt).

Rückblickend ist es offensichtlich, aber das Subtrahieren von 1 von der ersten Zelle ist dasselbe wie das Addieren von 1 zu der zweiten Zelle (weil alles in der ersten Zelle von der zweiten Zelle subtrahiert wird).

-[-[->-<],]>++.

Ich konnte das "> + <" durch Hinzufügen eines "-" am Anfang der ersten Schleife entfernen. Es muss dorthin gehen und nicht dorthin, wo das "> + <" war, da das Programm ansonsten eine Endlosschleife ausführt.

Zack C.
quelle
5

Mathematica, 25 Bytes

477-Tr@ToCharacterCode@#&

Reine Funktion, die einen String als Eingabe nimmt und eine Ganzzahl zurückgibt. Mathematica hat lange Befehlsnamen und zögert, zwischen Zeichenfolgen und Ganzzahlen zu konvertieren, was es bei dieser Herausforderung besonders schlimm macht. Das Beste, was ich finden konnte, war der Algorithmus aus Level River Sts Ruby-Antwort , der eine Berechnung basierend auf der Summe der ASCII-Codes der Eingabezeichenfolge durchführt. In Mathematica wird nur ein langer Befehlsname verwendet.

Greg Martin
quelle
5

PHP, 27

<?=trim(32043**2,$argv[1]);

verwendet den Trick aus Rods Antwort , um eine Zeichenfolge zu generieren, die alle Ziffern enthält, und entfernt dann alle Ziffern mit Ausnahme der fehlenden.


PHP, 41

for($b=1;$i<9;$b^=$argv[1][$i++]);echo$b;

Dieser benutzt xor, weil ich es noch nicht gesehen habe.

Christoph
quelle
Schön, dass ich nicht an Trimmen denke. Alternatives Werte32043,32286,33144,35172,35337,35757,35853,37176,37905,38772,39147,39336,40545,42744,43902,44016,45567,45624,46587,48852,49314,49353,50706,53976,54918,55446,55524,55581,55626,56532,57321,58413,58455,58554,59403,60984,61575,61866,62679,62961,63051,63129,65634,65637,66105,66276,67677,68763,68781,69513,71433,72621,75759,76047,76182,77346,78072,78453,80361,80445,81222,81945,83919,84648,85353,85743,85803,86073,87639,88623,89079,89145,89355,89523,90144,90153,90198,91248,91605,92214,94695,95154,96702,97779,98055,98802,99066
Jörg Hülsermann
5

Bash + Coreutils, 19 Bytes

Ich habe eine kürzere Bash-Lösung gefunden, die einen interessanten Prüfsummenansatz verwendet:

sum -s|dc -e524?--P

Probieren Sie es online!

Erläuterung:

Der sumBefehl gibt eine Prüfsumme und eine Blockanzahl aus. Ich kenne nicht viele Details, aber bei Verwendung der Option -s(System V-Algorithmus) entspricht die Prüfsumme der ASCII-Summe jedes eingegebenen Zeichencodes. Somit bleibt die Prüfsumme konstant, wenn sich die Reihenfolge der gleichen Eingabezeichen ändert.

Gegeben 867953120als Testfall (letztes Beispiel), hier ist , wie das Skript funktioniert:

  • sum -sAusgänge 473 1. Wenn keine ganze Zahl fehlte, wäre die Prüfsumme 525 gewesen.
  • dc -e524?drückt 524 und dann den Pipe-Eingang. Der Stapel ist: 1 473 524. Die Idee ist, die Prüfsumme von 525 zu subtrahieren, aber da die Summe auch 1 ergibt, muss ich damit arbeiten.
  • --P. Nach dem Auftragen der zwei Subtraktionen (524- (473-1)), ist der Stapel: 52. Mit 'P' gebe ich das Zeichen mit diesem ASCII-Code aus: 4die fehlende Ziffer.
Seshoumara
quelle
4

Fortran 95, 146 128 Bytes

function m(s)
character(len=10)::s,t
t='0123456789'
do j=1,10
k=0
do i=1,9
if(s(i:i)==t(j:j))k=1
end do
if(k==0)m=j-1
end do
end

Nicht sehr kurz, fürchte ich.

Ungolfed:

integer function m(s)
    implicit none

    character(len=9)::s
    character(len=10)::t
    integer:: i, j, k

    t='0123456789'
    do j=1,10
        k=0
        do i=1,9
            if (s(i:i) == t(j:j)) k=1
        end do
        if (k==0) m=j-1
    end do

end function m
Steadybox
quelle
3

CJam , 5 Bytes

A,sq-

Probieren Sie es online!

A,     e# The range from 0 to 9: [0 1 2 3 4 5 6 7 8 9]
  s    e# Cast to a string: "0123456789"
   q   e# The input
    -  e# Remove all characters from the range that are in the input
       e# Implicit output
Geschäfts-Katze
quelle
3

GNU sed , 36 Bytes

Beinhaltet +1 für -r

s/$/0123456789/
:
s/(.)(.*)\1/\2/
t

Probieren Sie es online!

s/$/0123456789/ # Append 0123456789
:               # Start loop
s/(.)(.*)\1/\2/ # remove a duplicate character
t               # loop if something changed
Riley
quelle
3

Brachylog (2), 5 Bytes

ẹ:Ị↔x

Probieren Sie es online!

Sollte wohl kürzer sein (ich bin immer noch verwirrt, warum das notwendig ist), aber das ist das Beste, was ich tun kann.

Erläuterung

ẹ:Ị↔x
ẹ      Split the input into a list of characters
 :Ị    Pair that list with the string "0123456789"
   ↔x  Remove all elements of the list from the string

quelle
xImplementierung ist alt und ziemlich fehlerhaft, weshalb Sie brauchen .
Fatalize
Sie können tatsächlich argumentieren, dass so etwas ¬∋ℕnur aus drei Zeichen bestehen sollte - das habe ich zuerst versucht -, aber es gibt mehrere Gründe, warum dies nicht der Fall ist, und ich glaube nicht, dass es eine plausible Möglichkeit gibt, Brachylog so zu ändern, dass dies der Fall ist.
Eine solche ¬∋ℕArbeit ist in Prolog nicht möglich, es sei denn, Sie programmieren speziell, was Sie damit nicht meinen not in. ¬in Brachylog ist gleichbedeutend mit \+in Prolog, und seine Bedeutung ist die von "nicht unter der Annahme der geschlossenen Welt nachweisbar", anstatt "mir Auswahlpunkte für alles zu geben, was dies nicht überprüft" (was fast immer eine unendliche Anzahl von Dingen ist) )
Fatalize
Der einzige Weg, dies in Prolog zu tun, wäre, das im Voraus zu "kennzeichnen" , aber das würde bedeuten, mit Brachylogs Auswertungsreihenfolge basierend auf dem Inhalt der Prädikate zu basteln. Das ist jedoch nur eines der Probleme; Es gibt eine Menge anderer.
3

Common Lisp, 47 Bytes

(lambda(s)(- 45(reduce'+ s :key'digit-char-p)))

Ungolfed:

(lambda (s) (- 45 (reduce '+ s :key 'digit-char-p)))

Erklärung:

(reduce '+ s :key 'digit-char-p)

Dies durchläuft die Zeichen in einer Schleife s, konvertiert sie in Ziffern und fügt sie hinzu. Digit-char-p gibt die Nummer des Zeichens günstigerweise als "wahren" Wert zurück, sodass es als Test oder Konvertierung verwendet werden kann.

(- 45 ...)

Subtrahieren von 45 gibt die Ziffer zurück, die in der Eingabe fehlte.

djeis
quelle
3

Cubix , 18 Bytes

5v&;52/ni?@.>!&oW+

Erweitert

    5 v
    & ;
5 2 / n i ? @ .
> ! & o W + . .
    . .
    . .

Probieren Sie es hier aus

Verwendet die gleiche Art von Verfahren , wie diese Gehirn-Flakfeuer Antwort.

Erstellen Sie den Wert -525 auf dem Stapel, indem Sie 5, 2, verketten, 5, verketten und negieren drücken.
Holen Sie sich dann wiederholt die Eingabe und fügen Sie sie hinzu, bis das Ende der Eingabe erreicht ist.
Entfernen Sie die letzte Eingabe, negieren Sie das letzte Additionsergebnis (machen Sie es positiv), geben Sie das Zeichen aus und halten Sie an.

Der Grund für die Arbeit von -525 bis ist, dass die Zeichenausgabe bei jeder Eingabe-Iteration getroffen wird. Da der Wert negativ ist, wird nichts ausgegeben, bis die Schleife verlassen und der negative Wert positiv gemacht wird.

MickyT
quelle
3

PHP, 37 Bytes

<?=45-array_sum(str_split($argv[1]));
user63956
quelle
3

Bash (+ Dienstprogramme), 2219 Bytes

  • Verwenden Sie seqanstelle der geschweiften Klammer -3 Bytes (Thx @Riley!)
seq 0 9|tr -d \\n$1 

Prüfung

$seq 0 9|tr -d \\n123456789
0

Probieren Sie es online!

Zeppelin
quelle
Wenn Sie das Feld vor dem verschieben $1würden, wäre dies offensichtlicher ...
Neil
@Neil, ja, das ist eine schöne Idee! Danke !
Zeppelin
Sie könnten seqanstelle von verwenden echo: seq 0 9|tr -d \\n$1
Riley
3

Google Sheets, 39 33 Bytes

Die Eingabe wird in die Zelle eingegeben A1.

Code:

=REGEXEXTRACT(4&2^29,"[^"&A1&"]")

6 Bytes gespart dank Steve Kass.

Vorheriger Code:

=REGEXEXTRACT("0123456789","[^"&A1&"]")

Ergebnis:

Bildbeschreibung hier eingeben

Grant Miller
quelle
Die Zahl 2 ^ 29 hat alle Ziffern außer 4, also 33 Bytes: = REGEXEXTRACT (4 & 2 ^ 29, "[^" & A4 & "]")
Steve Kass
@SteveKass Schön. =REGEXEXTRACT(0&49^9,"[^"&A1&"]")ist auch eine gültige Lösung, wenn man eine ähnliche Logik voraussetzt. Aktualisierte Antwort.
Grant Miller
3

Befunge 98, 14 12 Bytes

Ich habe 1 Byte gespart, indem ich das Programm auf 1 Zeile verschoben habe, und 1 Byte, indem ich etwas besser rechnete

~+;@.%a--7;#

Probieren Sie es online!

Erläuterung

Die Summe der ASCII-Werte reicht von 477 bis 468, je nachdem, welche Zahl fehlt. Durch Subtrahieren von 7 erhalten wir den Bereich -470 bis -461. Durch Modifizieren dieser Zahl um 10 erhalten wir den Bereich 0 - 9, den wir dann drucken können.

~+;       ;#    Sums the ASCII values of all characters to stdIn
~          #    The # doesn't skip over the ~ because it's on the end of a line
~               Once EOF is hit, the ~ reverses the IP's direction
          ;#    Jump the ; that was used before
       --7      Subtract the sum from 7 (really just 0 - (sum - 7))
     %a         Mod it by 10
   @.           Print and exit

Der Grund, warum ich die ASCII-Werte verwende, anstatt eine Ganzzahleingabe zu verwenden, ist, dass der &Befehl in Try it Online bei EOF angehalten wird (obwohl die IP umgekehrt werden sollte). Das ~funktioniert aber einwandfrei.

Altes Programm , 14 Bytes

#v~+
@>'i5*--,

Die Summe der ASCII-Werte aller 10 Stellen ist 525. Durch Subtrahieren der Summe der angegebenen Stellen von 525 erhalten wir den ASCII-Wert des fehlenden Zeichens.

#v~+         Sums the ASCII values of all characters on stdIn
             Moves to the next line when this is done
 >'i5*       Pushes 525 (105 * 5)
      --     Subtracts the sum from 525
@       ,    Prints and exits
MilderMilquetoast
quelle
2

PowerShell , 30 Byte

param($n)0..9|?{$n-notmatch$_}

Probieren Sie es online!

Nimmt Eingaben entgegen $n, erstellt einen Bereich 0..9(dh 0, 1, 2 ... 9) und verwendet dann eine Where-ObjectKlausel (the |?{...}), um die Zahl zu ermitteln, die Regex ausführt -notmatch. Das bleibt in der Pipeline, die Ausgabe ist implizit.

AdmBorkBork
quelle
2

Pyth, 5 Bytes

-jkUT

Versuch es!

Erläuterung

-jkUT
    T   # 10
   U    # The unary range of ten: [0,1,..,9]
 jk     # join that on the empty string
-       # set minus

"-jUT" funktioniert auch ein bisschen, erzeugt aber Zeilenumbrüche für jeden Int.

KarlKastor
quelle
2

05AB1E , 5 Bytes

žhISK

Probieren Sie es online!

Erläuterung

žh     # from the string "0123456789"
    K  # remove
  IS   # each digit of the input
Emigna
quelle
6
Ich mag es, weil man es laut aussprechen kann. "žHISK", rief er, als er seinen Zauberstab über den Zylinder schwenkte und ein kleines weißes Kaninchen in einer Rauchwolke auftauchte.
Penguino