Ohita kuin kani!

Erik the Outgolfer 08/26/2017. 30 answers, 2.887 views
code-golf array-manipulation

Koska luettelo ei-negatiivisista kokonaislukuista tahansa kohtuullisessa muodossa, toista sen päälle, ohita niin monta elementtiä kuin jokainen integrointi, johon astut, sanoo.


Tässä on esimerkki:

[0, 1, 0, 2, 5, 1, 3, 1, 6, 2] | []
 ^ First element, always include it
[0, 1, 0, 2, 5, 1, 3, 1, 6, 2] | [0]
    ^ Skip 0 elements
[0, 1, 0, 2, 5, 1, 3, 1, 6, 2] | [0, 1]
          ^ Skip 1 element
[0, 1, 0, 2, 5, 1, 3, 1, 6, 2] | [0, 1, 2]
                   ^ Skip 2 elements
[0, 1, 0, 2, 5, 1, 3, 1, 6, 2] | [0, 1, 2, 3]
Skip 3 elements; you're done 

Toinen esimerkki, ei niin all-equal-delta:

[4, 5, 1, 3, 8, 3, 0, 1, 1, 3, 1, 2, 7, 4, 0, 0, 1, 2] | []
 ^ First element, always include it
[4, 5, 1, 3, 8, 3, 0, 1, 1, 3, 1, 2, 7, 4, 0, 0, 1, 2] | [4]
                ^ Skip 4 elements
[4, 5, 1, 3, 8, 3, 0, 1, 1, 3, 1, 2, 7, 4, 0, 0, 1, 2] | [4, 3]
                            ^ Skip 3 elements
[4, 5, 1, 3, 8, 3, 0, 1, 1, 3, 1, 2, 7, 4, 0, 0, 1, 2] | [4, 3, 3]
                                        ^ Skip 3 elements
[4, 5, 1, 3, 8, 3, 0, 1, 1, 3, 1, 2, 7, 4, 0, 0, 1, 2] | [4, 3, 3, 4]
Skip 4 elements; you're done 

Esimerkki out-of-bounds:

[0, 2, 0, 2, 4, 1, 2] | []
^ First element, always include it
[0, 2, 0, 2, 4, 1, 2] | [0]
    ^ Skip 0 elements
[0, 2, 0, 2, 4, 1, 2] | [0, 2]
             ^ Skip 2 elements
[0, 2, 0, 2, 4, 1, 2] | [0, 2, 4]
Skip 4 elements; you're done (out of bounds) 

säännöt

  • Et voi käyttää mitään tylsää huijausta näiden joukossa , he tekevät haasteen tylsältä ja mielenkiinnosta.
  • Palauta / tulosta vain lopputulos. STDERR-lähtö jätetään huomiotta.
  • Et voi saada syötettä merkkijonona jossakin alustassa (esim. "0102513162" ensimmäisessä tapauksessa).
  • Sinun on käytettävä syöttöä vasemmalta oikealle.
  • Kuten tehdyissä esimerkeissä, jos poistat rajat, suorittaminen päättyy ikään kuin muutoin.
  • Sinun on käytettävä 0 ohittamalla 0 elementtiä.
  • Kun syötät tyhjän luettelon ( [] ), palauta [] .

Testitapaukset

[]                                                     => []
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]                     => [0, 1, 3, 7]
[5, 1, 2, 3, 4, 5, 2, 1, 2, 1, 0, 0]                   => [5, 2, 1, 0]
[0, 1, 0, 2, 5, 1, 3, 1, 6, 2]                         => [0, 1, 2, 3]
[4, 5, 1, 3, 8, 3, 0, 1, 1, 3, 1, 2, 7, 4, 0, 0, 1, 2] => [4, 3, 3, 4]
[0, 2, 0, 2, 4, 1, 2]                                  => [0, 2, 4] 

Tämä on , joten lyhin vastaus voittaa!

