Platz eine Nummer mein Weg

Gryphon 08/21/2017. 20 answers, 1.959 views
code-golf number

Die Leute sagen mir immer wieder, dass das Quadrat einer Zahl die Zahl multipliziert mit sich selbst ist. Das ist offensichtlich falsch. Der richtige Weg, um eine Zahl zu quadrieren, besteht darin, sie zu einem Quadrat zu machen, indem man sie auf sich selbst so oft wie die Zahl der Ziffern übereinander stapelt und dann alle Zahlen aus dem resultierenden Quadrat liest, beide horizontal (aus Nur von links nach rechts) und vertikal (nur von oben nach unten), und dann fügen Sie sie zusammen. Also, für die Zahl 123, erstellen Sie zuerst das Quadrat:

123
123
123 

Dann nimmst du alle Reihen und Spalten vom Quadrat und fügst sie zusammen:

123+123+123+111+222+333 

Was uns ein Ergebnis von 1035 .

Bei negativen Zahlen stapeln Sie normal (denken Sie daran, dass Sie nur die Anzahl der digits , also das negative Vorzeichen nicht in der Länge enthalten ist), und lesen Sie dann die horizontalen Zahlen normal (mit negativen Vorzeichen) und ignorieren dann die negativen Vorzeichen die vertikalen Zahlen. Also, für die Zahl -144 bekommen wir das Quadrat:

-144
-144
-144 

Das gibt uns -144-144-144+111+444+444 , was 567 entspricht

Bei Zahlen mit nur einer Ziffer entspricht das Quadrat immer der doppelten Anzahl (einmal horizontal und einmal vertikal). So gibt uns 4

4 

Das gibt uns 4+4 , was 8 ergibt.

Für Zahlen mit Dezimalteilen, stapeln Sie normal (denken Sie daran, dass nur digits gezählt werden, wenn Sie die Zahl stapeln und daher der Dezimalpunkt nicht gezählt wird), und ignorieren Sie die Dezimalzeichen beim Lesen der vertikalen Zahlen. Zum Beispiel gibt uns die Nummer 244.2

244.2
244.2
244.2
244.2 

Das gibt uns 244.2+244.2+244.2+244.2+2222+4444+4444+2222 , was 14308.8 entspricht.

Bruch- oder komplexe Zahlen können nicht quadriert werden.

Deine Aufgabe:

Ich bin es leid, Zahlen mit der Hand zu quadrieren, also habe ich beschlossen, den Prozess zu automatisieren. Schreibe mir ein Programm oder eine Funktion, die einen Gleitkommawert oder eine Zeichenkette, je nachdem, was du bevorzugst, als Eingabe verwendet und das Ergebnis der Quadrierung auf meine Art zurückliefert.

Beispiele:

123    -> 1035
388    -> 3273
9999   -> 79992
0      -> 0
8      -> 16
-6     -> 0
-25    -> 27
-144   -> 567
123.45 -> 167282.25
244.2  -> 14308.8
2      -> 4
-0.45  -> 997.65
0.45   -> 1000.35 

Wertung:

Meine Hände werden beengt, all diese Quadrate zu schreiben, und mein Computer unterstützt das Kopieren / Einfügen nicht, also gewinnt der Eintrag mit der geringsten Menge an Code, den ich eingeben muss (gemessen in Bytes aus irgendeinem Grund?)!

5 Comments
Gryphon 07/29/2017
Ich merke, dass dies nicht lange in der Sandbox war (nur ein bisschen über einen Tag), aber es hatte bereits 7 upvotes, also dachte ich, dass es wahrscheinlich bereit ist zu posten.
1 Leaky Nun 07/29/2017
"123.45" und "244.2" sind keine gültigen Gleitkommazahlen, da der Computer die Zahl in binärer Form speichert. Dies ist normalerweise kein Problem, bis das Problem auf der Dezimaldarstellung beruht.
3 Leaky Nun 07/29/2017
@Gryphon Hier versagt es. 244.2 ist keine 244.2 . Es kann nicht in die Zeichenfolge "244.2" konvertiert werden.
2 Leaky Nun 07/29/2017
@Gryphon Aber solche Verhaltensweisen machen es sehr unpraktisch.
7 Gryphon 07/29/2017
Warum drei enge Stimmen? Wenn 11 Leute die Frage beantworten können, denke ich, dass es wahrscheinlich ziemlich klar ist!

