Gedrehte Position von ganzen Zahlen

20

Herausforderung:

Eingang:

Eine sortierte Liste positiver Ganzzahlen.

Ausgabe:

Die Anzahl der Ganzzahlen, die sich noch auf dem exakt gleichen Index befinden, nachdem die Ziffern in jeder Ganzzahl mehrmals nach links gedreht und die geänderte Liste erneut sortiert wurden.

Beispiel:

Eingabe: [8,49,73,102,259,762,2782,3383,9217,37846,89487,7471788]
Ausgabe (0-basierte Indizierung): 6
Ausgabe (1-basierte Indizierung):5

Warum?

0-basierte Indizierung:

After rotating each: [8,94,73,102,592,276,8227,3338,9217,63784,89487,7887471]
Sorted again:        [8,73,94,102,276,592,3338,8227,9217,63784,89487,7887471]

Input indices:        0  1  2   3   4   5    6    7    8     9    10      11
Original input-list: [8,49,73,102,259,762,2782,3383,9217,37846,89487,7471788]
Modified list:       [8,73,94,102,276,592,3338,8227,9217,63784,89487,7887471]
Modified indices:     0  2  1   3   5   4    7    6    8     9    10      11
Equal indices:        ^         ^                      ^     ^     ^       ^

So the output is: 6

1-basierte Indizierung:

After rotating each: [8,49,37,021,925,762,2278,3383,2179,37846,94878,8874717]
Sorted again:        [8,(0)21,37,49,762,925,2179,2278,3383,37846,94878,8874717]

Input indices:        1  2  3   4   5   6    7    8    9    10    11      12
Original input-list: [8,49,73,102,259,762,2782,3383,9217,37846,89487,7471788]
Modified list:       [8,21,37,49,762,925,2179,2278,3383,37846,94878,8874717]
Modified indices:     1  4  3  2   6   5    9    7    8    10    11      12
Equal indices:        ^     ^                               ^     ^       ^

So the output is: 5

Herausforderungsregeln:

  • Die Eingabeliste enthält garantiert nur positive ganze Zahlen.
  • Die Eingabeliste wird garantiert von der niedrigsten zur höchsten sortiert.
  • Die Eingabeliste enthält garantiert mindestens zwei Einträge.
  • Wie Sie oben sehen können, ist sowohl eine 0-basierte als auch eine 1-basierte Indizierung zulässig. Bitte geben Sie in Ihrer Antwort an, welche von beiden Sie verwendet haben, da die Ausgaben entsprechend unterschiedlich sein können!
  • Führende 0s nach ignoriert Drehen, die mit dem 1-basierten Beispiel gesehen werden können oben, wobei die ganze Zahl 102wird 021nach dem Drehen, und wird dann behandelt , als 21.
  • Ganzzahlen sind in der Eingabeliste garantiert eindeutig und bleiben auch nach Abschluss der Umdrehungen eindeutig.
  • Beachten Sie, dass wir nur die Positionen der gedrehten ganzen Zahlen in Korrelation mit den Positionen der Eingabe betrachten, nicht mit den Werten der Eingabeliste. Um zu verdeutlichen, was ich damit meine: Mit der Eingabeliste [1234,3412]und der 1-basierten Indizierung wird die Liste [2341,1234]nach dem Drehen jeder ganzen Zahl so oft indexiert, bis sie sortiert wird [1234,2341]. Obwohl sowohl die ursprüngliche Eingabeliste als auch die gedrehte Liste die Ganzzahl 1234an der führenden Position enthalten, sind sie nicht gleich! Der 1234wurde 3412vorher gedreht . Die 1-indizierte Ausgabe für diese Eingabeliste lautet daher 0, da die beiden Ganzzahlen ihre Positionen vertauscht haben.
  • Die Eingabe ist flexibel. Kann eine Liste / ein Stream / ein Array von Ganzzahlen / Zeichenfolgen / Ziffern-Arrays usw. sein. Bitte geben Sie an, was Sie verwendet haben, wenn Sie die Eingaben nicht als Ganzzahlen verwenden.

