Mir ist zu kalt, dreh die Temperatur auf


53

Dies ist mein erster Golfwettbewerb.

Was musst du machen

Bauen Sie mir in kürzester Zeit meine AC-Fernbedienung auf. Mein Zimmer ist momentan zu kalt und ich vermisse meine Fernbedienung.

Nun, ich möchte nicht, dass Sie es buchstäblich bauen oder so, spielen Sie einfach so:

Ein langsamer Temperaturanstieg, der bei 40 Grad beginnt und bei genau 72 Grad endet. Die Inkrementierungszeit muss immer 500 Millis pro Inkrement betragen. Es kann am Ende weitere 500ms warten. Ich würde es jedoch vorziehen, aufzuhören. Das Inkrement selbst muss wie bei meiner Fernbedienung jedes Mal um zwei erhöht werden.

Sie sollten den Bildschirm nicht löschen. Sie sollten Zeilenumbrüche haben.

Was soll passieren

Beispielausgabe (alles in Klammern sollte nicht ausgegeben werden).

40
(wait 500 millis)
42
(wait 500 millis)
44
(..repeat until 72..)
72
(stop or wait 500ms)

Denken Sie daran, dies ist mein erstes Golfspiel, daher entschuldige ich mich, wenn es zu schwer ist, Golf zu spielen. :(

Viel Glück, Golfer!


3
Kleinigkeit, aber "muss immer 500 Millis sein" ist grundsätzlich zu streng für jedes vernünftige Gerät. Ich würde empfehlen, eine Varianz von +/- 10% anzugeben.
FryAmTheEggman

1
Können Sie 500 ms warten, bis die erste Ausgabe angezeigt wird?
FlipTack

35
-1 für die Verwendung von Fahrenheit (nicht wirklich, aber Sie sollten zumindest sagen, dass Sie es verwenden; 40 Grad Celsius ist nicht im geringsten zu kalt)
John Dvorak

20
+1 für Fahrenheit, es hat eine bessere Auflösung als Celsius und ist genauso willkürlich wie nichts anderes als Kelvin oder Rankine
Nick T

8
@NickT, dann haben Sie Pech, denn die Auflösung dieser Fernbedienung liegt bei 2 ° F und damit über 1 ° C. In Celcius erhalten Sie eine höhere Auflösung als in Fahrenheit mit einer Fernbedienung, die 0,5 und viel mehr anzeigt, wenn sie 0,1 anzeigt. Wie auch immer, ich bin ein einfacher Mann und kann nicht zwischen 22 und 23 ° C unterscheiden, daher ist eine hohe Auflösung in diesem Fall für mich nutzlos
phuclv

Antworten:


43

Bash + Linux-Dienstprogramme, 19

seq 40 2 72|pv -qlL2

seqgeneriert die numerische Ausgabe. pvbegrenzt es auf 2 Zeilen / Sek.


2
Die Ausgabe -qunterdrückt geht zu STDERR, also glaube ich nicht, dass Sie es brauchen.
Dennis

14
Eine hervorragende Demonstration von "Mach eins und mach es gut" mit den richtigen Werkzeugen für den Job. :)
Türklinke


42

Minecraft 1.9.0+, 204 162 Bytes + 58 36 28 24 20 Blöcke = 262 240 232 186 182 Blytes

Diese Lösung ist heruntergespielt und kann in einem oder sogar zwei Screenshots nicht als Ganzes gesehen werden. Verwendet zwei Pannen und missbraucht zwei weitere Features des Spiels

LAUF!  MINECRAFT WIRD SIE TÖTEN!

Diese Lösung verwendet die gleichen Prinzipien wie die folgende, nur 4 Blöcke kompakteres Design.

  • Missbrauch der Tatsache, dass Chain-Befehlsblöcke (grüne Blöcke) nicht von Redstone angetrieben werden können, sondern nur von einem Singal eines Impulsbefehlsblocks (orange).

  • Missbräuchlich dauert es 0,30 Sekunden, bis die Kolben vollständig ausgefahren sind, und Redstone benötigt nur 0,10 Sekunden, um ein Signal zu registrieren.

  • Missbraucht auch einen doppelten Fehler, um den Timer (TNT) auszuschalten: Der Redstone neben dem Timer (TNT) wird nicht nur mit Strom versorgt, sondern denkt auch, dass der TNT ein weiterer Redstone ist und treibt ihn an.

  • Zu all diesen Mißbräuchen, das Signal shortener (was unter dem TNT) ist eine bedienende , nachdem er es seine Form ändert angetrieben wird, so dass passiert Signal durch sich den „Inkrementierer“ (obersten Orange Block)