20 Answers


Erik the Outgolfer 07/29/2017.

05AB1E , 7 Bytes

þSDg×+O 

Probieren Sie es online aus!

Erläuterung

þSDg×+O Implicit input
þ       Keep digits
 S      Get chars
  D     Duplicate
   g    Length
    ×   Repeat string(s)
     +  Add (implicit input added to all elements)
      O Sum 
4 comments
3 Jonathan Allan 07/29/2017
Ooo Erklärung, wenn Sie bitte können
1 Jonathan Allan 07/29/2017
Außerdem würde ich bemerken, dass die einzelne führende Null eine Anforderung an den Eingang für -1 <Eingabe <1 ist (dh 0,45 und 0,45 sind unterschiedliche Eingaben, aber die gleiche Anzahl, nur die erste ist akzeptabel)
Erik the Outgolfer 07/29/2017
@ JonathanAllan Letzteres wird sowieso nicht behandelt.
Erik the Outgolfer 07/29/2017
@ JonathanAllan Erledigt.

Jonathan Allan 07/29/2017.

Gelee , 13 12 Bytes

fØDẋ€L$ŒV+VS 

Eine monadische Verknüpfung, die eine Liste von Zeichen akzeptiert (eine wohlgeformte Dezimalzahl, die einzelne führende Null als Voraussetzung für -1 < n < 1 ) und eine Zahl zurückgibt.

Try it online!

14 Bytes zum Akzeptieren und Zurückgeben von Zahlen (Eingabe begrenzt um +/-10-5 durch ŒṘ ): ŒṘfØDẋ€L$ŒV+⁸S .

Wie?

fØDẋ€L$ŒV+VS - Link: list of characters         e.g. "-0.45"
 ØD          - yield digit characters                "0123456789"
f            - filter keep                           "045"
      $      - last two links as a monad:
     L       -   length (number of digit characters) 3
   ẋ€        -   repeat list for €ach digit          ["000","444","555"]
       ŒV    - evaluate as Python code (vectorises)  [0,444,555]
          V  - evaluate (the input) as Jelly code    -0.45
         +   - addition (vectorises)                 [-0.45,443.55,554.55]
           S - sum                                   997.65 
4 comments
Erik the Outgolfer 07/29/2017
Umm, du kannst +€ mit + in 15-Byte-Version für -1 ersetzen.
Jonathan Allan 07/29/2017
Schon, danke!
Erik the Outgolfer 07/29/2017
Umm nicht in der 15-Byte-Version. EDIT: 3 Sekunden zu früh nehme ich an ...
Jonathan Allan 07/29/2017
Yup hat gerade bemerkt, dass du die 15-Byte-Version gesagt hast - Danke nochmal!

nimi 07/29/2017.

Haskell, 59 56 Bytes

f s|l<-filter(>'.')s=0.0+sum(read<$>(s<$l)++[c<$l|c<-l]) 

Die Eingabe wird als Zeichenfolge genommen.

Probieren Sie es online aus!

Wie es funktioniert

l<-filter(>'.')s      -- let l be the string of all the numbers of the input string
f s   = 0.0 + sum     -- the result is the sum of (add 0.0 to fix the type to float)
   read<$>            -- turn every string of the following list into a number
   s<$l               -- length of l times the input string followed by
   [c<$l|c<-l]        -- length of l times c for each c in l 

ETHproductions 07/29/2017.

Japt v2 , 16 Bytes

o\d
l
¬xpV +V*Ng 

Testen Sie es online!

Erläuterung

o\d    First line: Set U to the result.
o      Keep only the chars in the input that are
 \d      digits. (literally /\d/g)

l    Second line: Set V to the result.
l    U.length

¬xpV +V*Ng    Last line: implicitly output the result.
¬             Split U into chars.
 x            Sum after
  pV            repeating each V times.
     +V*Ng    Add V * first input (the sum of the horizontals) to the result. 

Ian H. 07/31/2017.

C # (.NET Core), 150 141 133 Byte

Saved 9 bytes thanks to @TheLethalCoder
Gespeichert weitere 8 Bytes dank @TheLethalCoder