Allgemeine Regeln:

  • Das ist , also gewinnt die kürzeste Antwort in Bytes.
    Lassen Sie sich von Code-Golf-Sprachen nicht davon abhalten, Antworten mit Nicht-Codegolf-Sprachen zu veröffentlichen. Versuchen Sie, für jede Programmiersprache eine möglichst kurze Antwort zu finden.
  • Für Ihre Antwort gelten Standardregeln mit Standard-E / A-Regeln. Daher dürfen Sie STDIN / STDOUT, Funktionen / Methoden mit den richtigen Parametern und vollständige Programme vom Rückgabetyp, verwenden. Ihr Anruf.
  • Standardlücken sind verboten.
  • Fügen Sie nach Möglichkeit einen Link mit einem Test für Ihren Code hinzu (z. B. TIO ).
  • Außerdem wird dringend empfohlen, eine Erklärung für Ihre Antwort hinzuzufügen.

Testfälle:

Input: [8, 49, 73, 102, 259, 762, 2782, 3383, 9217, 37846, 89487, 7471788]
0-based output: 6
1-based output: 5

Input: [1234, 3412]
0-based output: 2
1-based output: 0

Input: [2349, 2820, 17499, 21244, 29842, 31857, 46645, 56675, 61643, 61787]
0-based output: 3
1-based output: 0

Input: [4976, 11087, 18732, 22643, 52735]
0-based output: 2
1-based output: 3

Input: [4414, 5866, 7175, 8929, 14048, 16228, 16809, 19166, 24408, 25220, 29333, 44274, 47275, 47518, 53355]
0-based output: 4
1-based output: 4

Input: [11205, 16820, 63494]
0-based output: 1
1-based output: 3

Sie können mit diesem ungolfed 05AB1E-Programm weitere zufällige Testfälle generieren (oder sich von diesen inspirieren lassen) , wobei die Eingabe der Größe der Zufallsliste entspricht (HINWEIS: Die Ausgabe dieses Generators entspricht möglicherweise nicht der Regel " Ganzzahlen sind garantiert eindeutig in" die Eingabeliste und bleiben nach Abschluss der Rotationen garantiert eindeutig ", denken Sie also daran, wenn Sie sie verwenden.)

Kevin Cruijssen
quelle
Dürfen wir annehmen, dass die Eingabe mindestens 2 Elemente enthält?
Robin Ryder
2
@RobinRyder Hmm, mein erster Gedanke wäre nein, aber da ich keine Testfälle mit einzelnen Elementen habe und es nicht viel zur Herausforderung beiträgt, warum nicht. Ich werde eine Regel hinzufügen, dass die Eingabeliste garantiert mindestens 2 Elemente enthält.
Kevin Cruijssen
Dürfen wir Eingaben als Liste von Zeichenfolgen akzeptieren?
Verkörperung der Ignoranz
1
@ Shaggy Ich habe die Antworten benachrichtigt, von denen ich dachte, dass sie davon profitieren würden. Wenn Sie auch solche sehen, die davon profitieren könnten, können Sie diese ebenfalls benachrichtigen.
Kevin Cruijssen
1
Aus dem Beispiel geht hervor, dass die Ausgabe "Die Anzahl der Ganzzahlen, die sich noch auf dem exakt gleichen Index befinden, nachdem die Ziffern in jeder Ganzzahl mehrmals nach links gedreht und das Array erneut sortiert wurden " lauten sollte.
qwr

Antworten:

11

R , 114 107 Bytes

-5 Bytes dank Giuseppe.

Von digEmAll überfordert.

function(l){for(j in seq(l))l[j]=rep(l[j]%/%(e=10^(b=nchar(l[j]):1-1))%%10,j+1)[j+0:b]%*%e
sum(sort(l)==l)}

Probieren Sie es online!

0-indiziert.

Ungolfed-Version:

function(l) {
  n = length(l)                         # size of input
  for (j in 1:n) {  
    b = nchar(l[j]) -1                  # number of digits in l[j] -1
    e = 10 ^ (b:0) 
    d = l[j] %/% e %% 10                # convert to vector of digits
    l[j] = rep(d, j + 1)[j + 0:b] %*% e # rotate digits and convert back to an integer
  }
  sum(sort(l) == l)                     # number of integers which are in the same position
}

Um die bZiffern einer Ganzzahl um jPositionen zu drehen , wiederholt der Code die Ziffern viele Male und nimmt dann die Ziffern in Positionen j+1bis auf j+b. Wenn Sie beispielsweise 102viermal drehen möchten, lassen Sie die Werte mit einem x(Positionen 5 bis 7) markiert :

102102102102
    xxx

Das Ergebnis ist also 021.

Robin Ryder
quelle
111 Bytes
Giuseppe
@ Giuseppe Danke! Ich muss mich erinnern seq(a=...). Ich erwarte, dass es etwas MapMagie gibt , aber meine Versuche ließen die Byteanzahl bestenfalls unverändert.
Robin Ryder
Mapkönnte ein bisschen zu teuer sein, da das functionBoilerplate mindestens 9 Bytes hat, aber wenn Sie auf 0-Indizierung umschalten, können wir 109 Bytes machen
Giuseppe
1
Guter Fund! Bis auf 107 durch die Erkenntnis, dass seq(a=l)dies seq(l)so lange sein kann, wie die Eingabe mindestens 2 Elemente hat (ich habe gefragt, ob dies in Ordnung ist).
Robin Ryder
6

05AB1E , 9 Bytes

ΣN._ï}-_O

