Ördek, Ördek, Josephus


49

Bir Tamsayı dizisi verilen:

  1. İlk numaradan başla
  2. N konumuna atla n pozisyonları n mevcut pozisyonun değeri
  3. Mevcut pozisyonu silin, bir sonraki pozisyonun mevcut pozisyon olmasını sağlayın.
  4. Bir numara kalana kadar 2. adıma geçin
  5. Bu numarayı yazdır

kurallar

Dizi etrafına sarılır (dizideki son sayıdan sonraki sonraki sayı ilk sayıdır).

Sıfır kendini kaldırır (Açıkçası).

Negatif sayılara giriş olarak izin verilmez.

Test Kılıfları

[1] => 1
[1,2] => 1
[1,2,3] => 3
[1,2,2] => 1
[1,2,3,4] => 1
[6,2,3,4] => 4
[1,2,3,4,5] => 5
[0,1] => 1
[0,0,2,0,0] => 0

Adım adım örnek

[1,4,2,3,5]
 ^          start from the first position
   ^        jump 1 position (value of the position)
[1,  2,3,5] remove number in that position
     ^      take next position of the removed number (the 'new' 'current' position)
         ^  jump 2 positions
[1,  2,3  ] remove number in that position
 ^          take next position (looping on the end of the array)
     ^      jump 1 position
[1,    3  ] remove number in that position
       ^    take next position (looping)
 ^          jump 3 positions (looping on the end of the array)
[      3  ] remove number in that position
print 3

Örnek 2

[4,3,2,1,6,3]
 ^            start from the first position
         ^    jump 4 positions
[4,3,2,1,  3] remove number in that position    
           ^  take next position
     ^        jump 3 positions
[4,3,  1,  3] remove number in that position    
       ^      take next position
           ^  jump 1 positions
[4,3,  1    ] remove number in that position    
 ^            take next position
   ^          jump 4 positions
[4,    1    ] remove number in that position    
       ^      take next position
 ^            jump 1 position
[      1    ] remove number in that position
print 1

Bu , bayt cinsinden en kısa cevap kazanır!


14
Güzel ilk meydan okuma!
Luis Mendo

2
@LuisMendo Evet .. "gibi atla ..." zorlukları
J42161217

2
@Jenny_mathy Benzer bir şey olacağını düşünmedim, ancak Luis'in dediği gibi, sarma dizisi golf oynamak için ilginç bir mücadele yaratıyor. Sanırım: /
workoverflow

3
@EriktheOutgolfer Gerçekten bir takas değil. Buradaki elemanlar ayırt edilemez ve basamak boyutu sabittir. Luis'in çok daha yakın, ama yine de yeterince farklı olduğunu düşünüyorum.
Martin Ender

3
Son sayıyı gerçekten yazdırması gerekiyor mu, yoksa geri verebilir mi? Gerçekten sayıyı döndürmesi gerekiyor mu, yoksa işlev yerinde çalıştırıldıktan sonra dizi yalnızca sayı içeriyorsa, yalnızca dizideki yerine geçebilir mi?
iamnotmaynard

Yanıtlar:


9

Kabuğu , 7 bayt

Bu, sonucu bir tekil liste olarak döndürür.

ΩεSotṙ←

Çevrimiçi deneyin!

açıklama

Ω               Until
 ε              the result is a singleton list
     ṙ          Rotate left by
  S   ←         the first element
   ot           Then remove the first element  

7

Haskell , 54 50 48 bayt

f[x]=x
f(x:r)=f$snd<$>zip r(drop(x+1)$cycle$x:r)

Çevrimiçi deneyin!

Açıklama:

  • f[x]=x: Verilen liste bir tekil liste ise, elemanını döndür.
  • f(x:r)=f$ ...: Aksi takdirde f, aşağıdaki listeye tekrar tekrar uygulanır :
    • Geçerli listenin elemanları sonsuz bir şekilde çevrilir ( cycle$x:r),
    • ilk x+1eleman kaldırılmış olarak ( drop(x+1)$),
    • ve uzunluğu kısaltıldı r. ( snd<$>zip rdaha kısa bir alternatiftir take(length r)).

Önceki 54 bayt sürümü:

f=(%)=<<head
_%[x]=x
n%(x:r)|n<1=f r|s<-r++[x]=(n-1)%s

Çevrimiçi deneyin!