Einige Erklärungen zur Funktionalität der verschiedenen Teile finden Sie in älteren Lösungen (am besten in der folgenden). Sie können es auch offline ausprobieren! (Vereinfachtes Inkrementieren der Lösung um 4, funktioniert nur in Version 1.11+), indem Sie diesen Befehl in einem Befehlsblock ausführen .


Alte Lösung, Minecraft 1.9.0+, 186 Blytes:

MINECRAFT-MISSBRAUCH

Da TNT normalerweise nach 3.0 in Minecraft explodiert, muss dieses durch einen Befehl ( /setblock) mit einer angegebenen Sicherung platziert werden. Verwendet auch ein kompakteres Design, um redundanten Befehlsblock (mit 42 Bytes) und Redstone gegenüber den älteren Versionen zu entfernen. Ich bin sicher, das kann nicht niedriger werden ...

Ältere Lösung, Minecraft 1.9.0+, 232 Blytes:

Hoppla, ich habe herausgefunden, dass diese älteren Lösungen um 4 ...

Golfcraft

Verwendet die 1.9-Befehlsblock-Kettenfunktion (grüner Block), um Blöcke zu speichern. Verwendet auch einen kompakteren Signalkürzer als in den älteren Lösungen

Noch ältere Lösung, Minecraft 1.7.0+, 240 Blytes:

das seelenlose Monster

Verwendet einen kompakteren Timer (TNT) als die erste Lösung (unten).

Älteste Lösung, Minecraft 1.7.0+, 262 Blytes:

das alte Monster


Dies ist so lang, weil Minecraft mit Variablen umgeht:

  • So definieren Sie eine Variable (int): scoreboard objectives add <variable> dummy

  • So legen Sie einen Wert für eine Variable fest (jede Entität einschließlich der Spieler verfügt über einen eigenen Variablenwert): scoreboard players set <entity> <variable> <value>

    • *kann verwendet werden <entity>, um alle Entitäten auszuwählen und Bytes zu speichern.

    • Es dürfen nur definierte Variablen verwendet werden

    • Der Wert der Variablen muss auf eine Zahl und nicht auf eine Variable festgelegt werden

  • So erhöhen Sie var1 um var2: scoreboard players operation <entity> var1 += <entity> var2

    • <entity>muss eine einzelne Einheit sein, z. @pnicht*

Screenshots sind von mir selbst, dual lizenziert unter WTFPL und welche Lizenz SE heute (aktuell cc by-sa 3.0 with attribution required) verwendet :-)


2
Beeindruckend! Du hast Minecraft benutzt, das ist Genie! +1 :)
IMustBeSomeone

1
@IMustBeSomeone Warten Sie, ich habe einen Weg gefunden, dies zu
golfen

1
... Ihre Schaltung sprengt sich, wenn Sie fertig sind.
SuperJedi224

@ SuperJedi224 Ja. Ist es falsch?
RudolfJelin

2
@ RudolfL.Jelínek Ich bin mir ziemlich sicher, dass es nicht gegen die Regeln verstößt, aber es ist irgendwie komisch. Andererseits ist das ein Teil dessen, worum es beim Codegolf geht.
SuperJedi224

18

Vim, 24 , 23 Bytes / Tastenanschläge

i40<esc>qq:sl500m
Yp2<C-a>q15@q

Ein Byte gespart dank @Kritixi Lithos!

Geschrieben von meinem Handy, getestet in Mobile Vim (was anscheinend eine echte Sache ist).

Hier ist ein GIF davon:

Bildbeschreibung hier eingeben

Und hier ist eine Erklärung von Befehl zu Befehl:

i40<esc>            " Insert '40' into the buffer
        qq          " Start recording into register 'q'
          :sl500m   " Sleep form 500 ms
Y                   " Yank this line
 p                  " and paste it on a newline
  2<C-a>            " Increment this line twice
        q           " Stop recording
         15@q       " Callback register 'q' 15 times