Probieren Sie es online!

Verwendet eine 0-basierte Indizierung.

Erläuterung:

Σ    }       # sort the input by
 N._         # each number rotated its index to the left
    ï        # then cast to int (otherwise the sort is alphabetic)
      -      # subtract the input from the result
       _O    # then count the 0s
Grimmig
quelle
6

Japt -x , 10 9 Bytes

0-basiert

í¶UñÈséYn

Versuch es

í¶UñÈséYn     :Implicit input of integer array U
í             :Interleave with
  Uñ          :U sorted by
    È         :Passing each integer at 0-based index Y through the following function
     s        :  Convert to string
      é       :  Rotate right by
       Yn     :    Y negated
 ¶            :Reduce each pair by testing for equality
              :Implicit output of sum of resulting array
Zottelig
quelle
4

Gelee , 9 Bytes

Dṙ"JḌỤ=JS

Probieren Sie es online!

Monadischer Link, der eine Liste von Ganzzahlen aufnimmt und eine Ganzzahl zurückgibt, die die Anzahl der Ganzzahlen angibt, die nach dem Ausführen der Rotation mit 1-Indexierung bestehen bleiben.

Erläuterung

D         | Convert to decimal digits
 ṙ"J      | Rotate left by index
    Ḍ     | Convert back to integer
     Ụ    | Index in sorted list
      =J  | Check if equal to index in original list
        S | Sum
Nick Kennedy
quelle
4

Python 2 , 104 100 97 93 Bytes

b=[int((s*-~i)[i:i+len(s)])for i,s in enumerate(input())]
print map(cmp,b,sorted(b)).count(0)

Probieren Sie es online!

0-basierte Indizierung.

Dreht zuerst jede Zahl und vergleicht dann das Ergebnis mit dem Ergebnis, aber sortiert.


Gerettet:

  • -3 Bytes, danke an Erik den Outgolfer
  • -4 Bytes, dank Kevin Cruijssen (und seiner Regeländerung)
TFeld
quelle
-3 als volles Programm .
Erik der Outgolfer
@eriktheoutgolfer danke, ich war zu beschäftigt, um ein Lambda zu machen, das ich vergessen habe input():)
TFeld
Deshalb versuche ich zuerst, ein vollständiges Programm zu erstellen ...: D Im Ernst, wenn Sie zuerst versuchen, ein vollständiges Programm zu erstellen, werden Sie klar sehen, ob es sich lohnt, in ein Lambda umzuwandeln oder nicht. Beginnen Sie nicht gleich mit einem def(in Python 2 sind sie im Gegensatz zu Python 3 ziemlich nutzlos).
Erik der Outgolfer
Ich habe die Eingabeliste jetzt als Zeichenfolge zugelassen, sodass Sie 4 Bytes löschen können, indem Sie die gravierenden Akzente entfernen, die dies Zeichenfolge umgeben .
Kevin Cruijssen
4

R , 90 88 85 Bytes

function(x)sum(rank(as.double(substr(strrep(x,L<-sum(x|1)),y<-1:L,y+nchar(x)-1)))==y)

Probieren Sie es online!

Abgerollter Code mit Erklärung:

function(x){
    L=sum(x|1)                         # store the length of x

    R=strrep(x,L)                      # repeat each string of vector x L times

    S=substring(R,1:L,1:L+nchar(x)-1)) # for each string of R, extract a substring of the same 
                                       # length of the original number starting from index 1 
                                       # for the 1st element, index 2 for the 2nd and so on
                                       # (this basically rotates the strings )

    Y=as.double(S)                     # convert the strings to numbers

    sum(rank(Y)==1:L)                  # return the number of times the ranks of Y
                                       # match with their original positions
}
digEmAll
quelle
3

