En Uzun Tekrarlayan Substring


33

Girdi olarak bir dize verildiğinde, iki veya daha fazla karakter içermeyen en uzun bitişik alt dizgiyi bulun . Birden fazla alt dizge varsa, ikisini de verebilirsiniz. İsterseniz girişin yazdırılabilir ASCII aralığında olduğunu varsayabilirsiniz.

puanlama

Cevaplar ilk önce en uzun tekrar etmeyen alt dizginin uzunluğuna ve ardından toplam uzunluklarına göre sıralanacaktır. Her iki kriter için düşük puanlar daha iyi olacaktır. Dile bağlı olarak bu muhtemelen kaynak kısıtlaması olan bir mücadelesi gibi görünecektir .

abeslik

1, x (lenguage) veya 2, x (Brain-flak ve diğer turp tarpits) puanları elde eden bazı dillerde oldukça kolaydır, ancak en uzun tekrarlayan altlığı en aza indirmenin zor olduğu başka diller de vardır. Haskell'de 2 puan almaktan çok eğlendim, bu yüzden bu görevin eğlenceli olduğu dilleri aramanızı tavsiye ediyorum.

Test durumları

"Good morning, Green orb!" -> "ing, Gre"
"fffffffffff" -> "f"
"oiiiiioiiii" -> "io", "oi"
"1234567890"  -> "1234567890"
"11122324455" -> "324"

Puanlama teslimi

Aşağıdaki snippet'i kullanarak programlarınızı puanlayabilirsiniz:


Önerilen test davası: 11122324455Jonathan Allan ilk revizyonumun bunu doğru şekilde yerine getirmediğini fark etti.
Dennis

@Dennis Test durumu eklendi. Bunun nasıl olduğunu merak ediyorum.
Buğday Sihirbazı,

2
Tüm alt dizileri oluşturdum (zaten uzunluğa göre sıraladım), sonra alt dizileri tekilleştirdim ve alt dizilerde kalanları sakladım. Ne yazık ki, bu sırayı değiştirir; 11122sonra okur324 , ancak tekilleşir 12.
Dennis

Boşluk cevabının nerede olduğunu merak ediyorum.
Magic Octopus Urn

Yanıtlar:


13

C, puan 2,  747   720  662 bayt

L  [  1  <<  7  ]  ,  *  q  ,  *  r  ,  l  ,  d  ,  i  ,  c  ,  j  ,  s  ,  t  ,  k  =  1  <<  7  ;  h  (  )  {  q  =  s  +  i  +  j  ++  ;  *  q  %  k  &&  !  L  [  *  q  %  k  ]  ++  &&  h  (  ++  c  )  ;  }  g  (  )  {  q  =  s  +  i  ;  *  q  %  k  ?  z  (  k  )  ,  h  (  j  =  c  =  0  )  ,  c  >  d  &&  (  d  =  c  )  &&  (  l  =  i  )  ,  g  (  ++  i  )  :  0  ;  }  f  (  S  ,  T  )  {  s  =  S  ;  l  =  i  =  d  =  0  ;  g  (  t  =  T  )  ;  p  (  i  =  0  )  ;  }  p  (  )  {  q  =  s  +  l  +  i  ;  r  =  t  +  i  ;  i  ++  <  d  ?  p  (  *  r  =  *  q  )  :  (  *  r  =  0  )  ;  }  z  (  i  )  {  L  [  --  i  ]  =  0  ;  i  &&  z  (  i  )  ;  }

En az 32 bit MinGW'de çalışır (optimizasyonlar devre dışı bırakılmış). Tek bir anahtar kelime kullanmaz.

Görünüşe göre TIO'da gcc ve clang ile de çalışıyor: Çevrimiçi deneyin! (Teşekkürler @Dennis!)

İle ara:

int main()
{
    char str[1024];

    f("Good morning, Green orb!", str);
    puts(str);

    f("fffffffffff", str);
    puts(str);

    f("oiiiiioiiii", str);
    puts(str);

    f("1234567890", str);
    puts(str);

    f("L  [  1  <<  7  ]  ,  *  q  ,  *  r  ,  l  ,  d  ,  i  ,  c  ,  j  ,  s  ,  t  ,  k  =  1  <<  7  ;  h  (  )  {  q  =  s  +  i  +  j  ++  ;  *  q  %  k  &&  !  L  [  *  q  %  k  ]  ++  &&  h  (  ++  c  )  ;  }  g  (  )  {  q  =  s  +  i  ;  *  q  %  k  ?  z  (  k  )  ,  h  (  j  =  c  =  0  )  ,  c  >  d  &&  (  d  =  c  )  &&  (  l  =  i  )  ,  g  (  ++  i  )  :  0  ;  }  f  (  S  ,  T  )  {  s  =  S  ;  l  =  i  =  d  =  0  ;  g  (  t  =  T  )  ;  p  (  i  =  0  )  ;  }  p  (  )  {  q  =  s  +  l  +  i  ;  r  =  t  +  i  ;  i  ++  <  d  ?  p  (  *  r  =  *  q  )  :  (  *  r  =  0  )  ;  }  z  (  i  )  {  L  [  --  i  ]  =  0  ;  i  &&  z  (  i  )  ;  }");
    puts(str);
}

Çıktı:

Biraz daha okunabilir formatlı kod:

L[1<<7],
*q, *r, l, d, i, c, j, s, t, k=1<<7;

h()
{
    q = s+i+j++;
    *q%k && !L[*q%k]++ && h(++c);
}

g()
{
    q = s+i;
    *q%k ? z(k), h(j=c=0), c>d && (d=c) && (l=i), g(++i) : 0;
}

f(S, T)
{
    s = S;
    l = i = d = 0;
    g(t=T);
    p(i=0);
}

p()
{
    q = s+l+i;
    r = t+i;
    i++<d ? p(*r=*q) : (*r=0);
}

z(i)
{
    L[--i] = 0;
    i && z(i);
}

Ve bu, skor 2 ile biçimlendirmeye ulaşmak için uygun boşluklar oluşturmak için kullanılabilir: Çevrimiçi deneyin!


C, puan 3, 309 bayt

i
,
j
,
l
,
c
,
d
;
f
(
\
c\
\
h\
\
a\
\
r
*
s
)
{
\
f\
\
o\
\
r
\
(
i
=
l
=
d
=
0
;
s
[
i
]
;
c
>
d
&&
(
d
=
c
)
&&
(
l
=
i
)
,
++
i
)
\
f\
\
o\
\
r
(
\
c\
\
h\
\
a\
\
r

L
[
\
1\
\
2\
\
8
\
]
=
{
j
=
c
=
0
}
;
s
[
i
+
j
]
&&
!
L
[
s
[
i
+
j
++
]
]
++
;
++
c
)
;
\
w\
\
r\
\
i\
\
t\
\
e
(
1
,
s
+
l
,
d
)
;
}

Çevrimiçi deneyin!


10

Haskell , skor 2, 492 ... 307 224 212 209 207 bayt

((yy:yyy))??ss|ss==yy  =  ""  |  yy==yy=yy:yyy??ss
ss??sss=ss
ss""=""

ss((ff:fff))  =  ff  :  ss  fff??ff
ff""=""

ff((xxx:xx))  =  ss((xxx:xx))##ff  xx
xx##xxx  |  ((((xx>>xx))<))  $  xxx>>xx=xxx|xx==xx=xx

Çevrimiçi deneyin!

İçin bayt sayesinde anlamıyla golfed yüzlerce WW ve Ørjan Johansen golfü !

açıklama

İşlev (??)bir karakter cve bir dize alır ve içermediği sen uzun ön eki döndürür . Ungolfed ve puan için optimize edilmemiş:sc

c ?? (y:s)  
    | c==y = ""
    | True = y : c ?? s
c ?? s = s

İşlev ss, (??)belirli bir dizenin benzersiz karakterlerinin en uzun önekini bulmak için kullanılır:

ss (x:r) = x : (x ?? ss r)
ss "" = ""