6

MATL , 21 bayt

1`yy)+ynX\[]w(5Mynq]x

Çevrimiçi deneyin! Veya tüm test durumlarını doğrulayın .

açıklama

1        % Push 1: current position in the array
`        % Do...while
  yy     %   Duplicate top two elements in the stack. Takes input implicitly
         %   in the first iteration.
         %   STACK: array, position, array, position
  )      %   Get specified entry in the array
         %   STACK: array, position, selected entry
  +      %   Add
         %   STACK: array, position (updated)
  y      %   Duplicate from below
         %   STACK: array, position, array
  n      %   Number of elements of array
         %   STACK: array, position, number of elements or array
  X\     %   1-based modulus
         %   STACK: array, position (wrapped around)
  []     %   Push empty array
         %   STACK: array, position, []
  w      %   Swap
         %   STACK: array, [], position
  (      %   Write value into specified entry in array. Writing [] removes
         %   the entry
         %   STACK: array (with one entry removed)
  5M     %   Push latest used position. Because of the removal, this now
         %   points to the entry that was after the removed one
         %   STACK: array, position
  y      %   Duplicate from below
         %   STACK: array, position, array
  n      %   Number of elements of array
         %   STACK: array, position, number of elements of array
  q      %   Subtract 1
         %   STACK: array, position, number of elements of array minus 1
]        % End. If top of the stack is nonzero, proceed with next iteration
         % STACK: array (containing 1 entry), position
x        % Delete. Implicitly display
         % STACK: array (containing 1 entry)

1
Not: Bir işaretçiyi tutmak yerine liste rotasyonlarını kullanmak muhtemelen bunu daha da kısaltır.
Outgolfer Erik

1
@Erik Teşekkürler. Ama şimdi açıklamayı eklediğim için sanırım böyle bırakacağım
Luis Mendo

Her zaman açıklamayı kaldırabilirsin, tarihte saklanacak :)
Outgolfer Erik


5

CJam , 15 bayt