J , 28 26 Bytes

-2 Bytes danke an Jonah

1#.i.@#=[:/:#\".@|.&>":&.>

Probieren Sie es online!

Galen Ivanov
quelle
1
Nett. Sieht so aus, als könntest du das verlieren "0( online ausprobieren! ), Aber ansonsten sah ich keinen Weg, weiter Golf zu spielen.
Jonah
@Jonah Danke! Ich weiß nicht, warum ich es nicht ohne probiert habe.
Galen Ivanov
2

Stax , 11 10 Bytes

ìát'óJ♣á◄·

Führen Sie es aus und debuggen Sie es

Dieses Programm verwendet eine 0-basierte Indizierung und nimmt Eingaben als ein Array von Zeichenfolgen entgegen. Ich habe ein Byte gespart, indem ich die Gelegenheit der neuen Input Clarificatinos genutzt habe.

rekursiv
quelle
2

Perl 5 -pa , 80 Bytes

map$d{$_.substr$_,0,$b%y///c,''}=$b++,@F;$\+=$d{$_}==$r++for sort{$a-$b}keys%d}{

Probieren Sie es online!

Übernimmt die Eingabe als durch Leerzeichen getrennte Zahlen in STDIN. gibt 1-basiertes Ergebnis.

Xcali
quelle
2

Pyth , 15 Bytes

sqVSJ.ev.<`bkQJ

Probieren Sie es online! Verwendet eine 0-basierte Indizierung.

sqVSJ.ev.<`bkQJ   Implicit: Q=eval(input())
     .e      Q    Map elements of Q, as b and with index k, using:
          `b        Convert b to string
        .<  k       Rotate the above left k places
       v            Convert back to integer
    J             Store the above as J
   S              Sort the above
 qV           J   Vectorised equality check with the unsorted list
s                 Sum, implicit output
Sok
quelle
@FryAmTheEggman Ich habe jetzt eine Liste von Zeichenfolgen als Eingabe zugelassen, daher ist sie jetzt gültig.
Kevin Cruijssen
@FryAmTheEggman Wahrscheinlich hast du recht, ich hatte nicht über lexografische Sortierung oder Ganzzahlsortierung nachgedacht, als ich das wegließ. sDie ursprüngliche Version des Codes hatte einen vähnlichen Effekt. Ich bearbeite es wieder in
Sok
Nun, Kevin weist darauf hin, dass Sie das Backtick fallen lassen und die Eingabe als Liste von Zeichenfolgen verwenden können, um ein Byte zu speichern.
FryAmTheEggman
2

APL + WIN, 23, 21, 19 Bytes

2 Bytes werden durch Eingabe der ganzen Zahlen als verschachtelter Vektor von Zeichen gespeichert

+/i=⍋⍎¨(i←⍳⍴v)⌽¨v←⎕

1 indiziert.

v←⎕ prompt for input. 

(i←⍳⍴v)⌽¨ rotate each set of characters by input indices.

⍋⍎¨ convert characters to integers and get sorted indices.

+/i= sum where original and sorted indices are the same.

Probieren Sie es online! Mit freundlicher Genehmigung von Dyalog Classic

Graham
quelle
Ich bin mir nicht sicher, ob es Bytes speichern würde, aber ich habe die Eingabe jetzt als Liste von Zeichenfolgen oder als Liste von Ziffernlisten zugelassen.
Kevin Cruijssen
@ KevinCruijssen Vielen Dank für den Hinweis. Durch die Eingabe eines verschachtelten Zeichenfolgenvektors werden 2 Byte gespart
Graham
2

JavaScript (Node.js) , 107 99 95 Byte

-8 Bytes Vielen Dank an @Shaggy, dass er stattdessen eine Reihe von Zeichenfolgen akzeptiert. Weitere 4 Bytes davon golfen. Löst dieses Mal keinen Speicherfehler aus.

a=>[...b=a.map(F=(x,i)=>i--?F(x.slice(1)+x[c=0],i):x)].sort((p,q)=>q-p).map(x=>c+=x==b.pop())|c

Probieren Sie es online!

JavaScript (Node.js) , 111 107 Bytes

-4 Bytes Danke @Arnauld!

a=>[...b=a.map((x,i)=>"".padEnd(x+i,x+=c='').substr(i,x.length))].sort((p,q)=>q-p).map(x=>c-=x==b.pop())|-c

Probieren Sie es online!

JavaScript (Node.js) , 113 111 Bytes

a=>[...b=a.map((x,i)=>"".padEnd(x+i,x).substr(i,`${x}`.length))].sort((p,q)=>p-q).map((x,i)=>x-b[i]||c++,c=0)|c

Probieren Sie es online!

0-indiziert. Kann bei sehr großen Einträgen einen Speicherfehler auslösen.

Shieru Asakoto
quelle
2
99 Bytes , wobei die Eingabe als Array von Ganzzahlzeichenfolgen interpretiert wird.
Shaggy
@ Shaggy Danke, und es ist jetzt 95 Bytes;)
Shieru Asakoto
2

Perl 6 , 50 Bytes

{sum ^$_ Z==sort {+[~] rotate .[$^i].comb,$i},^$_}

Probieren Sie es online!

0-basierte Indizierung. Außerdem wurde ein Rakudo-Bug entdeckt .

Erläuterung

{                                                }  # Anonymous block
            sort                              ^$_   # Sort indices 0..n
                 {                          },  # by
                              .[$^i]            # element at index i
                                    .comb       # split into chars
                       rotate            ,$i    # rotated i times
                   [~]  # joined
                  +     # converted to number
     ^$_ Z==  # Pairwise equal to original indices 0..n
 sum   # Sum of equal indices
nwellnhof
quelle
2

PHP ,159 141 134 130 Bytes

function($a){foreach($a as$x){for($j=$i;$j--;$x=substr($x,1).$x[0]);$b[$x]=$i++;}ksort($b);foreach($b as$z)$y+=++$j==$z;return$y;}

Probieren Sie es online!

Nullbasierte Indizierung.

Ungolfed:

function( $a ) { 
    // iterate through digits
    foreach( $a as $x ) {
        // rotate the digits the number of times based on their index
        for( $j = $i; $j--; ) {
            // move first digit to last digit
            $x = substr( $x, 1 ) . $x[0];
        }
        // the new number is used as key for sort, value is the original index
        $b[ $x ] = $i++;
    }
    // sort by the new numbers
    ksort( $b );
    // iterate sorted array
    foreach( $b as $z ) {
        // if new index matches original index, increment count ($y)
        if ( ++$j == $z ) {
            $y++;
        }
    }
    return $y;
}
  • -4 Bytes Eingabe als Array von Strings, danke an @KevinCruijssen für den Hinweis.
640 KB
quelle
Ich kenne PHP nicht so gut, aber ich erlaube jetzt eine Liste von Strings anstelle von ganzen Zahlen, also kann man das entfernen .=''?
Kevin Cruijssen
@ KevinCruijssen Sie sind richtig. Wenn Sie ein Array von Zeichenfolgen verwenden, ist dies nicht mehr erforderlich. Ich werde entsprechend aktualisieren.
29.
2

K (Kona) , 25 21 Bytes

-4 Bytes dank ngn!

{+/t=<.:'(t:!#x)!'$x}

Probieren Sie es online!

Galen Ivanov
quelle
1
{.:y!x}'[$x;t:!#x]->.:'(t:!#x)!'$x
ngn
@ngn Danke, es ist jetzt viel besser!
Galen Ivanov
2

T-SQL-Abfrage, 99 Byte

Sql hat keine rotierende Methode, daher musste ich meine eigene Syntax implementieren, da dies eine Abfrage ist, die ohne Schleifen ausgeführt werden musste.

0-basierte Indizierung.

Verwendung einer Tabellenvariablen als Eingabe.

SELECT-sum(1/~(z*3))FROM(SELECT~i+rank()over(order by
substring(n+n,i%len(n)+1,len(n))*1)z FROM @)c

Probieren Sie es online aus

t-clausen.dk
quelle
1

Symbol , 141 Bytes

procedure f(l)
n:=0
b:=[]
t:=l[k:=1to*l]&m:=k%*t&t:=t[m+1:0]||t[1:m+1]&put(b,[+t,l[k]])&\x
l[i:=1to*l]=sortf(b,1)[i,2]&n+:=1&\x 
return n
end

Probieren Sie es online!

1-basierte Indizierung

Galen Ivanov
quelle
1

Perl 5 , 104 Bytes

sub f{my$i;grep/\d+$/&&$i++==$&,sort{$a<=>$b}map{my$n=shift;map$n=~s/(.)(.+)/$2$1/,1..$_;"$n.$_"}0..$#_}

Probieren Sie es online!

0-basierte Indizierung in Perl. Ungolfed und kommentiert:

sub f {
  my $i;                            #index counter
  grep /\d+$/ && $i++==$&,          #keep/return elems where $i matches original index stored as decimals
  sort { $a<=>$b }                  #sort rotated elems numerically (<=> is the numerical comparison op
  map {                             #loop through input
    my $n = shift;                  #shift(@_) got elem from input array @_
    map $n=~s/(.)(.+)/$2$1/, 1..$_; #rotate left times current index 
    "$n.$_"                         #use rotated number with original index number as decimals (to dont affect sort)
  }
  0..$#_
}
Kjetil S.
quelle
1

Rubin -ap , 77 Bytes

1-indiziert. Wurde temporär gelöscht, weil ich einen Teil der Spezifikation verpasst habe.

-pLiest eine STDIN-Zeile und gibt sie $_am Ende aus. -ateilt die gelesene Zeile durch Leerzeichen und speichert sie als $F.

i=0
$_=$F.zip($F.sort_by{|s|s.chars.rotate(i+=1).join.to_i}).count{|a,b|a==b}

Probieren Sie es online!

Wert Tinte
quelle
Sie können 2 Bytes sparen, indem Sie [...].join.to_idurcheval [...]*''
Türknauf
1
@Doorknob leider nicht ... es gibt Randfälle, in denen, wenn eine Zahl gedreht wird, um eine führende Null zu haben, evaldiese als Basis-8-Zahl interpretiert wird, was unsere Zählungen durcheinander bringen könnte ...
Value Ink
1

Wolfram Language (Mathematica) , 65 Byte

o=Ordering
g=Count[o@MapIndexed[FromDigits@*RotateLeft,#]-o@#,0]&

Probieren Sie es online!

1-basiert. Wir nehmen die Eingabe als Liste von Ziffernlisten, was funktioniert, weil Mathematica die Listen nach Länge sortiert und dann lexikographisch, dh genau wie die ursprünglichen Zahlen.

Lirtosiast
quelle
1

Bash , 204 201 Bytes

Das einzig Interessante hier ist (möglicherweise) die Verwendung von eval. Der Algorithmus ist auch insofern klobig, als er eine sortierte Liste erstellt und diese dann liest, um geänderte Indizes zu bestimmen.

1-basierte Lösung. Mein Dank geht an @RobinRyder für den hilfreichen Rotationsalgorithmus.

for((i=1;i<$#+1;i++));do eval s=\${$i};for((j=0;j<i;j++));do eval s=${s}\${$i};done;eval n=\${s:$i:\${#$i}};echo $n $i;done|sort -nk1,1|{ i=1;c=0;while read d j;do((i==j))&&((c++));((i++));done;echo $c; }

Probieren Sie es online!

Überarbeiteter Code nach Kevins Kommentaren; Probieren Sie es online!

PJF
quelle
Ich kenne Bash nicht so gut, aber ich denke, Sie können den letzten Zwischenraum entfernen ;}. Sie können auch Ihre erste Schleife in ändern for((i=0;++i<=$#;));.
Kevin Cruijssen
@ KevinCruijssen - Normalerweise habe ich festgestellt, dass Bash und Freunde diesen Platz zum Parsen der Befehlszeile benötigen. Bei dieser Gelegenheit haben Sie Recht, es kann entfernt werden. Schöne Idee, um neu zu gründen und vorzukrementieren. 202 Bytes.
PJF
1

Scala , 200 160 Byte

def f(a:Seq[String])=
  a.zipWithIndex
   .map(x=>{val r=x._2%x._1.size;x._1.drop(r)+x._1.take(r)->x._2})
   .sortBy(_._1.toInt)
   .zipWithIndex
   .filter(x=>x._1._2==x._2)
   .size

Probieren Sie es online!

0-indiziert. 160 Zeichen nach Entfernen von Einrückungen und Zeilenumbrüchen. Dies druckt 6:

println( f(Seq("8","49","73","102","259","762","2782","3383","9217","37846","89487","7471788")) )
Kjetil S.
quelle