(##)İki dizeyi alan ve en uzun olanı döndüren bir işlevdir. Uzunluk karşılaştırma dize tekrarlayarak çalışır xsık olarak xuzun ( x>>y) gibi yuzun ( y>>xsözlük sırasında büyüktür çıkan dizeleri olan) ve kontrol.

x ## y
  | (x>>x) < (y>>x) = y
  | True = x

Son olarak ff, giriş dizgisi üzerinden sstekrarlar , en uzun ön eki oluşturur, dizenin kuyruğunun en uzun yinelenmeyen alt dizesini yinelemeli olarak belirler ve ikisinin uzunluğunu döndürür (##):

ff "" = ""
ff (x:r) = ss(x:r) ## ff r

4
224 , esas olarak ara listeyi eriterek.
Ørjan Johansen

2
Bu cevabı daha önce sohbette gönderdiğimle 216 almak için birleştirdim .
Buğday Sihirbazı,

3
209 işleri yeniden sıralayarak.
Ørjan Johansen

3
Ödül duyuru ile birlikte başka bir göz attım ve @hilenin aslında sadece ?iki karakter yapmak için 2 bayta mal olduğunu fark ettim : 207
Ørjan Johansen

5

Lua, skor 3, 274 bayt

g='g'..'s'..'u'..'b'  _G  [  'l'..'o'..'a'..'d'  ](  g[g  ](  "s  =...f  o  r d = # s - 1 , 0 , - 1 d  o f  or r = 1 , # s - d d  o t = s :s  ub  (r  ,r  +d  )i  f n  ot t:  fi  nd  '(  .)  .*  %1  't  he  n p  ri  nt  (t  )r  et  ur  n en  d e  n  d e  nd  ","  ",""))(...)

Not: Lua 5.2 veya Lua 5.3 gereklidir

Kullanımı:

$ lua lnrs.lua "Good morning, Green orb!"
ing, Gre
$ lua lnrs.lua "fffffffffff"
f
$ lua lnrs.lua "oiiiiioiiii"
oi
$ lua lnrs.lua "1234567890"
1234567890
$ lua lnrs.lua "11122324455"
324

Ana fikir: her şeyi boşluklarla serpiştirin, " "uzun tanımlayıcıları bölmek için (iki boşluk) ekleyin

Ungolfed kod:

g = "gsub"
_G["load"](
   g[g](      -- g[g] == string.gsub - a function for substitution of substrings
      "The source of actual program, but two-space sequences were inserted in some places", 
      "  ",   -- we are replacing all two-space substrings
      ""      -- with an empty string
   )
)(...)

Gerçek program (tüm boşluk çiftleri çıkarıldıktan sonra):

s = ...
for d = #s - 1, 0, -1 do
   for r = 1, #s - d do
      t = s:sub(r, r+d)
      if not t:find"(.).*%1" then
         print(t)
         return
      end
   end
end

BTW, JS pasajını hesaplamak için kodumda başarısız oluyor.


4

Retina 0.8.2 , 37 bayt, skor 9

.
$&$'¶
(.)(?<=\1.+).*

O#$^`
$.&
1G`

Çevrimiçi deneyin! Bu cevabın Retina 1'e doğrudan çevrilmesi Nyerine bir bayt tasarrufu sağlar O#. Bununla birlikte, Retina 1'in cevabını 28 byte'a düşürdüğünüzde, skor 10'a yükselir! Açıklama:

.
$&$'¶

Girişin tüm soneklerini oluşturun.

(.)(?<=\1.+).*

Her sonek için, ilk çoğaltılan karaktere kadar ön eki alın.

O#$^`
$.&

Kalan dizeleri ters uzunluk sırasıyla (örneğin en uzun) sıralayın.

1G`

En uzun sür.


4

Jöle , skor 2, 14 bayt

Ẇµµff  Q  €  Ṫ

@JonathanAllan skoru -1, +7 bayt ve bir hata fark ettiğin için teşekkürler.

Çevrimiçi deneyin!

Nasıl çalışır

Ẇµµff  Q  €  Ṫ  Main link. Argument: s (string)

Ẇ               Window; yield all substrings of s, sorted by length.
 µ              Begin a new chain. Argument: A (array of substrings)
  µ             Begin a new chain. Argument: A (array of substrings)
   f            Filter A by presence in itself. Does nothing.
       Q  €     Unique each; deduplicate all strings in A.
    f           Filter A by presence in the array of deduplicated substrings,
                keeping only substrings composed of unique characters.
             Ṫ  Tail; take the last (longest) kept substring.

4

Temiz , skor 7 5, 276 bayt

@[ss:s]=rr(pp[][ss:s])((@s))
@s=s
ee x[rr:xx]|e x rr=True=ee x xx
ee x xx=f
f=e'e'' '
e::!  Char  !  Char  ->Bool
e  _ _=  code  {

eqC
}
pp p[r:rr]|ee r p=p=pp(a r p)rr
pp a _=a
a  x[ll:l]=[ll:a x  l]
a l ll=[l]
l[]rr=e'l''l'
l ff[]=f

l[r:rr][ss:ll]=l rr ll
rr x y|l x y=y=x

Çevrimiçi deneyin! ABC makine kodunu doğrudan Temiz içinden çağırmanın mümkün olduğunu gösterdiğim için @ Οurous'a teşekkürler . Bu import, minimum puanı 7'ye ayarlayan önceki şişe boynundan kurtulmayı sağlar , ancak codebu yaklaşım için minimum puanı 5'e ayarlayan anahtar kelimeye ihtiyaç duyar .

Yukarıdaki kodun ungolfed ve skoru optimize edilmemiş bir versiyonunu burada bulabilirsiniz: Çevrimiçi deneyin!


Skoru 7, 158 154 130 bayt olan önceki sürüm

import  StdEnv  
@[xx:rr]=c(%[][xx:rr])(@rr)
@e=e
c s b|  length  s<  length  b=b=s
%s[xx:r]|  isMember xx s=s= %(s++[xx])r
%r _=r

Çevrimiçi deneyin!

İle importskor herhangi kütüphane işlevleri olmadan dizeleri veya karakter üzerine eşitliği uygulamak gerekir ithalat biri olmadan 7'nin altına gidemez muhtemelen yukarıda yeni sürümünde görülebileceği gibi, mümkün.


1
Gerçekten de, eşitliği, ABC'yi kullanarak, puanı düşürmesi gereken uygulayabilirsiniz. İlgileniyorsanız bugün daha sonra önerilen bir değişiklikle geri döneceğim.
15urous

Örneğin: char eşitliği: tio.run/##S85JTcz7/…
Feburous

@Ourous A code block with raw ABC instructions, which can be used for primitive functions like integer addition, for linking with C, bypassing the type system... welcome down the rabbit hole!( cloogle'dan ) kesinlikle davetkar görünüyor. Yarın ilgileneceğim, öneri için teşekkürler!
Laikoni,

1
Οurous teşekkür @ yine sizin karakter eşitlik testi ile skor 5'e şimdi de
Laikoni

Bu arada, -ILhiçbir şeye aktarılmadığından, herhangi bir bayrağa ihtiyacınız yoktur.
Büyük

3

Python 3 , skor 4, 155 bayt

exec(('l=la''mbd''a f'',e=en''ume''rat''e:m''ax''([f[ j  :k]  for  j,i in e ( f)f''or  k,i in e ( f )if  len  ( { *''f[j'':k]''})==k-''j],''key''=le''n)'))

Bu bir işlevi tanımlar l.

3 uzunluk uzunluğundaki dizgilerin skoru yükseltemediğine işaret eden @xnor için teşekkürler, 32 bayt tasarruf edin.

Çevrimiçi deneyin!


Dize 3 topak halinde olabilir, değil mi?
Xnor

@xnor Gerçekten de fonksiyonun ismini değiştirmek. Teşekkürler!
Dennis

3

Brachylog , skor 2, 19 bayt

s  ᶠ  l  ᵒ  ≠  ˢ  t

Çevrimiçi deneyin!

Sadece sıkıcı eski bir "boşluk her şey" cevabı. En azından metapesifiklerin, yüklemlerden uzak durabileceğini ve hala işe yaradığını öğrendim (ve (parametrik) aboneler ve üst kodlar olamaz).

s ᶠ - verilen dizgenin tüm alt dizgelerini bulun

l ᵒ - uzunluklarına göre sırala (varsayılan olarak artan)

≠ ˢ - tüm belirgin unsurlara sahip olanları seçin

t - bunun kuyruğunu (son elemanı) al - en büyük uzunluğu olanı


2

Pyth , 11 bayt, puan 4

Dennis sayesinde -4 puan

e lD {I# .:

elD{I#.:Q      Full program, inputs "string" from stdin and outputs to stdout
e              The last element of the list generated by taking
      .:Q      All substrings of the input
     #         Filtered for
   {I          Being invariant over deduplicate i.e. being "non-repeating"
 lD            and sorted by length

Çevrimiçi deneyin!


2

Husk , skor 2, 10 bayt

►IIËII≠IIQ

Çevrimiçi deneyin!

açıklama

Program buna eşdeğerdir:

►Ë≠Q  Implicit input.
   Q  List of substrings.
►     Find one that maximizes:
 Ë    all ordered pairs
  ≠   are inequal.

Yerleşik Ëdeğerlendirir tüm sıralı onun argümanının çiftlerine xve iadelerlength(x)+1 her sonuç başka türlü, truthy ise 0. Bunu maksimize ettiğimizde, tekrarlanan karakterleri olmayan en uzun dizgiyi buluyoruz.

Gönderimde, Iher bir işlev arasına kimlik işlevini iki kez ekliyorum. Yana aynıdır Ë, I≠aynı ve benzeri bu semantik değiştirmez. Tek tehlike, yüksek dereceli bir fonksiyonun Iargüman olarak birini kullanmaya karar verebilmesidir , ancak neyse ki programımızda bir tür hataya yol açar, bu yüzden olmaz.


2

Clojure, skor 4

#(  let  [N  (fn  [[_ & r]] r) R  (fn  R [f v c]  (if  c (R f (f v (  nth  c 0))  ( N  c)) v)) C  (fn  C  (  [i]  (C (  seq  i) 0)) ( [i  n]  (if i (C ( N  i )  (  inc n)) n)))  J  (fn  [c  i]  (assoc c (C  c) i)) I  (fn  F [f i n R]  (if ( =  (C  R) n) R (F f (f  i) n ( J  R (f  i)))))] ( apply  str  (R ( fn  [a  b] ( if  (< (C  a)  (C  b)) b a )) "" (  for  [k  (I N % (C  % ) [])]  (R  ( fn [ t  c ] ( if ( or ( = t (  str t) ) ((  set t)c))(apply  str t) ( J  t c)))[]k)))))

Ah dostum bu acı vericiydi! Nuygular next, Rolduğu reduce, Colduğunu count, Jolduğu conj(sadece vektörler için çalışır) ve Ibir iterate. apply strİki kere var çünkü aksi halde "aaaa" girişi bir dizge yerine bir vektör döndürmez [\a]. Neyse ki kullanmalıyım applyve assocbir dizini bir vektörün son elemanının ötesine atayabileceğinizi bilmiyordum: o




1

Python 3 , skor 4, 317 bayt

exec(('%s'  *58  %(  's=','in','pu','t(',');','pr','in','t(','so','rt','ed','((s','[i',':j',']f','or',' j',' i','n ','ra','ng','e(','1,','le','n(','s)','+1',')f','or',' i',' i','n ','ra','ng','e(','j)','if',' l','en','(s','et','(s','[i',':j',']))','==l','en','(s','[i',':j',']))',',k','ey','=l','en',')[','-1','])')))

Çevrimiçi deneyin!

Beklenmeyen kod:

s=input();print(sorted((s[i:j]for j in range(1,len(s)+1)for i in range(j)if len(set(s[i:j]))==len(s[i:j])),key=len)[-1])

lambda aiçeren mbda skoru 5 ve bir işlev ihtiyaçları olan returngörünüşte edilemez execed (böylece en az bir 5 skoru alıreturn , tam bir program gerekliydi. Beklenmeyen kod boyutunu biraz aşağıya düşürmek muhtemelen mümkün, ancak hızlı bir iyileşme göremiyorum.


1

Alice , 40 bayt

/ii..nn$$@@BBww..DD~~FF..!!nn$$KK??oo@@

(Sondaki yeni satır)

Çevrimiçi deneyin!

Talimat göstericisi sıralı modda çapraz olarak hareket eder, bu nedenle yalnızca diğer her karakter yürütülür.

i.n$@Bw.D~F.!n$K?o@

i     take input
.n$@  terminate if empty
B     push all nonempty substrings, with the longest on the top of the stack
w     push return address (start main loop)
.     make copy of current substring
D     deduplicate characters
~     swap: this places the original above the deduplicated copy
F     Push the original string if it is a substring of the deduplicated copy
      (which can only happen if they're equal); otherwise push empty string
.!    place a copy on the tape
n$K   if the empty string was pushed, return to start of loop
o     output
@     terminate

1

Perl 6 , skor: 15 10 8, uzunluk: 46 55 62 bayt

{~m:ov/(.+)<!{$0.comb.repeated}>/.max(&chars)}

Dene

{~m:ov/(..*)<!{(($0)).comb.repeated}>{{}}/.max(&chars)}

Dene

{m:ov:i/(..*)<!{(($0)).comb.repeated}>{{}}/.max((&chars)).Str}

Dene

Expanded:

{    # bare block lambda with implicit parameter 「$_」

    m                          # match (implicitly against 「$_」)
    :overlap                   # in every single way possible
    :ignorecase                # add a 「:」 to break up substring
    /

      (..*)                    # match at least one character

      <!{
        (($0)).comb.repeated  # backtrack if there were repeats
      }>

      {{}}                    # anon hash in code block (no-op)
    /

    .max((&chars))            # get the longest

    .Str                      # coerce to a Str (from a Match object)
}

88 bayt için 5 puan . Yine de golf baytlarında birkaç yer olabilir
Jo King,

1

Java 8, puan 9 (384 B) 7 (401 B)

S -> { int s = 0 , e = 0 , l = 0 , x = 0 , y = 0 , b [ ] = new int [ 256 ] ; for ( ; x <S.  length  & y <S.  length  & l <S.  length  - x ; x ++ ) { b [S[x]] = 1 ; for ( y ++ ; y <S.  length  && b [S[y]] < 1 ; b [S[y ++]] = 1 ) ; if ( l < y - x ) { s = x ; e = y ; l = y - x ; } for ( ; y <S.  length  && x < y & S[x] != S[y  ];)b [S[x ++]] = 0 ; }  String g=""; for( ; s<e ; g+= S[s++]);  return  g;}
  • İlk versiyon. Buradan aşağı inecek. Skor 9 olduğundan "ubstring ", substringdeğiştirilecek ilk kısım olacaktır.
  • Skor şimdi 7 oldu " length", ki muhtemelen daha fazla azaltamayacağım length. Dört kullanımdan vazgeçmenin mümkün olduğundan şüpheliyim . Mümkünse, " eturn"(6) skoru son gelişme olarak 1 puan daha düşürebilir, ancak sanırım bu (bayt sayısında küçük bir azalma olması dışında ..)

Çevrimiçi deneyin.



0

Mathematica, skor 11 9

Length@Last@Select[Subsequences[Characters@#],#==DeleteDuplicates  @#&]&

İşlevin adını gizleyerek en uzun olmayan yinelenen dizginin birkaç baytını tıraş:

Length@Last@Select[Subsequences[Characters  @#],#==(  ToExpression@ 
StringJoin@@FromCharacterCode@{{68},{101},{108},{101},{116},{101},{68},{117},
{112},{108},{105},{99},{97},{116},{101},{115}}))@#&]&

0

Kotlin , skor: 11 10 9 bayt, uzunluk: 227 246 245 bayt

indices
  .flatMap { p -> indices . map { p to p + it } }
  .  filter { (r,i) -> i < length  }
  .map { ( s , a )->substring  (  s,  a  ) }
  .  filter { it  .  groupBy  { it } .  none { ( k , v )->v . size>1 } }
  .maxBy { it.length }

En uzun ubstring 9 karakter

Buna şöyle denir:

val c = "Good morning, Green orb!"

fun String.c(): String? = indices
    .flatMap { p -> indices . map { p to p + it } }
    .  filter { (r,i) -> i < length  }
    .map { ( s , a )->substring  (  s,  a  ) }
    .  filter { it  .  groupBy  { it } .  none { ( k , v )->v . size>1 } }
    .maxBy { it.length }

fun main(args: Array<String>) {
    val text = """indices
    .flatMap { p -> indices . map { p to p + it } }
    .  filter { (r,i) -> i < length  }
    .map { ( s , a )->substring  (  s,  a  ) }
    .  filter { it  .  groupBy  { it } .  none { ( k , v )->v . size>1 } }
    .maxBy { it.length }"""
    val message = text.c()!!
    println(message)
    println(text.length)
    println(message.length)
    println(c.c())
}

roupingByVe arasına ek bir boşluk ekleyerek bunu 10'a indiremez misiniz {?
Kevin Cruijssen

1
Güzel buldum, diğer 11'leri değiştirdim ve 10'a
düştüm

Bu ise 10 karakter, ancak uzun substring değildir roupingBy(ki 9 karakter) ama eachCount(boşluk firar ile).
Outgolfer Erik,

roupingBy
Sonunda

Düzeltme sorununu
düzelterek 9'a indirmeyi başardı


0

05AB1E , 22 bayt | Puan: 2

Œ  ʒ  D  Ù  Q  }  é  ¤

HeebyJeeby sayesinde -1 puan + 7 bayt

Çevrimiçi deneyin!


05AB1E , 15 bayt | Puan: 3

Œ ʒ D Ù Q } é ¤

Çevrimiçi deneyin!


05AB1E , 8 bayt | Puan: 8

ŒʒDÙQ}é¤

Çevrimiçi deneyin!


05AB1E aslında oldukça ucuz bir şey yapabilir ... 05AB1E'ye boşluk eklemek hiçbir şey yapmaz.

Buna karşı bir kural varsa, ´diğer 7 karakteri de kullanabilirim .


1
@HeebyJeebyMan Çünkü ben bir moronum, bununla bir sorunun mu var?
Magic Octopus Urn

@HeebyJeebyMan şaka haha, fikir için teşekkürler.
Magic Octopus Urn
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.