5 Comments
Erik the Outgolfer 07/28/2017
Hiekkalaatikko (vain 2 k + käyttäjää)
3 Shaggy 07/28/2017
Niin, vain huomasi sen. / laittaa lasit päälle
2 Rod 07/28/2017
Todennäköisesti leprechaun ¯ \ _ (ツ) _ / ¯
1 Roman Gräf 07/28/2017
Onko okei olla jäljessä nollat ​​minun array? säästäisi minua ~ 18 tavua
1 Erik the Outgolfer 07/28/2017
@ RomanGräf Anteeksi mutta ei, se olisi liian epäselvä, koska on olemassa tapauksia, joiden pitäisi olla jäljessä 0 s tuotoksessa.

30 Answers


Rod 07/28/2017.

Python 2 , 36 tavua

 f=lambda x:x and x[:1]+f(x[x[0]+1:]) 

Kokeile verkossa!

4 comments
Mr. Xcoder 07/28/2017
Odotin saada outgolfed, mutta ei niin pahasti :)
Erik the Outgolfer 07/28/2017
Etkö pysty tekemään x[0] x[:1] sijaan x[:1] ?
Rod 07/28/2017
@EriktheOutgolfer kyllä, mutta sen täytyy olla lista, joten se olisi [x[0]]
Erik the Outgolfer 07/28/2017
@Rod Et ole tallentamassa mitään tavua x[:1] muuten ... f=lambda x:x and[x[0]]+f(x[x[0]+1:])

Mr. Xcoder 08/19/2017.

Python 2 , 49 46 * 41 tavua