a=>{var c=(a+"").Replace(".","").Replace("-","");int i=0,l=c.Length;var r=a*l;for(;i 

Probieren Sie es online aus!

Nimmt eine Zeichenfolge als Eingabe und gibt die "quadrierte" Zahl als Float aus.


Dieser Code folgt dem folgenden Algorithmus:

  1. Erstellen Sie eine neue Zeichenfolge aus der Eingabe, aber ohne die Dezimalpunkte und Symbole, so dass wir unsere Länge und die Zahlen für die Spalten von dort erhalten können.

  2. Berechnen Sie die Eingabe mal die Länge der Zeichenfolge, die wir an Punkt 1 erstellt haben.

  3. Erstellen Sie für jede Spalte in unserem 'Quadrat' eine neue Zeichenfolge mit der Spaltennummer und der Zeilenlänge und fügen Sie sie unserem Ergebnis hinzu.

Beispiel:

Eingabe: -135.5

  1. Wenn wir Dezimalpunkte und Symbole ersetzen, erhalten wir die Zeichenfolge 1355 , die eine Länge von 4 .
  2. Die Eingabezeiten 4: -135.5 * 4 = -542 .
  3. Jetzt erstellen wir neue Strings für jede Spalte, parsen sie und fügen sie zu unserem Ergebnis hinzu:
    1111 , 3333 , 5555 , 5555 .

Wenn wir diese Zahlen 15012 , erhalten wir 15012 , was genau unser Programm ausgibt.

5 comments
1 Dada 07/31/2017
Willkommen auf der Seite, und nette erste Antwort (die Erklärungen sind besonders geschätzt!)!
Ian H. 07/31/2017
@Dada Danke! Ich bin sogar ziemlich unzufrieden mit den Bytes, die ich aus Sachen wie string.Replace() gewonnen habe. string.Replace() , aber ich denke, das ist der einzige Weg, wie es funktioniert!
TheLethalCoder 07/31/2017
Möglicherweise können Sie einige Bytes speichern, indem Sie i und l auf floats setzen.
Ian H. 07/31/2017
@TheLethalCoder Auch daran gedacht, leider funktioniert die Indizierung nicht mit Floats, und .Length kann nicht implizit in float konvertiert werden.
1 TheLethalCoder 07/31/2017
a=>{var c=a.Replace(".","").Replace("-","");int i=0,l=c.Length;var r=float.Parse(a)*l;for(;i 141 Bytes. Könnte in der Lage sein, durch Eingabe als float zu speichern und mit n+"" auf einen String zu werfen, aber ich habe es nicht überprüft.

Erik the Outgolfer 07/29/2017.

Brachylog , 23 Bytes

{∋ịṫ}ᶠ⟨≡zl⟩j₎ᵐ;[?]zcịᵐ+ 

Probieren Sie es online aus!

Brachylog passt nicht gut zu Schwimmern ...

Erläuterung:

{∋ịṫ}ᶠ⟨≡zl⟩j₎ᵐ;[?]zcịᵐ+ Takes string (quoted) input, with '-' for the negative sign
     ᶠ                  Return all outputs (digit filter)
{   }                    Predicate (is digit?)
 ∋                        An element of ? (input)
  ị                       Convert to number (fails if '-' or '.')
   ṫ                      Convert back to string (needed later on)
      ⟨   ⟩             Fork
       ≡                 Identity
         l               Length
                        with
        z                Zip
             ᵐ          Map
            ₎            Subscript (optional argument)
           j              Juxtapose (repeat) (this is where we need strings)
              ;         Pair with literal
               [ ]       List
                ?         ?
                  z     Zip
                   c    Concatenate (concatenate elements)
                     ᵐ  Map
                    ị    Convert to number
                      + Add (sum elements) 

Zgarb 07/29/2017.

Husk , 15 Bytes

§+ȯṁrfΛ±TṁrSR#± 

Nimmt eine Zeichenfolge und gibt eine Zahl zurück. Probieren Sie es online aus!

Erläuterung

Es ist ein bisschen ärgerlich, dass die integrierte Parsing-Funktion r Parsing-Fehler bei ungültigen Eingaben liefert, anstatt einen Standardwert zurückzugeben, was bedeutet, dass ich die Spalten, die aus Nicht-Ziffern bestehen, explizit herausfiltern muss. Wenn es bei fehlerhaften Eingaben 0 fΛ± , könnte ich fΛ± und 3 Bytes speichern.

§+ȯṁrfΛ±TṁrSR#±  Implicit input, e.g. "-23"
             #±  Count of digits: 2
           SR    Repeat that many times: ["-23","-23"]
         ṁr      Read each row (parse as number) and take sum of results: -46
  ȯṁrfΛ±T        This part is also applied to the result of SR.
        T        Transpose: ["--","22","33"]
     fΛ±         Keep the rows that contain only digits: ["22","33"]
   ṁr            Parse each row as number and take sum: 55
§+               Add the two sums: 9 

Mr. Xcoder 07/29/2017.

Python 3 , 95 94 87 85 84 Bytes

 def f(i):l=[x for x in i if"/" 

Testsuite

Python 3 , 78 Bytes

 lambda x:sum(float(i*len(z))for z in[[i for i in str(x)if"/" 

Testsuite

Der zweite Ansatz ist ein Port zu Python 3, der von der Lösung von @ officialaimm inspiriert wurde.


ThePirateBay 07/31/2017.

JavaScript, 75 62 Bytes

a=>(b=a.match(/\d/g)).map(b=>a+=+b.repeat(c),a*=c=b.length)&&a 

Probieren Sie es online aus

-2 bytes thanks to Arnauld
-5 bytes thanks to Shaggy (Ich muss die Funktion eine Nummer erhalten, aber jetzt sehe ich, dass viele andere Antworten ebenfalls eine Zeichenfolge erhalten)


Xcali 08/05/2017.

Perl 5 , 37 33 + 1 (-p) = 38 34 Bytes

 $_*=@n=/\d/g;for$\(@n){$_+=$\x@n} 

Probieren Sie es online aus!

Verwendete einige Tricks von Doms Code, um 4 Bytes zu rasieren

Explained:

 @n=/\d/g;    # extract digits from input
$_*=@n;      # multiply input by number of digits
for$\(@n){   # for each digit:
  $_+=       # add to the input
  $\x@n}     # this digit, repeated as many times as there were digits
             # taking advantage of Perl's ability to switch between strings
             # and numbers at any point 
3 comments
Dom Hastings 07/31/2017
Kam zu einem sehr ähnlichen Ansatz, schaffte es aber, ein paar Bytes mit $ loszubekommen und die Schleife zu verlassen: Probieren Sie es online aus!
Xcali 08/05/2017
Ich habe etwas Inspiration von dir benutzt, um meine Mine zu rasieren. Was ist das Konstrukt "} {" am Ende von dir? Ich kenne das nicht.
Dom Hastings 08/05/2017
Es ist eine, die ich von dieser Seite gelernt habe, im Grunde genommen -n und -p buchstäblich eine while(){...} um den Code, damit }{ bricht daraus heraus. Dies setzt $_ aber wenn Sie $\ als Variable verwenden, wird es trotzdem gedruckt, da jedem Ausdruck $\ angehängt ist. Bedeutet, dass Sie die Nummer oder etwas darin speichern und $_ ignorieren können. Nicht sicher, dass das eine großartige Erklärung war, aber schau dir die Tipps zum Golfspielen in Perl an , ich bin mir sicher, dass es das besser erklären wird! Ich bin froh, dass ich deiner Punktzahl geholfen habe!

Erik the Outgolfer 07/29/2017.

Gelee , 17 Bytes

ŒṘfØDẋ€L©$ŒV;ẋ®$S 

Probieren Sie es online aus!


Erik the Outgolfer 07/29/2017.

Pyth, 18 Bytes

s+RvQsM*RF_lB@jkUT 

Probieren Sie es hier aus.


Mr. Xcoder 07/29/2017.

Pyth , 21 20 Bytes

K@jkUTQ+smv*lKdK*lKv 

Testsuite

Verwendet einen völlig anderen Ansatz als @ EriktheOutgolfers Antwort , was mir half, 1 Byte im Chat von 22 auf 21 zu spielen.


Erläuterung

  K@jkUTQ+s.ev*lKbK*lKv   K @ jkUTQ - Filtert die Ziffern und weist sie einer Variablen K zu.           m - Karte.  Iterierte durch die Ziffern mit einer Variablen d             v - Auswerten (in Float konvertieren).              * lKd - Multipliziert jede String-Ziffer mit der Länge von K.          s - Summe         + - Summe                   * lKvQ - multipliziert die Zahl mit der Länge der Ziffern 

officialaimm 07/30/2017.

Python 2 , 81 74 Bytes

-7 bytes thanks to @Mr. Xcoder -7 bytes thanks to @Mr. Xcoder : '/'

  • Nimmt in Integer oder Float, gibt Float zurück.
 lambda x:sum(float(i*len(z))for z in[[i for i in`x`if"/" 

Probieren Sie es online aus!

Erläuterung:

Say 123.45 wird als Eingabe angegeben. [i for i in`x`if"/" gibt eine Liste stringed Ganzzahlen ['1','2','3','4','5'] (die auch z ). Jetzt durchlaufen wir [x]+z ie [123.45,'1','2','3','4','5'] und multiplizieren jedes Element mit len(z) , hier 5 und wandeln jedes in a um Float (damit auch Strings entsprechend konvertiert werden), was [617.25,11111.0,22222.0,33333.0,44444.0,55555.0] , [617.25,11111.0,22222.0,33333.0,44444.0,55555.0] . Schließlich berechnen wir die sum(...) und erhalten 167282.25 .

4 comments
Mr. Xcoder 07/29/2017
78 Bytes . Ersetzen Sie i.isdigit() durch "/"
1 Mr. Xcoder 07/29/2017
74 Bytes . Sie können i.isdigit() durch "/" ersetzen, weil beide . und - haben niedrigere ASCII-Codes als Ziffern, adn / ist dazwischen
officialaimm 07/29/2017
@ Mr.Xcoder Vielen Dank!
Mr. Xcoder 07/29/2017
Bitte. Ich habe es als Alternative zu meiner Antwort auf Python 3 portiert

Bruce Forte 07/30/2017.

Oktave , 100 82 Bytes

Vielen Dank @TomCarpenter, dass er mir beigebracht hat, dass Aufgaben einen Rückgabewert haben und mir 18 Bytes sparen!

 @(v)(n=nnz(s=strrep(num2str(abs(v)),'.','')-'0'))*v+sum(sum(s'*logspace(0,n-1,n))) 

Probieren Sie es online aus!

Ungolfed / Erklärung

 function f=g(v)
  s=strrep(num2str(abs(v)),'.','')-'0';  % number to vector of digits (ignore . and -)
  n=nnz(s);                              % length of that vector
  f=n*v+sum(sum(s'*logspace(0,n-1,n)))   % add the number n times and sum the columns of the square
end 

Die Art und Weise, wie dies funktioniert, besteht darin, dass wir die Zahl selbst n mal hinzufügen müssen und dann die Summe der Spalten hinzufügen müssen. Summierung s' * logspace(0,n-1,n) erreicht die Summe der Spalten, zum Beispiel wenn v=-123.4 diese Matrix wird:

 [ 1     10    100   1000;
  2     20    200   2000;
  3     30    300   3000;
  4     40    400   4000 ] 

Also müssen wir es zusammenfassen und wir sind fertig.

1 comments
1 Tom Carpenter 07/30/2017
Sie können 18 Bytes speichern, indem Sie alles in eine anonyme Funktion einfügen @(v)(n=nnz(s=strrep(num2str(abs(v)),'.','')-'0'))*v+sum(sum(‌​s'*logspace(0,n-1,n)‌​)) . Probieren Sie es online aus!

Mr. Xcoder 07/30/2017.

Swift 4 , 139 134 Bytes

 func f(s:String){let k=s.filter{"/"<$0};print(Float(s)!*Float(k.count)+k.map{Float(String(repeating:$0,count:k.count))!}.reduce(0,+))} 

Testsuite


Erläuterung

  • func f(s:String) - Definiert eine Funktion f mit einem expliziten String-Parameter s .

  • let k=s.filter{"/"<$0} - Filtert die Ziffern: Ich habe festgestellt, dass beide - und . habe kleinere ASCII-Werte als alle Ziffern und / ist dazwischen . , - und 0 . Daher habe ich einfach überprüft, ob "/" kleiner als das aktuelle Zeichen ist, wie ich es in meiner Python-Antwort getan habe.

  • print(...) - Druckt das Ergebnis.

  • Float(s)!*Float(k.count) - Konvertiert sowohl die Float(s)!*Float(k.count) als auch die Anzahl der Ziffern in Float und multipliziert sie (Swift erlaubt keine Float- und Int-Multiplikation :()). Also fügt es die Zahl x mal hinzu, wobei x die Anzahl der Ziffern ist, die es enthält.

  • k.mapNO maps over k with the current value $0 . - k.map{} über k mit dem aktuellen Wert $0 . String(repeating:$0,count:k.count) nimmt jede Ziffer, erzeugt einen String mit x identischen Ziffern und Float(...)! wandelt es in eine Fließkommazahl um.

  • .reduce(0,+) - Ruft die Summe der obigen Liste ab.

  • Und schließlich + summiert sich die zwei Ergebnisse.


Nehmen wir ein Beispiel!

Sagen Sie, unsere Zeichenfolge ist "0.45" . Zunächst filtern wir die Ziffern, so dass wir mit 0, 4, 5 bleiben. Wir konvertieren "0.45" in Float und multiplizieren mit der Anzahl der Ziffern: 0.45 * 3 = 1.35 . Dann nehmen wir jede Ziffer und wandeln sie in einen String um, der diese Ziffer wiederholt, bis sie die Breite des Quadrats ausfüllt (wie viele Ziffern es gibt): 0, 4, 5 -> 000, 444, 555 . Wir addieren das, 000 + 444 + 555 = 999 . Dann addieren wir einfach die Ergebnisse zusammen: 1.35 + 999 = 1000.35 .


TheLethalCoder 07/31/2017.

C #, 139 137 Bytes

 using System.Linq;n=>{var d=(n+"").Where(char.IsDigit);return d.Sum(i=>int.Parse(new string(i,d.Count())))+new int[d.Count()].Sum(_=>n);} 

Saved 2 bytes thanks to @Ian H.

Probieren Sie es online aus!

Voll / Formatierte Version:

 namespace System.Linq
{
    class P
    {
        static void Main()
        {
            Func f = n =>            {
                var d = (n + "").Where(char.IsDigit);
                return d.Sum(i => int.Parse(new string(i, d.Count()))) + new int[d.Count()].Sum(_ => n);
            };

            Console.WriteLine(f(123));
            Console.WriteLine(f(-144));
            Console.WriteLine(f(4));
            Console.WriteLine(f(244.2));

            Console.ReadLine();
        }
    }
} 
2 comments
Ian H. 07/31/2017
Sie können 2 Bytes am Anfang speichern, indem Sie var d=(n+ ... statt var d = (n ...
TheLethalCoder 07/31/2017
@IanH. Ich habe vergessen, alle Leerzeichen zu entfernen. -_- Das bekomme ich, wenn ich während eines Supportanrufs antworte.

Jenny_mathy 08/09/2017.

Mathematica, 107 Bytes

(t=Length[s=#&@@RealDigits[#]//.{a___, 0}:>{a}];If[IntegerPart@#==0,t++];t#+Tr[FromDigits@Table[#,t]&/@s])& 

Titus 08/11/2017.

PHP, 78 88 +1 Bytes

 for($e=preg_match_all("#\d#",$n=$argn);~$c=$n[$i++];)$s+=str_repeat($c,$e);echo$s+$n*$e; 

Als Pipe mit -nR .

Kann Warnungen in PHP 7.1 ergeben. Repace $c,$e mit $c>0?$c:0,$e zu beheben.


C McAvoy 07/31/2017.

Python 3 , 68 70 73 77 Bytes

 lambda n:sum(float(n)+int(_*sum(x>"/"for x in n))for _ in n if"/"<_) 

Probieren Sie es online aus!

Führt eine Schleife über jedes Ziffernzeichen und wiederholt es durch die Anzahl der Ziffern insgesamt, macht daraus eine ganze Zahl und fügt diese zu n . Auf diese Weise wird n d mal hinzugefügt, der horizontale Teil der Summe, zusammen mit der Ziffernwiederholung, die der vertikale Teil ist. Ursprünglich verwendete str.isdigit aber >"/" , dank anderen in diesem Thread, viele Bytes gespeichert. Speichert zwei Bytes, indem n als String genommen wird, aber die Ausgabe ist unordentlicher.

 lambda n:sum(n+int(_*sum(x>"/"for x in str(n)))for _ in str(n)if"/"<_) 

Probieren Sie es online aus!

Related questions

Hot questions

Language

Popular Tags