Die sin msist optional, können Sie es entfernen , um ein Byte zu speichern :)
Kritixi Lithos

@KritixiLithos Das wusste ich! Wie habe ich das übersehen? Vielen Dank!
DJMcMayhem

8
Der Schüler wurde zum Lehrer: P
Kritixi Lithos

1
"Ich werde ein GIF und eine Erklärung später veröffentlichen, sobald ich Zugang zu einem Computer habe" wartet ein halbes Jahr (nicht ganz)
HyperNeutrino

@HyperNeutrino Hahahahaha, ich habe diese Antwort komplett vergessen. Ist das besser: P
DJMcMayhem

10

JavaScript (ES6), 52 Byte

f=(i=40)=>console.log(i)|i-72&&setTimeout(f,500,i+2)

f()


Hier ist eine weitere ordentliche Neuanordnung Ihrer Antwort für Sie: f=(i=40)=>setTimeout(i>70||f,500,i+2,console.log(i)). Leider immer noch die gleichen 52 Bytes.
Ismael Miguel

Sollte dies nicht ein 50Byte sein, da Sie das f=auf dem Metakonsens basierende nicht zählen müssen, dass anonyme Funktionsdeklarationen zulässig sind?
R. Kap

1
@ R.Kap Guter Fang, aber in diesem Fall ist der f=erforderlich, weil die Funktion sich selbst aufrufen muss (als erster Parameter setTimeout).
ETHproductions

8

Jelly , 13-12 Bytes

40µṄœS.+2µ⁴¡

Probieren Sie es online! Das Jelly-Programm ist in ein Bash-Skript eingeschlossen, um jeder Ausgabezeile einen Zeitstempel voranzustellen.

Wie es funktioniert

40µṄœS.+2µ⁴¡  Main link. No arguments.

40             Set the return value to 40.
  µ      µ⁴¡  Execute the chain between the two µ 16 times.

   Ṅ           Print the return value, followed by a linefeed.
      .        Yield 0.5.
    œS         Sleep for 0.5 seconds. Yield the previous result.
       +2      Add 2.

Nach der letzten Iteration wird implizit der Endwert von 72 ausgegeben und das Programm beendet.


Wow, ist das eine beabsichtigte Funktion, um andere Sprachen von Bash in tio aufrufen zu können?
Meilen

2
Ja, das ist beabsichtigt. Sie sollten in der Lage sein, dasselbe in allen Sprachen zu tun, die Systemaufrufe oder ähnliche Funktionen unterstützen.
Dennis

Für eine Sprache, die Golf-Herausforderungen gewinnt und deren Teil darin besteht, sich um einen konstanten Wert zu
erhöhen, sehe

6

Perl 6 , 30 Bytes

for 20..36 {sleep .5;say 2*$_}

Tut mir leid, dass es wie nicht golfen Code aussieht, ich sehe keine Möglichkeit, es kürzer zu machen ...

Die Version, die direkt nach der letzten Zahl stoppt, würde 37 Bytes betragen:

for 20..36 {sleep .5 if $++;say 2*$_}

Benötigen Sie den Raum danach 36?
NoOneIsHere

2
.say&sleep(.5) for 40,42...7229 bytes
ugexe

@ugexe: Sich auf die Nebeneffekte der Argumente von Nicht-Kurzschluss-Operatoren zu verlassen, die in der richtigen Reihenfolge auftreten, fühlt sich für mich wie ein implementierungsspezifischer Hack an, da die Sprachspezifikation von AFAIK dies nicht garantiert. OTOH, vielleicht für Code Golf, das ist okay?
smls

@SeeOneRhino: Ja. Eine {Klammer, die einem anderen Ausdruck ohne Leerzeichen folgt, wird als Beginn eines Hash-Index ("assoziatives Array") interpretiert. Perl 6 ist genau so, weil seine Grammatik absichtlich so konzipiert wurde, dass das Parsen von Quellcode in einem Durchgang (fast) ohne Backtracking möglich ist.
smls

6

Pyth - 12 Bytes

Sehr einfach, benutzt eine for-Schleife von 0-17.

V17+40yN.d.5

Bis jetzt am kleinsten, du bist für den ersten Platz gebunden :)
IMustBeSomeone

6

TI-Basic (nur CE oder CSE), 16 Byte