l~_,({_0=m<1>}*

Çevrimiçi deneyin!

açıklama

Bir işaretçiyi izlemek yerine, diziyi döngüsel olarak değiştiririm, böylece mevcut eleman her zaman önde olur.

l~     e# Read and evaluate input.
_,(    e# Get its length L and decrement to L-1.
{      e# Run this block L-1 times...
  _0=  e#   Get the first element X.
  m<   e#   Rotate the array left by X positions.
  1>   e#   Discard the first element.
}*
       e# The final element remains on the stack and gets printed implicitly.

Maalesef bayt kaydetmeyen eğlenceli bir alternatif:

l~_{;m<1>_0=}*;

5

Beyin Flak , 88 bayt

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

Çevrimiçi deneyin!

açıklama

([[]]())                      Push negative N: the stack height - 1
{({}< … >())}{}               Do N times
     (({}))                     Duplicate M: the top of the stack
     {({}< … >[()])}{}          Do M times 
                                  Rotate the stack by 1:
          ({}< … >)               Pop the top of the stack and put it back down after
          ([]){({}{}<>)<>([])}{}  Pushing the rest of the stack on to the other one, in reverse, with the stack height added to each element (to ensure that all are positive)
          <>{({}[<>[]])<>}<>      Push the rest of the stack back, unreversing, and subtracting the stack height from each element
                      {}        Pop the top of stack

1
Çok garip bir golf ama burada 88 byte var .
Buğday Sihirbazı

1
@WheatWizard Güzel, şaşırtıcı bir şekilde daha önce böyle bir şey denedim.
H.PWiz

İnsanların nasıl böyle kodlanabileceğini asla bilemiyorum! bir sahte kod tercümanı ya da başka bir şey var mı?
workoverflow

1
@ workoverflow hayır, dürüst göründüğünden daha kolay. Gerçekten başlamadan çok göz korkutucu oldu, ancak komutların bu kadar basit olduğu zaman, öğrenmesi kolay.
H.PWiz

5

Python 2,55 bayt

def f(a):
 while a[1:]:l=a[0]%len(a);a[:]=a[-~l:]+a[:l]

Çevrimiçi deneyin!

Varsayılan olarak izin verildiği şekilde tekil bir liste olarak çıkar . Dennis'e teşekkür ederek birkaç bayt kurtardı , bana fonksiyon argümanının değiştirilmesine izin verildiğini hatırlatarak.

Nasıl çalışır

  • def f(a)- Parametreli bir fonksiyonu tanımlar a.

  • while a[1:]:- aÇıkarılan ilk eleman varken, takip etmek için kod bloğunu çalıştırın. Bir veya daha fazla öğeye sahip bir liste gerçeğe aykırıdır ve boş listeler Python'da sahtedir, bu nedenle a1 uzunluğuna ulaştığında duracaktır .

  • l=a[0]%len(a)- İlk elemanı alın ve kalanının uzunluğunu bölün a. Sonucu atayın l.

  • a[:]=a[-~l:]+a[:l]- Öğeleri asola döndürün lve birinciyi çıkarın, bunu yerine atarken a.


Python 2,63 bayt

f=lambda a,i=0:a[1:]and f(a,a.pop(((a*-~i)[i]+i)%len(a))+1)or a

Çevrimiçi deneyin!

Daha uzun olmasına rağmen, bu çok daha zarif görünüyor. Ayrıca sohbete yardımcı olduğunuz için teşekkürler.


1
a,*b=input()(Python3) gibi bir şey yapıp birkaç byte tasarruf edemez misiniz ? Ancak bunu nasıl etkileyeceğinden emin değilim lve dilim
Rod

1
@Rod Öyle sanmıyorum, girişi de Python 3'te değerlendirmem gerekecek
Bay Xcoder


4

Jöle , 9 bayt

ṙḷ/ḊµL’$¡

Çevrimiçi deneyin!

User202729 sayesinde -2 bayt

açıklama

ṙḷ/ḊµL’$¡  Main Link
     L’$¡  Repeat <length - 1> times
ṙ          Rotate left by
 ḷ/        The first element (from JHT; thanks to user202729)
   Ḋ       Take all but the first element



3

Mathematica, 36 bayt

Martin algoritmasını kullanır

#//.l:{x_,__}:>Rest@RotateLeft[l,x]&

-5 bayt Misha Lavrov && Martin Ender'den

Çevrimiçi deneyin!


1
İlk öğeyi seçmek için deseni kullanarak iki bayt kaydedebilirsiniz #//.{x_,y__}:>Rest@RotateLeft[{x,y},x]&. ( {a}Artık tek bir öğe olduğunda durur çünkü artık kalıba {x_,y__}
uymuyor

1
@MishaLavrov şu anda test edemez, ancak muhtemelen bırakarak bu daha da kısaltabilir y, listenin tamamını arayarak lve ardından kullanarak lyerine {x,y}.
Martin Ender

1
@MartinEnder Böyle demek istiyorsun - #//.l:{x_,__}:>Rest@RotateLeft[l,x]&?
Misha Lavrov

1
@MishaLavrov yep.
Martin Ender

3

J , 21 17 bayt

FrownyFrog sayesinde -4 bayt

((1<#)}.{.|.])^:_

Çevrimiçi deneyin!

Orijinal:

([:}.{.|.])^:(1<#)^:_

Nasıl çalışır:

^:_ sonuç değişmeyi bırakana kadar tekrarlayın

^:(1<#) listenin uzunluğu 1’den büyükse,

{.|.] Listeyi ilk öğe kez sola döndür

[:}. ilk elemanı düşür ve çatalı kapat

Çevrimiçi deneyin!


@ FrownyFrog Teşekkürler, bunu denemedim - çok daha iyi!
Galen Ivanov,

3

JavaScript (ES6), 54 60 bayt

@Shaggy Fixed version (+6 bytes) ile 1 bayt kaydedildi

Tek tıra düşürülen giriş dizisini değiştirir .

f=(a,p=0)=>1/a||f(a,p=(p+a[p%(l=a.length)])%l,a.splice(p,1))

Test durumları

Nasıl?

Mücadelede açıklanan algoritmayı tekrar tekrar uyguluyoruz. Sadece durma koşulu 1/abiraz garip gelebilir. Bir aritmetik işleci uygularken:

  • Birden fazla elemanın dizileri zorlanır NaNve 1/NaNaynı zamanda NaN(sahte).
  • Tam olarak, bir tam sayı dizileri ya da yol açan, bu tamsayıya zorlanırlar 1/0 = +Infinityveya 1/N = positive floatiçin N> 0 (her ikisi de truthy).
f = (a, p = 0) =>                 // a = input array, p = pointer into this array
  1 / a ||                        // if a is not yet a singleton:
    f(                            //   do a recursive call with:
      a,                          //     a
      p = (                       //     the updated pointer
        p + a[p % (l = a.length)] //
      ) % l,                      //
      a.splice(p, 1)              //     the element at the new position removed
    )                             //   end of recursive call

Olarak gören spliceorijinal diziyi değiştirir, Yapabileceğin f=(a,p=0)=>1/a||f(a,p=p+a[p]%a.length,a.splice(p,1))için 52 bayt
Shaggy

ikinci adım için doğru sonucu vermedi, adım adım örnek, f=(a,p=0)=>1/a?a:f(a,p=(p%a.length+a[p%a.length])%a.length,a.splice(p,1))tamam ama optimize edilebilir
Nahuel Fouilleul

@ NuuelFouilleul Oops. Bir noktada etrafındaki parantezlerin p+a[p]kaldırılabileceğini düşündüm . Hangi - tabii ki - durum böyle değil. Bunu bildirdiğin için teşekkürler!
Arnauld,

@Neil'in burada dikkatimi çektiği bu fikir birliğine bakın .
Shaggy

@Shaggy Ah, anlıyorum. Teşekkür ederim! (İlk kez TIO bağlantınızı kaçırdım ...)
Arnauld


3

Java 8, 79 bayt

Bu lambda a kabul eder Stack<Integer>ve bir intveya döndürür Integer.

l->{for(int i=0,s=l.size();s>1;)l.remove(i=(i+l.get(i%s))%s--);return l.pop();}

Çevrimiçi Deneyin

Ungolfed

l -> {
    for (
        int i = 0, s = l.size()
        ; s > 1
        ;
    )
        l.remove(
            i = (i + l.get(i % s)) % s--
        );
    return l.pop();
}

Teşekkür

  • Nahuel Fouilleul sayesinde -2 bayt

1
i%=sl.get(i)tarafından değiştirilirse kaldırılabilirl.get(i%s)
Nahuel Fouilleul

2

Pyth , 9 bayt

.WtHt.<Zh

Burada dene!

Bu, sonucu varsayılan olarak izin verilen şekilde tekil bir liste olarak verir .

Nasıl çalışır

.WtHt.<Zh ~ Full program.

.W        ~ Functional while. It takes three arguments, two functions: A and B
            and a starting value, which in this case is automatically assigned
            to the input. While A(value) is truthy, value is set to B(value).
            Returns the ending value. A's argument is H and B's is Z.
  tH      ~ A (argument H): Remove the first element of H. A singleton list
            turns into [], which is falsy and thus breaks the loop. Otherwise,
            it is truthy and the loops goes on until the list reaches length 1.
     .<Zh ~ B (argument Z): Cyclically rotate Z by Z[0] places, whereas Z[0]
            represents the first element of Z.
    t     ~ And remove the first element.

Not: Bu parantezleri görmek istemiyorsanız, kodun tamamını hveya eönüne eklemeniz yeterlidir.


2

Swift , 87 bayt

func f(a:inout[Int]){var i=0,c=0;while(c=a.count,c>1).1{i=(i+a[i%c])%c;a.remove(at:i)}}

Bir şekilde döndürür tekil listesinde tarafından girişini değiştirerek . Çevrimiçi deneyin!

açıklama

func f(a:inout[Int]){
  var i=0,c=0;            // Set the index i to 0
  while(c=a.count,c>1).1{ // While the length of the list > 0:
    i=(i+a[i%c])%c;       //  Add a[i] to i and loop back using modulo
    a.remove(at:i)        //  Remove a[i]
  }
}

2

Perl 6 , 46 45 bayt

(Brad Gilbert sayesinde -1 bayt)

{($_,{(|$_ xx*)[.[0]+(1..^$_)]}...1)[*-1][0]}

Çevrimiçi deneyin!

($_, { ... } ... 1)giriş listesinde başlayarak listeleri bir dizi oluşturur $_listesi akıllı eşleştiğinde, her bir ardışık eleman bağ ifadesi ile üretilir ve sonlanmasıdır 1--ie, arka 1 bir uzunluğa sahip [* - 1]son elemanı elde eder ve son [0]tek elemanı bu singleton listesinden çıkarır.

(|$_ xx *)Geçerli öğenin düz, sonsuz kopyalanan bir kopyasını oluşturur. Bu liste, .[0] + (1 ..^ $_)dizideki bir sonraki sonlu listeyi çıkarmak için aralık ile indekslenir .


1
akılda oo
Adrian

[*-1][0][*-1;0]Bir bayt tasarrufu içine birleştirilebilir . Ayrıca bir bayt tasarrufu 1..$_-1olarak 1..^$_tekrar yazılmış daha iyidir .
Brad Gilbert

@ BradGilbertb2gills Denedim [*-1;0], ama bir şekilde eşdeğer görünmüyor. İşlev daha sonra bir sayı yerine bir liste döndürür.
Sean,

Bu 1..^$_optimizasyon durmuyor
Brad Gilbert

1

Perl 5 , 47 43 41 + 2 ( -ap) = 43 bayt

$\=splice@F,($_+=$F[$_%@F])%@F,1while@F}{

Çevrimiçi deneyin!

Girdiyi boşlukla ayrılmış sayılar olarak alır.


göründüğü gibi adım adım örnek olarak tam olarak aynı değil gibi görünüyor ama daha uzun$x%=@F,splice@F,$x=($x+$F[$x])%@F,1while$#F;$_="@F"
Nahuel Fouilleul

1
wow oO Oyunumu kurmalıyım.
Adrian



1

Java 8 , 325 Bayt

golfed:

static void n(Integer[]j){Integer[]h;int a=0;h=j;for(int i=0;i<j.length-1;i++){if(h.length==a){a=0;}a=(a+h[a])%h.length;h[a]=null;h=m(h);}System.out.print(h[0]);}static Integer[] m(Integer[]array){Integer[]x=new Integer[array.length-1];int z=0;for(int i=0;i<array.length;i++){if(array[i]!=null){x[z]=array[i];z++;}}return x;}

Ungolfed:

 interface ArrayLeapFrog {
static void main(String[] z) throws Exception {
    Integer[] j = {6, 2, 3, 4};
    n(j);
}

static void n(Integer[] j) {
    Integer[] h;
    int a = 0;
    h = j;
    for (int i = 0; i < j.length - 1; i++) {
        if (h.length == a) {
            a = 0;
        }
        a = (a + h[a]) % h.length;
        h[a] = null;
        h = m(h);
    }
    System.out.print(h[0]);
}

static Integer[] m(Integer[] array) {
    Integer[] x = new Integer[array.length - 1];
    int z = 0;
    for (int i = 0; i < array.length; i++) {
        if (array[i] != null) {
            x[z] = array[i];
            z++;
        }
    }
    return x;
  }
}

4
Hoşgeldiniz! Birkaç ipucu: staticBurada anahtar kelimeleri saymanıza gerek yok . Genellikle çoklu yöntem çözümleri, bir sınıfın statik olmayan üyeleri olarak uygulanır ve maintest için bir örnek oluşturur. Ayrıca, bu şekilde yaparsanız Java 7'yi destekler ve basitçe "Java" çözümü olarak gönderebilirsiniz. Gelecekte referans olması için, giriş formatı burada oldukça esnek olma eğilimindedir, bu nedenle örneğin bir girdi olarak seçmeyi seçebilirsiniz List(bu, bu problem için oldukça faydalıdır).
Jakob,

1

APL + WIN, 36 bayt

¯1↑⍎¨(1⌈¯1+⍴v←,⎕)⍴⊂'v←(1<⍴v)↓v[1]⌽v'

Açıklama:

Ekran girişi için bilgi istemi.

'v←(1<⍴v)↓v[1]⌽v' Loop logic as a string

 (1<⍴v)↓ only drop the first when number of elements n>1

 (1⌈¯1+⍴v←,⎕)⍴⊂ create a nested vector of logic of length 1 max n-1

 ⍎¨ execute each element of the nested vector in turn

¯1↑ take answer from executing final element

1

Python 2,61 bayt

def f(x):
 while x[1:]:y=x[0]%len(x);x=x[y+1:]+x[:y]
 print x

1
Bir sürü python cevabı olduğunu biliyorum, ama kendiminkini de ekleyebileceğimi düşündüm.
15'te

1

JavaScript, 58 56 59 bayt

let f =

a=>{for(i=0,k=a.length;k>1;)i+=a[i%=k],a.splice(i%=k--,1)}
<h2>Test</h2>
Enter or paste a valid array literal within square brackets and click Run.
<blockquote>
   <input id = "array" type="text" length="20">
   <button type="button" onclick="run()">Run</button>
</blockquote>
Result: <pre id="o"></pre>

<script>
    function run() {
       let a = JSON.parse(array.value);
       f(a);
       o.textContent = a;
    }
</script>

Sonucu, yerinde güncellenen giriş dizisinde kalan tek öğe olarak döndürür.

For loop gövdesinde bir blok ifadesi yerine virgülle ayrılmış bir ifade kullanılarak kaydedilen iki bayt! Dizinin sonunda silinen bir öğeden atlamak için kaybedilen üç bayt (:

Daha az golf oynadı:

a => {
    for(i=0,k=a.length;k>1;) // once less than array length
        i+=a[i%=k],          // the new index
        a.splice(            // delete an element
           i%=k--,           // ensuring index is within array,
                             // and post decrement loop count
           1
        )
}

Bu yanlış cevap veriyor gibi görünüyor [3, 5, 7, 9].
Neil

İçin yanlış [3,5,7,9]. Beklenen değer 5
edc65

İşlev değeri döndürmez, bayt sayısının bunu akılda tutmanın uygun olup olmadığından emin değilim, çünkü kendi başına çalışamaz ...
Brian H.

@ edc65 ve Neil, teşekkürler - dizinin sonunda silinen bir öğenin dizini kısaltılmış dizinin başlangıcına ayarlanmadı.
traktor53

@BrianH. işlev parametresini değiştirir, codegolf.meta.stackexchange.com/a/4942/21348
edc65

1

Brain-Flak , 104 bayt

H.PWiz'in burada yapmam için yardım ettiğim daha kısa bir cevabı var , kontrol etmelisiniz.

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

Çevrimiçi deneyin!

açıklama

([[]]())   #Push 1 minus stackheight
{({}()<    #N times
 (({}))    #Get a copy of the top
 {({}[()]< #N times
  ({}<(([])<{{}({}<>)<>([])}{}<>>)<>>)<>{({}[()]<({}<>)<>>)}{}<>
           #Roll the top to the bottom (From the wiki)
 >)}{}     #End loop
 {}        #Remove one value
>)}{}      #End loop

Rekabet edeceğimi düşündüm . Sonra farkettim ki, benimki seninkilerle tamamen aynıydı , farklı bir "top rulo" dışında
H.PWiz

Bunu gördüm ;). Her şeyin olumsuz olmadığı olgusunu kullanmak zekice.
Buğday Sihirbazı


1

R , 111 117 126 bayt

11 baytlık bir süre döngüsüne geçerek golf oynamak için @Giuseppe sayesinde, işlevi kaldırarak ve kullanıcı girdisini doğrudan okuyarak 4 tane daha aldım.

Oraya varmak için ne gerektiğine dair kendimi iyi hissetmiyorum - Eminim daha şık bir çözüm vardır.

i=scan();m=1;while((l=sum(i|1))-1){j=i[m];p=`if`(j+m>l,j%%l+!m-1,j+m);p=`if`(!p,m,p);i=i[-p];m=`if`(p-l,p,1)};i

Çevrimiçi deneyin!

Ungolfed kod

i=scan()
m=1
while((l=sum(i|1))-1){
  j=i[m]
  p=`if`(j+m>l,j%%l+!m-1,j+m)
  p=`if`(!p,m,p)
  i=i[-p]
  m=`if`(p-l,p,1)
}
i

117 bayt - bu özyinelemeli bir işlev olduğundan, adın f=dahil edilmesi gerektiğini unutmayın
Giuseppe

1
Dizi rotasyonu olmayan 1 tabanlı bir dizin dili ile bunu oldukça zor bir görev buldum; Bu potansiyel bir whiledöngü ile 1-3 bayt daha kısa olduğunu düşünüyorum.
Giuseppe


önceki 115 baytım geçersizdi, çünkü ikimizde f=özyinelemeli fonksiyonun bir kısmını unuttuk . :(
Giuseppe

Eski skoru ve yeni skoru özyinelemeyi yansıtacak şekilde güncelledim :) 'while' döngüsüyle taramayı kullanarak başka bir 4 bayt golf oynadım.
Mark
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.