Crossed out 4 on edelleen normaali 4 :(

* -3 thanks to @ASCII-only .

 l=input()
while l:print l[0];l=l[l[0]+1:] 

Kokeile verkossa!

Tulostaa tulokset erotettuna uudella rivillä, kuten OP sallitaan keskustelussa. En usko, että se voi olla lyhyempi kuin non-recursive full program .


Miten tämä toimii?

  • l=input() - lukee luettelon tavallisesta tulosta.

  • while l: - vääristää, että tyhjät luettelot ovat fakea Pythonissa, silmukoita, kunnes luettelo on tyhjä.

  • print l[0]; - Tulostaa luettelon ensimmäisen elementin.

  • l=l[l[0]+1:] - "Leikkaa kuin kani" - Leikkaa ensimmäinen l[0]+1 listasta.

Otetaan esimerkki

Ottamalla syötteenä luettelo [5, 1, 2, 3, 4, 5, 2, 1, 2, 1, 0, 0] , koodi suorittaa seuraavat (yllä olevan selityksen mukaan) - Tulostaa ensimmäisen array: 5 , leikkaa ensimmäinen 6: [2, 1, 2, 1, 0, 0] . Sitten tulosta 2 ja leikkaa ensimmäinen 3: [1,0,0] . Samoin tuotamme 1 , rajaamme ensimmäisen 2, ja saamme [0] . Tietenkin 0 tulostetaan ja ohjelma päättyy.

1 comments

w0lf 07/28/2017.

Haskell, 29 27 26 tavua

 j(x:y)=x:j(drop x y)
j x=x 

Tallennettu 1 tavu Zgarbin ansiosta.

Kokeile sitä verkossa.

2 comments
Zgarb 07/28/2017
f x=x toisella rivillä tallentaa tavun.
w0lf 07/28/2017
@Zgarb Cool, kiitos!

Adnan 07/28/2017.

05AB1E , 10 9 tavua

[¬Dg>#=ƒ¦ 

Käyttää 05AB1E koodausta. Kokeile verkossa!

1 comments
Magic Octopus Urn 07/28/2017
Joo, se on parempi kuin mitä ajattelin.

Martin Ender 07/28/2017.

Mathematica, 46 44 tavua

SequenceCases[#,NO 

vaihtoehdot:

SequenceCases[#,NO 
1 comments
Mr.Wizard 07/28/2017
Vau, se on hienoa!

Johan Karlsson 07/28/2017.

JavaScript (ES6), 42 39 35 tavua

a=>a.map((n,i)=>a.splice(i+1,n))&&a 

 let f = 
a=>a.map((n,i)=>a.splice(i+1,n))&&a

console.log(f([]))                                                     // => []
console.log(f([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]))                     // => [0, 1, 3, 7]
console.log(f([5, 1, 2, 3, 4, 5, 2, 1, 2, 1, 0, 0]))                   // => [5, 2, 1, 0]
console.log(f([0, 1, 0, 2, 5, 1, 3, 1, 6, 2]))                         // => [0, 1, 2, 3]
console.log(f([4, 5, 1, 3, 8, 3, 0, 1, 1, 3, 1, 2, 7, 4, 0, 0, 1, 2])) // => [4, 3, 3, 4]
console.log(f([0, 2, 0, 2, 4, 1, 2]))                                  // => [0, 2, 4] 

Vanha ratkaisu 39 tavua

a=>a.map(n=>i--||r.push(i=n),r=i=[])&&r 

-3 bytes thanks to @ThePirateBay

1 comments
ThePirateBay 07/28/2017
39 tavua a=>a.map(n=>i--||r.push(i=n),r=i=[])&&r

TheLethalCoder 07/28/2017.

C #, 68 tavua

 a=>{for(int i=0;i 

Kokeile verkossa!

Täysi / muotoiltu versio:

 namespace System
{
    class P
    {
        static void Main()
        {
            Action> f = a =>            {
                for (int i = 0; i < a.Count; i += a[i] + 1)
                    System.Console.Write(a[i] + " ");
            };

            f(new Collections.Generic.List() { });Console.WriteLine();
            f(new Collections.Generic.List() { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 });Console.WriteLine();
            f(new Collections.Generic.List() { 5, 1, 2, 3, 4, 5, 2, 1, 2, 1, 0, 0 });Console.WriteLine();
            f(new Collections.Generic.List() { 0, 1, 0, 2, 5, 1, 3, 1, 6, 2 });Console.WriteLine();
            f(new Collections.Generic.List() { 4, 5, 1, 3, 8, 3, 0, 1, 1, 3, 1, 2, 7, 4, 0, 0, 1, 2 });Console.WriteLine();
            f(new Collections.Generic.List() { 0, 2, 0, 2, 4, 1, 2 });Console.WriteLine();

            Console.ReadLine();
        }
    }
} 

Listan palauttaminen on pidempi 107 tavua kohden.

 a=>{var l=new System.Collections.Generic.List();for(int i=0;i 
3 comments
2 TheLethalCoder 07/28/2017
Miksi joku vetoaa tähän?
Thomas Ayoub 07/31/2017
Pyöritä pisteet ja tee täydellinen 5k?
TheLethalCoder 07/31/2017
@ThomasAyoub Voimme vain olettaa, että se oli joku, jolla on OCD kyllä.

Zgarb 07/28/2017.

Huskus , 8 6 tavua

←TU¡Γ↓ 

Kokeile verkossa!

-2 tavua (ja täysin uusi ratkaisuidea) Leon ansiosta!

Selitys

Käytän listan kuvion Γ . Se ottaa funktion f ja listan pään x ja hännän xs ja soveltaa f : n x ja x . Jos lista on tyhjä, Γ palauttaa oletusarvon, joka on yhdenmukainen sen tyypin, tässä tapauksessa tyhjän luettelon kanssa. Otamme f olevan , joka putoaa x elementtejä xs . Tämä toiminto toistetaan sitten ja tuloksena olevat elementit kerätään luetteloon.

←TU¡Γ↓  Implicit input, e.g. [0,2,0,2,4,1,2]
    Γ↓  Pattern match using drop
   ¡    iterated infinitely: [[0,2,0,2,4,1,2],[2,0,2,4,1,2],[4,1,2],[],[],[],...
  U     Cut at first repeated value: [[0,2,0,2,4,1,2],[2,0,2,4,1,2],[4,1,2],[]]
 T      Transpose: [[0,2,4],[2,0,1],[0,2,2],[2,4],[4,1],[1,2],[2]]
←       First element: [0,2,4] 
5 comments
Leo 07/28/2017
Voit pudottaa ø: n oletusarvon ja kaikki toimii edelleen maagisesti :)
Zgarb 07/28/2017
@Leo Voi, se on ovela!
Erik the Outgolfer 07/28/2017
Miksi teit tämän?
Zgarb 07/28/2017
@ErikTheOutgolfer Tämä oli virhe (olen puhelimessani ja ilmeisesti työnnetty jotain vahingossa). Yritän kumota sen ...

Ruud 07/28/2017.

Python 2 , 59 55 tavua

 l=input()
i=0
while l[i:]:i+=1;l[i:i+l[i-1]]=[]
print l 

Kokeile verkossa!

2 comments
1 Rod 07/28/2017
Voit käyttää l[i:i+l[i-1]]=[] sijaan del l[i:i+l[i-1]]
1 ASCII-only 07/28/2017

Dave 07/28/2017.

Pyth, 22 tavua

VQ aY.(Q0VeY .x.(Q0 ;Y 

Poistettu hyödytön tavu

4 comments
Erik the Outgolfer 07/28/2017
Näen 23 tavua siellä.
Dave 07/28/2017
Typo :) anteeksi ...
3 Wheat Wizard 07/28/2017
En ole varma, miksi sinulla on alas äänestys. On mahdollista, että kun muokkaat vastauksen vahvistamista, tämä käynnisti "automaattisen alasäänestyksen". Tämän automaattisen alasävyn syyt ovat hämmentäviä ja kauheita, mutta se tapahtuu, jos järjestelmä katsoo, että vastauksesi on heikkoudesta johtuen "heikko laatu". On myös mahdollista, että joku ei pitänyt vastauksestasi, mutta en näe mitään väärin tällä hetkellä, joten en ole varma, miksi näin olisi.
isaacg 07/31/2017
Olen iloinen, että käyt Pyth!

Rod 07/28/2017.

Python 2 , 60 42 tavua

-18 tavua Luis Mendon ansiosta

 x=input()
i=0
while 1:print x[i];i+=1+x[i] 

Kokeile verkossa!


Martin Ender 07/28/2017.

Retina , 36 tavua

Tavuoletus oletetaan ISO 8859-1 -koodauksella.

.+
$*
((1)*¶)(?<-2>1*¶)*
$1
%M`.
0$ 

Syöttö ja lähtö ovat rivivälejä eroteltuna perävetolinjan kanssa.

Kokeile verkossa! (Käytä pilkkuja rivivälineiden sijasta, jotta kätevät testisovellukset ovat mahdollisia.)


Riley 07/28/2017.

Brain-Flak , 64 tavua

([]){{}(({})<>)<>{({}[()]<{}>)}{}([])}{}<>([]){{}({}<>)<>([])}<> 

Kokeile verkossa!

([]){{}                          ([])}{}                         # Until the stack is empty
       (({})<>)<>                                                # Copy TOS to off stack
                 {({}[()]<{}>)}{}                                # Pop TOS times
                                        <>([]){{}({}<>)<>([])}<> # Reverse off stack 
2 comments
6 DJMcMayhem 07/28/2017
Pyhä jysäys! Kirjoitin ratkaisun, ja sitten vieritin alas postittaa sen, mutta käy ilmi, että kirjoitimme exact saman tavan tavu tavu-byte! Jopa pienet yksityiskohdat kuten ({}[()]<{}>) vs ({}<{}>[()]) olivat samoja! Mikä sattuma!
2EZ 4RTZ 07/28/2017
@DJMcMayhem varastaa kaikki maine XD

user202729 07/28/2017.

Mathematica, 64 50 tavua

±x_List:=Prepend[±Drop[x,1+#&@@x],#&@@x]
±_=±{}={} 
1 comments
Mr.Wizard 07/28/2017
En voinut enää vastustaa golfin lisäämistä tällä siistillä koodilla; vastaukseni on alla.

jkelm 07/28/2017.

C # (.NET-ydin) , 68 tavua

 n=>{var t="";for(int i=0;i 

Kokeile verkossa!

Ottaa syötteen kokonaislukuina, palauttaa merkkijonon, joka sisältää ei-ohitettuja arvoja.

3 comments
TheLethalCoder 07/28/2017
Nizza tapa tehdä se ja tulee samaan painoon kuin painatus.
jkelm 07/28/2017
Rakastan yksinkertaisia ​​ratkaisuja. Silti täytyy oppia LINQ, kuten olen nähnyt, että lyhentää niin paljon c # lambdas ..
TheLethalCoder 07/28/2017
Lyhennetään sitä, koska voit implisiittisesti palauttaa suurimman osan ajasta. Vaikka se on heittää välillä using System.Linq; paluu using System.Linq; ja normaali silmukka.

Jarko Dubbeldam 07/28/2017.

R, 58 tavua

f=function(x,p=1)NO 

Rekursiivinen funktio. Ottaa vektorin x argumenttina ja aloittaa osoittimen p . Tämä tulostaa x n vastaavan merkinnän, tarkistaa, onko p+x[p] poistu rajoista ja jos ei, kutsuu uuden osoittimen funktion.

f=function(x,p=1,s=x[1])`if`((z<-x[p]+p+1)>sum(x|1),s,f(x,z,c(s,x[z]))) 

Tämä on vertailukelpoinen ratkaisu, joka palauttaa oikean vektorin sijasta numeroiden tulostamista.

3 comments
Giuseppe 07/28/2017
Entä numeric(0) panos? aka tyhjä array.
Jarko Dubbeldam 07/28/2017
@Giuseppe Katson sitä, kun olen tietokoneen takana
Giuseppe 08/24/2017
57 tavua! ja se käsittelee myös tyhjän kotelon.

Roman Gräf 07/28/2017.

Java (OpenJDK 8) , 53 tavua

Kiitos @ PunPun1000 ja @TheLethalCoder

 a->{for(int n=0;;n+=1+a[n])System.out.println(a[n]);} 

Kokeile verkossa!

5 comments
TheLethalCoder 07/28/2017
Tulostaisit tuloksia, kuten minun C # -vastaustani, säästävät sinua?
Roman Gräf 07/28/2017
@TheLethalCoder Ill try
TheLethalCoder 07/28/2017
Voitko tallentaa tavun siirtämällä n silmukkaan?
TheLethalCoder 07/28/2017
Plus tämä ei näytä toimivan tällä hetkellä.
PunPun1000 07/28/2017
Sinulla puuttuu paren (a[n+=1+a[n]] . Toiminto heittää virheen oikean arvon antamisen jälkeen, en tiedä konseptia siitä, onko tämä sallittu vai ei (kysymys ei sanoa mitään vakio virhe on sivuutettu) .Jos tämä oli tarkoitus, niin voit poistaa n varten silmukan. Lopuksi TIO-koodi ei toimi kuten on, vaikka paren. Consumer ja käytä func.accept(test)

Martin Ender 07/28/2017.

Alice , 15 tavua

/$.. \h&
\I@nO/ 

Kokeile verkossa!

Syötä ja anna tulosteiden erotusluettelot desimaalilukuista.

Selitys

/   Switch to Ordinal mode.
I   Read a line.
.   Duplicate it.
n   Logical NOT (gives truthy if we're at EOF).
/   Switch to Cardinal.
    The IP wraps around to the left.
\   Switch to Ordinal.
$@  Terminate the program if we're at EOF.
.   Duplicate the input line again.
O   Print it.
\   Switch to Cardinal.
h   Increment the value.
&   Store the result in the iterator queue.
    The program wraps around to the beginning. 

Integer n tallentaminen iterator-jonoon aiheuttaa seuraavan komennon suorittamisen n kertaa. Peilit, kuten / eivät ole komentoja, joten seuraava komento on I Siksi jos lukea ja tulostaa arvo x , luemme x+1 arvot seuraavalla iteroinnilla, ja viimeinen niistä päättyy pinoon. Tämä ohittaa tarvittavat numerolistaelementit.


Mr.Wizard 07/28/2017.

Mathematica , 37 (30)

Lisäksi user202729: n hieno menetelmä golfaa.

±NO 

Säännöt eivät näytä nimenomaisesti määriteltävän tulostusmuotoa, joten ehkä:

±NO 

Toinen toiminto näyttää: 0.2.4.{} - erityisesti {} palautetaan edelleen tyhjälle sarjalle, joka vastaa lopullista sääntöä.

2 comments
1 JungHwan Min 07/28/2017
±Drop[NO voi olla ±NO koska ± on alhaisempi etuoikeus kuin Infix .
Mr.Wizard 07/28/2017
@JungHwanMin Kaipasin sitä; Kiitos!

Jenny_mathy 07/28/2017.

Mathematica, 65 tavua

(s=#;t=1;w={};While[t<=Length@s,AppendTo[w,k=s[[t]]];t=t+k+1];w)& 

Kokeile verkossa!


w0lf 07/28/2017.

Ruby, 36 33 31

f=->l{a,*l=l;a&&f[l.drop(p a)]} 

Kokeile sitä verkossa.

4 comments
sethrin 07/30/2017
Oletetaan, että vähennät f= otsikon elementiksi.
w0lf 07/30/2017
@ ksetriini Vaikka minun täytyy kutsua sitä rekursiivisesti?
sethrin 07/30/2017
Hmm, hyvä kysymys. Luulen, että ei. Olin todella paljon mieltä siitä ratkaisustasi, muuten.
w0lf 07/30/2017
@ ksetriini Kiitos! :)

AnonymousReality 07/28/2017.

Swift, 63 tavua

func a(d:[Int]){var i=0;while i 

Tämä on ensimmäinen merkintäni koskaan, joten en ole 100% varma sääntöistä, mutta toivottavasti tämä vastaus riittää. Olen hieman epävarmana sääntöistä siitä, miten saada panos järjestelmään. Minulla on lyhyempi vastaus, jos minulla olisi sallittua ottaa funktio jonnekin, joka voi palauttaa syötteen.

2 comments
Stephen 07/28/2017
Tervetuloa PPCG! Oletusasetukset ovat, että sinulla on joko koodi, joka toimii täydellisiksi ohjelmina, joten syöttää (tavallisesti) STDIN: ssä ja tuottaa (yleensä) STDOUT: lle or funktiolle, joten syöttää (tavallisesti) toiminnallisista parametreista ja tuotoksesta (tavallisesti) funktio palauttaa.
AnonymousReality 07/28/2017
@StepHen - kiitos! Luulen, että toinen versio on virheellinen sitten. Odotan innolla enemmän!

Perl 6 , 31 tavua

 {(@_,{.[1+.[0]..*]}...^0)[*;0]} 

Testaa se

laajentunut:

 {  # bare block lambda with implicit parameter 「@_」
  (
    # generate a sequence

    @_,

    {
      .[ # index into previous value in the sequence
        1 + .[0]  # start by skipping one plus the first element
                  # of the previous value in the sequence
        ..  *     # use that to create a Range with no end
      ]
    }

    ...^  # keep doing that until: (and throw away last value)
    0     # it generates an empty list

  )[ *; 0 ]  # from every value in the sequence, get the first element
} 

Jotta voisit ymmärtää koodin toimivuuden ilman [*;0] se luo seuraavanlaisen järjestyksen:

 [0, 1, 0, 2, 5, 1, 3, 1, 6, 2],
   (1, 0, 2, 5, 1, 3, 1, 6, 2),
         (2, 5, 1, 3, 1, 6, 2),
                  (3, 1, 6, 2) 

Renzo 07/29/2017.

Yhteinen Lisp, 51 tavua

(do((x(read)(nthcdr(1+(print(car x)))x)))((not x))) 

Kokeile verkossa!


C ++ (gcc), 172 tavua

#includeint main(){std::istream& i=std::cin;char c;int a,b;while(i>>c&&i>>a){std::cout<>c&&i>>b);}std::cout< 

Kokeile sitä verkossa

Kauhea (c/91?"":" ") On oikea väli tulostuksessa. Ilman sitä (-15 tavua) lähtö on muotoa: [0,2,4] , kun vaihdan sen yksinkertaiseen " " (-9 bytes) lähtöön, on [ 0, 2, 4] (lisätila alussa) .

<<(c/93?"":"]") on vain käsittelemään [] tyhjä syöttökulmakotelo

Tulostaa mitään jälkimmäistä päätä.

1 comments
Erik the Outgolfer 07/30/2017
Voit myös tulostaa numerot, jotka on erotettu ei-numeroisella erottimella, eikä [] tarvita, ja sinulla on tyhjä ulostulo kyseiselle reunakotelolle eikä tarvetta (c/91?"":" ") . Sinun ei tarvitse vastata haasteiden esimerkkien muotoa.

Jonathan Allan 07/29/2017.

Jelly , 8 tavua

ḢṄ‘ṫ@µL¿ 

Täysi ohjelma tulostaa tuloksia, joita seuraa uusi rivi (tyhjä lista ei tuota tuottoa).

Try it online!

Millä tavalla?

ḢṄ‘ṫ@µL¿ - Main link: list of non-negative integers  e.g. [2,5,4,0,1,2,0]
       ¿ - while:           Iteration:  1                  2             3          4        5
      L  -   length (0 is falsey)       7                  4             3          1        0
     µ   - ...do:                                                                            stop
Ḣ        -   head (pop & modify)        2 ([5,4,0,1,2,0])  0 ([1,2,0])   1 ([2,0])  0 ([0])
 Ṅ       -   print it (and yield it)   "2\n"              "0\n"         "1\n"      "0\n"
  ‘      -   increment                  3                  1             2          1
   ṫ@    -   tail from index            [0,1,2,0]          [1,2,0]      [0]         []
         -
         -                       i.e. a resulting in the printing of: '''2
                                                                         0
                                                                         1
                                                                         0
                                                                         ''' 
2 comments
Erik the Outgolfer 07/30/2017
Lopuksi Jelly-vastaus! BTW Voin tehdä sen 7 tavua.
Erik the Outgolfer 07/30/2017
Ja minulla on myös luettelon palautusfunktio 18 tavulla.

Evpok 07/30/2017.

Python 3 , 35 tavua

 f=lambda h=0,*t:t and[h,*f(*t[h:])] 

Kokeile verkossa!

Suorita se f(*l) jossa l on syötteesi. Kohtuudella venyttää syöttöohjeita, mutta rakastan edistynyttä purkamista.


cliffroot 07/28/2017.

Clojure, 67 tavua

#(nth(reduce(fn[[z k]b](if(= z 0)[b(conj k b)][(- z 1)k]))[0[]]%)1) 

Aloittaa alkuparametreilla [0 []] , jossa 0 on laskuri ja [] on tulos. Jos tämän luettelon ensimmäinen elementti on 0 liittää tuloksen tulokseen argumentin n ja ylittää tämän luettelon [n [... n]] muuten alentaa ensimmäisen elementin. (tämä selitys tuntuu kauhealta minulle)

Katso sitä verkossa


Dead Possum 07/28/2017.

Python 2,4, 85 tavua

Ei ole mahdollisuutta voittaa pythonin kanssa, mutta rakastan toisiaan ja tämä saattaa olla mielenkiintoista muille.
Näyttää siltä, ​​että on olemassa hieno maaginen temppu pääsyyn rakennusluettelon sisällä ymmärtämiseen, mutta se toimii vain 2.4: ssä ja joitakin muokkauksia <= 2.3
locals()['_[1]'] se on. Python luo salainen nimi _[1] listalle, kun se luodaan ja tallennetaan locals . Myös nimet _[2] , _[3] ... käytetään sisäkkäisiin luetteloihin.

lambda n:[j for i,j in enumerate(n)if i==len(locals()['_[1]'])+sum(locals()['_[1]'])] 

Joten se laskee jo lisättyjen elementtien määrän ja niiden summan. Tulos on seuraavan halutun elementin indeksi.
Luulen, että pitäisi olla keino välttää luetteloa. Kuten input-taulukon käyttäminen suoraan indeksinä: [ n[len(locals()['_[1]'])+sum(locals()['_[1]'])] for ... ] . Mutta en pysty selvittämään kompakti tapa suojella sitä indeksilukemalta (säilyttäen sen jatkuvasti)

kirjoita kuvan kuvaus tähän


Neil 07/28/2017.

Erä, 69 tavua

:l
@if not "%1"=="" echo %1&(for /l %%i in (0,1,%1)do @shift)&goto l 

(Tarvitsen () s ympäri, for muuten goto tapahtuu silmukan sisällä.)

Related questions

Hot questions

Language

Popular Tags