:For(A,40,72
:Pause A,.5
:End

Beachten Sie, dass viele Befehle Einzelbyte-Token sind.


Ich sehe 29 Bytes? Können Sie den 8-Byte-Code anzeigen?
Redstarcoder

1
TI-Basic hat einen eigenen Zeichensatz. For(, Pause , End, Und die Doppelpunkte am Anfang der Linien sind alle einzelnen Bytes.
Julian Lachniet

Seltsam ... in Ordnung, es scheint, als würden andere Antworten das auch tun.
Redstarcoder

1
Unser bisher bestes! Allerdings weiß ich nicht, ob ich den Zeichensatz irgendwie zählen werde.
IMustBeSomeone


5

MATL , 14 Bytes

17:E38+".5Y.@D

Probieren Sie es in MATL Online aus! Möglicherweise müssen Sie die Seite neu laden, wenn sie anfangs nicht funktioniert.

Erläuterung

17:     % Push array [1 2 ... 17]
E       % Multiply by 2, element-wise
38+     % Add 38, element-wise. This gives [40 42 ... 72]
"       % For each k in that array
  .5Y.  %   Pause 0.5 seconds
  @D    %   Push k and display
        % End (implicit)

Alte Version (vor Spezifikationsänderung), löscht den Bildschirm

17:E38+"5&Xx@D

Probieren Sie es in MATL Online aus!


Sie müssen den Bildschirm nicht löschen.
Adám

@ Adám Danke. Ich weiß, aber es dauerte die gleiche Anzahl von Bytes und es sieht besser aus :-)
Luis Mendo

1
@ LuisMendo Die Golf-Challenge besagt etwas über nicht das Löschen des Bildschirms, nach Änderungen / Aufklärung (möglicherweise nach Ihrem Beitrag)
Thomas Ward

@ThomasWard Danke für das Heads-up! Das OP hätte die Antwortenden über die Änderung informieren sollen
Luis Mendo

4

Dyalog APL , 20 Bytes

{⎕DL.5⊣⎕←⍵}¨38+2×⍳17

{ die anonyme Funktion

⎕DL verzögern...

.5⊣ halbe (eine Sekunde) statt des Wertes von

⎕← print (mit Zeilenvorschub)

 das Argument

angewendet auf jeden von

38+ achtunddreißig plus

zweimal

⍳17 die ganzen Zahlen von 1 bis 17


4

C mit Clang 3.8.1 unter Linux kompiliert, 62 59 58 Bytes

2 Bytes gespart dank @ranisalt

s=38;main(){for(;s<74;printf("%d\n",s+=2))usleep(500000);}

59 Bytes

s=38;main(){for(;s<73;printf("%d\n",s+=2+usleep(500000)));}

62 Bytes

s=38;main(){for(;s!=72;){printf("%d\n",s+=2);usleep(500000);}}

s=38                # Initializes a global (int) variable, this is only possible in C, in other languages from the C family variables must have an explicit type.
main()              # Is the main entry point, again as before, in case a type isn't specified C defaults to int
printf("%d\n",s+=2) # printf outputs to stdout based on the pattern defined in the first parameter 
                    # %d is a placeholder for an int variable
                    # \n appends a newline to stdout
                    # The second parameter increments the s variable and afterwards it goes in the placeholder's spot.
usleep(500000)      # This function is Linux specific, it takes an int as parameter, it represents how much time the app needs to sleep in microseconds

2
Danke für die Antwort und willkommen auf der Seite. Könnten Sie denjenigen, die mit Ihrer Sprache nicht so vertraut sind, etwas erklären?
Isaacg

1
Danke, dass Sie mich willkommen geheißen haben. Ja klar, das kann ich. Wie veranlasse ich meinen Beitrag, die Anzahl der benötigten Bytes zu berechnen? Ich habe das selbst geschrieben, aber in anderen Posts sieht es anders aus.
Wade Tyler

Jeder schreibt es selbst, es gibt keine automatische Berechnung. Ihr Header wird ** ... **im Markup verwendet, während der herkömmliche Header auf dieser Site verwendet wird # .... Ich habe Ihre Antwort bearbeitet, damit Sie sehen können, wie es gemacht wird.
Isaacg

1
@isaacg Vielen Dank. Es sieht jetzt besser aus.
Wade Tyler

1
Mit wird ein s<72weiteres Byte gespeichert.
Ranisalt

4

Scratch, 5 Blocks

(Speicherplatz 56,0 KB)

img

(Entschuldigung für die niedrige Auflösung!)

Eigentlich selbsterklärend. Der Variablenwert wird in einem Feld auf der "Bühne" angezeigt.


Hat dies nicht ein Inkrement von 4? (Im Gegensatz zu 2 als Anfrage)
VisualMelon

1
@VisualMelon Ah, danke für den Hinweis - ich hatte die Frage falsch verstanden, bevor sie bearbeitet wurde. Ich las es später noch einmal und bearbeitete meine andere Antwort, während ich diese vergaß. Vielen Dank!
RudolfJelin

3

Mathematica, 34 Bytes

Pause[Print@#;.5]&/@Range[40,72,2]

Volles Programm. Nimmt keine Ein- und Ausgänge auf STDOUT.


3

R, 49 Bytes

x=38;while(x<72){Sys.sleep(.5);x=x+2;cat(x,"\n")}

Sehr triviale Lösung, aber es macht den Trick.


Anfangs x = 40 druckt 40 beim Start nicht. Sie müssen mit x = 38 beginnen.
RNSO

Witzig, gleiche Idee, aber mit einer- forSchleife ist genau die gleiche Länge.
JAD

3

Perl 6 , 27 Bytes

sleep .say/2 for 40,42...72

sayTrueGibt zurück , was bei Division durch eine Zahl 1erzwungen wird 2.

Unicode-Spielereien können bis zu 23 Zeichen umfassen:

sleep .say/2 for ㊵,㊷…72

Aber das sind 29 UTF-8-codierte Bytes.


3

Python 2, 57 56 55 Bytes

import time
a=40
while a<73:print a;time.sleep(.5);a+=2

BEARBEITEN:

-1 Byte dank Mega Man

-1 Byte dank Flp.Tkc


1
Sie könnten ein Byte sparen, indem Sie 0,5 anstelle von 0,5 verwenden
Mega Man

@ MegaMan Danke, ich hatte nicht bemerkt, dass das funktionieren könnte
sonrad10

Warum nicht die Klammer um die print-Anweisung entfernen und Python 2 verwenden?
FlipTack


3

95 Bytes

()=>{for(int i=40;i<73;i+=2){System.Console.WriteLine(i);System.Threading.Thread.Sleep(500);}};

Es ist eine einfache for-Schleife, die am Ende weitere 500 ms wartet.


3

QBIC , 21 Bytes

[44,72,4|?a┘'sleep 1.

QBIC startet eine FOR-Schleife, die von 44 bis 72 läuft und den Zähler bei jeder Schleife um 4 erhöht. Es schläft dann für 1 Sekunde. QBasic hat keinen feinkörnigeren Kontrollbereich sleep, deshalb habe ich einen hinzugefügt ., um das Geben .5als Argument zu simulieren .


3

Kotlin, 47 Bytes

Ich denke, es wurde in der Problemstellung nicht gesagt, dass Lösungen tatsächlich ein Inkrement von zwei enthalten sollten, also 40+2*iist das hier legal.

Wenn als reguläre Kotlin-Quelle geschrieben, mit main:

fun main(args:Array<String>){(0..16).map{println(40+2*it);Thread.sleep(500)}}

(77 Bytes)

UPD : In Kotlin 1.3 args:Array<String>kann es entfernt werden, also sind es 18 Bytes weniger.

Und in Kotlin Script wäre das ganze Programm

(0..16).map{println(40+2*it);Thread.sleep(500)}

(47 Bytes)


Ihr erstes Programm scheint zunächst lange zu warten und dann alle Ergebnisse auszugeben.
DevRicher

1
@devRicher, scheint, als würden Sie es unter try.kotlinlang.org ausführen. Wenn ja, das ist ein Problem der Umwelt, scheint wie stdout nicht gespült oder so etwas. Wenn ich es lokal ausführe, verhält es sich wie beabsichtigt.
Hotkey


2

Haskell, 67 Bytes

import System.Posix.Unistd
mapM((>>usleep 500000).print)[40,42..70]

Wenn Sie nur mit ghc arbeiten möchten, können Sie ein paar Bytes sparen, indem Sie importieren GHC.Concund threadDelayanstelle von verwenden usleep.


2

PHP, 38 Bytes

for(;35>$t+=2;usleep(5e5))echo$t+38,_;

verwendet einen Unterstrich als Begrenzer. Laufen Sie mit -nr.


2

Clojure, 54 Bytes

(doseq[t(range 32 73 2)](println t)(Thread/sleep 500))

Drittes lisp ftw. Durchläuft einfach den Bereich, druckt und schläft jede Iteration. Am Ende schläft.

Ungolfed:

(doseq [t (range 32 73 2)]
    (println t)
    (Thread/sleep 500)))

Eine Version, die am Ende nicht schläft, 66 Bytes

(doseq[t(range 32 73 2)](println t)(if(< t 72)(Thread/sleep 500)))

Beachten Sie, dass dies vollständige Programme sind, da in den Anweisungen nicht angegeben wird. Fügen Sie jedem Byte ein, wenn eine Funktion erforderlich ist.


2

Schläger 46 Bytes

(for((i(range 40 73 2)))(println i)(sleep .5))

Ungolfed:

(define (f)
  (for ((i (range 40 73 2)))
    (println i)
    (sleep .5)))

Befehl zum Ausführen: (f)


1
Denken Sie daran, es muss nicht bei 72 anhalten, es kann weitere 500 ms warten. :)
IMustBeSomeone

2

Oktave, 38 35 Bytes

3 Bytes gespart dank @LuisMendo durch den Wechsel endforzuend

for i=20:36;disp(2*i);sleep(.5);end

Probieren Sie es online!

Ich bin neu bei Octave, daher könnte diese Lösung noch weiter verbessert werden. Irgendwelche Tipps sind willkommen!

Ungolfed

for i=20:36
  disp(2*i)
  sleep(.5)
end

2

Python 2, 57 58 Bytes

Bearbeiten

Gezählt als 57 Bytes auf meinem Handy, aber TIO sagt 58, jetzt wo ich wieder auf meinem eigenen Rechner bin, ist das mein letztes Angebot. Interessanterweise scheint TIO das Timeout nicht zu respektieren und wartet nur und druckt dann die gesamte Liste auf einmal aus. Funktioniert mit QPython für Android und Python 2 auf meiner Ubuntu-Box, das ist also gut genug für mich.

import time
for x in range(40,74,2):print x;time.sleep(.5)

Probieren Sie es online!

Wäre 58 59 in Python 3, also schlägt @ sonrad10 sowieso nicht.


1
Dies würde einen Syntaxfehler range(...)
auslösen

Vielen Dank @ Flp.Tkc. Es wurde direkt auf meinem Handy der Tippfehler eingetippt.
ElPedro

2

R, 44 42 Bytes

Eine direkte For-Loop-Variante gibt es wahrscheinlich auch für Golfer. (Außerdem ist die durchgestrichene 44 immer noch die reguläre 44 ...)

for(i in 20:36*2)cat(i,"\n",Sys.sleep(.5))

2

F #, 60 Bytes

async{for i in 40..2..72 do printfn"%d"i;do!Async.Sleep 500}

Dies ist ein asynchroner Ausdruck, um ihn auszuführen, übergeben Sie ihn an Async.Startoder Async.RunSynchronously.


2

Noodel , nicht konkurrierende 10 Bytes

Kann nicht teilnehmen, da Noodel geboren wurde, nachdem die Herausforderung erstellt wurde :(

40Ḷ16ñ++ḍh

Versuch es:)

Wie es funktioniert

40         # Creates the literal number 40 and places it into the pipe.
  Ḷ16      # Loop the following code 16 times.
     ñ     # Print what is in the front of the pipe with a new line.
      ++   # Increment what is in the pipe by two.
        ḍh # Delay for a half a second (500ms).

Es gibt keine Version von Noodel , die die in dieser Antwort verwendete Syntax unterstützt. Hier ist eine korrekte Version:

kȥḶ16ñ⁺2ḍh

<div id="noodel" code="kȥḶ16ñ⁺2ḍh" input="" cols="10" rows="17"></div>

<script src="https://tkellehe.github.io/noodel/noodel-latest.js"></script>
<script src="https://tkellehe.github.io/noodel/ppcg.min.js"></script>

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.