Bu dize bir çember hareketi yapan bir mektup mu?


35

Mücadeleden ilham alan bir yerde gördüğüm şey:

"Rahibe" kelimesi sadece bir çember hareketi yapan n harfidir.

Buradaki zorluk bir string almak ve bir çember hareketi yapan ilk harf olup olmadığını belirlemek.

kurallar

Bir dize, eğer:

  • İlk harf, son harfle aynıdır. (Mektup kafasına inemez.)
  • Dize, her bir karakterde çember hareketi harfleri arasında geçiş yapar.

Cartwheeling harfler nve u, mve w, bve q. Not olduğunu nve wberaber olarak değil harfleri cartwheeling ve ne olduğu wve b.

  • Standart giriş yöntemlerimizden herhangi birini kullanarak bir string alacaksınız.
  • Dize bir çember hareketi mektubu ise bir truthy değeri ve eğer değilse bir sahte değeri çıkacak. Çıkış, herhangi bir standart çıkış yöntemi kullanılarak yapılabilir.

Ek kurallar:

  • Yalnızca n/ u/ m/ w/ b/ küçük harfli çember hareketi qkullanılmalıdır.
  • Girişin hiçbir zaman boş olmadığını varsayabilirsiniz.
  • Tek karakterli bir dize geçerli bir çember hareketi değil.

Test durumları

Input        -> Output
nun          -> truthy
nunun        -> truthy
nunununu     -> falsy
wmw          -> truthy
wmwun        -> falsy
bqbqbqbqbqb  -> truthy
v^v^v        -> falsy
AVAVA        -> falsy
OOO          -> falsy
ununununu    -> truthy
nunwmwnun    -> falsy
nun unun     -> falsy
nunwmw       -> falsy
nnuunnuunnuu -> falsy
nwnwnwnwn    -> falsy
m            -> falsy
nunuuunun    -> falsy

kazanan

Olduğu gibi , (her dilde) en kısa kod kazanır!


29
Sanırım bçembere giriyor q, değil mi? dve paynı zamanda çember hareketi arkadaşlarıdır. Anahtar, döndürme değil döndürmedir.
Mühendis Toast,

Başka bir test uwuwuwuwuwu
çantası

19
Neden bqbama değil pdp?
aschepler,

@ aschepler Ben batırdım.
MD XF

2
Yana dpd, pdp ve bu tür yapamaz işin, sana falsy cevap test durumlarda bunları olması gerektiğini düşünüyorum.
Ağustos'ta

Yanıtlar:


2

Jöle , 23 bayt

Bu düşündüğümden daha fazla iş aldı!

“nmbuwq”iЀo⁵IAs2⁼€3,3Ȧ

Karakter listesini alan ve dönen 1(truthy) veya 0( falsey) bir monadik bağlantı .

Çevrimiçi deneyin! veya bir test odasına bakın .

Nasıl?

Girişin her karakterinin dizinini 1 dizinli karakter listesinden bulur nmbuwq. Bu dize, çiftlerin indekslerinin üç ayrı olacağı şekilde düzenlenmiştir, çünkü geçerli çemberler için indekslerin artan farkı, birinin [-3,3]veya birinin tekrarı olacaktır [3,-3].

Bir öğeyi atom "endeksi" ile bir listede bulunmayan zaman, ibu döndüren 0, ile hergün karakterleri eşleştirmek hangi bgibi girdi hale bxbxbtruthy. Yani , geçerlilik kontrolünden önce s, diğer herhangi bir değerden üçten daha uzakta bir değerle 0değiştirilir 10.

“nmbuwq”iЀo⁵IAs2⁼€3,3Ȧ - Link: list of characters, s
         Ѐ             - map across c in s:
        i               -   first index of c in (1-indexed; 0 if not present)
“nmbuwq”                -   literal "nmbuwq"
            ⁵           - literal 10
           o            - logical or (vectorises - replace any 0s with 10s)
             I          - incremental differences (i.e. deltas)
              A         - absolute value (vectorises)
               s2       - split into chunks of 2 (possibly with a single remainder)
                   3,3  - pair three with three = [3,3]
                 ⁼€     - equals? for €ach (1 if so, otherwise 0 - including a single 3)
                      Ȧ - any and all? (0 if any 0s or if empty, 1 otherwise)

13

sed 4.2.2 , 30 + 1 -r= 43 31 bayt

İlk satırı kısaltarak @Neil sayesinde 12 bayt kaydedildi

/nu|wm|qb/!d
/^((.).)\1*\2$/!d

Çevrimiçi deneyin!

Falsey ise girişi siler, aksi halde girişe hiçbir şey yapmaz.

açıklama

İle -rbayrak, biz kullanımına gerek yoktur \(ve \)gruplar yakalamak için ve bu bayt kaydeder.

/nu|wm|qb/!                # On every line that does not match this regex
           d               # Delete
/^((.).)\1*\2$/!           # On every line that does not math
 ^((.).)                   #  the first two characters at the beginning of the line
        \1*                #  repeated
           \2$             #  with the first character at the end of the line
                d          # Delete

İşte sedsihirbaz geliyor ...
MD XF

@MDXF Büyücü olmaktan çok uzağım, hala yeni başlayan biri :)
Kritixi Lithos

sedİçindeki her şey bana sihirbaz gibi görünüyor. : P
MD XF

1
Yalnızca çiftleri hem örneğin mektup yarısının çevreleme için kontrol etmek zorunda unuve nunihtiva nuharflerin kalanı şu ikisini eşleşmesini ve ikinci hat aktarımı sağlar.
Neil

8

JavaScript (ES6), 82 78 77 bayt

ThePirateBay ve MD XF tarafından önerildiği gibi iki sahte değer kullanılarak 1 bayt kurtarıldı.

([c,...s],S='bqwmun')=>s.reduceRight((r,a)=>r&a==S[S.search(c)^++k&1],k=s>'')

Test durumları


Ayrılmak &&yerine herhangi bir sebep var &mı?

@ThePirateBay Eh, tek nedeni, aslında bu zorluğun bir gereği gibi görünmese de, iade edilen sahte değerin tutarlılığıdır. (Kullanarak &ya falseda üretebilir 0.)
Arnauld

@ Arnauld İkinci kaldırabilirsiniz &; Tutarsız tutarsız sahte değerlere izin verildiği bir dönemde (sohbette) belirtmiştim.
MD XF

5

Python 3 , 111 bayt

Bay Xcoder sayesinde -2 bayt.

lambda s:s[0]==s[-1]and any(any({*s[::2]}=={i[j]}and{*s[1::2]}=={i[j<1]}for j in[0,1])for i in['nu','mw','bq'])

Çevrimiçi deneyin!


2
beni tekrar tekrar geçerken içini içiyor
MD XF

Bu konuda kendimi iyi hissetmiyorum, çünkü bayt sayıma tekrar ulaşmak üzeresin, ama -2 bayt .
Bay Xcoder

BTW, çözümün geçersiz, tıpkı benimki gibi. İçin başarısız nunununu.
Bay Xcoder

Çok fazla bayt pahasına düzeltildi. , -;
Ağustos'ta

5

Python 2,63 bayt

lambda s:s[:3]in'ununqbqbwmwm'and s==s[:2]*max(len(s)/2,1)+s[0]

Çevrimiçi deneyin!


Güzel cevap, siteye hoş geldiniz! Bazı ipuçları: "nu un nm mn bp pb".split()4 bayttan tasarruf etmek için yapabilir ve bazı boşlukları kaldırabilirsiniz. 75 bayt:lambda s:any(s==c[-1]+c*max(len(s)/2,1)for c in"nu un nm mn bp pb".split())
DJMcMayhem

Bunun s[0]yerine 1 byte tasarruf edebilirsiniz c[-1].
DJMcMayhem

61 baytlık cevap, True için unmnuve döndürür unmwnu. Gerçekten de (s==s[::-1])+len(set(s))4 olduğunda yanlış pozitif döndürür , ki bu zorlaması kolaydır. Sadece 4 farklı karakter bile True döndürüyor.
Arnold Palmer

59 bayt, tek karakter girişleriyle kesiliyor. Bunu seçtiğim için özür dilerim, Python :) 'u seviyorum
Arnold Palmer

İstisnalar falsey değil mi? Bu mola kasıtlı
Harrichael

5

Python 3 , 71 bayt

lambda n:''.join(sorted({*n[1::2]}|{*n[::2]}))in"nu,mw,bq"*(n==n[::-1])

Çevrimiçi deneyin!

@HyperNeutrino -1 sayesinde ve -13 @ovs sayesinde

Yukarıdakilerin herhangi bir test durumu için başarısız olduğu tespit edilirse, bir alternatif vardır:

lambda n:(sorted(list({*n[1::2]}.union({*n[::2]})))in[[*'nu'],[*'mw'],[*'bq']])*n[0]==n[-1]

Çevrimiçi deneyin!


açıklama

  • ''.join(sorted(list({*n[1::2]}).union({*n[::2]})))) - Karakterleri tek dizinlerde ve çift dizinlerde bulunan karakterleri alır, kopyalarını kaldırır ve birliklerinin oluşturduğu listeyi sıralar.

  • in'nu,mw,bq' - Geçerli kart-harf kombinasyonları olup olmadığını kontrol eder.

  • n[0]==n[-1] - İlk karakterin son karakterle aynı olup olmadığını kontrol eder.


Test vakası yok, iyi iş +1
MD XF

@ MDXF Oh teşekkürler! Ben çok rahatladım ...> _ <
Bay Xcoder

1
uwuwuwuwuwudoğru sonuçlar
Kritixi Lithos

1
Geçersiz: nunuuunun
Harrichael

1
nuuun -> True. Bu doğru değil.
özyinelemeyle

5

JavaScript (ES6), 40 bayt

s=>/^(nu|un|bq|qb|wm|mw)+$/.test(s+s[1])

Giriş dizesinin ikinci karakteriyle birleştirilen giriş dizisinin, aynı çember hareketi karakter çiftinin yinelenen dizesi olup olmadığını kontrol eder.

Testler:

[
  "nun",
  "nunun",
  "nunununu",
  "wmw",
  "wmwun",
  "bqbqbqbqbqb",
  "v^v^v",
  "AVAVA",
  "OOO",
  "ununununu",
  "nunwmwnun",
  "nun unun",
  "nunwmw",
  "nnuunnuunnuu",
  "nwnwnwnwn",
  "m",
  "nunuuunun"
].forEach( x=>console.log( x, (s=>/^(nu|un|bq|qb|wm|mw)+$/.test(s+s[1]))(x) ) )


Buradaki mantığı gerçekten çok seviyorum! Sonunda bir karakter eklemeyi ve test etmeyi hiç düşünmezdim. Güzel, temiz kod, hatta golf oynadığında bile.
1

4

Clojure, 156 bayt

(fn[w](let[s["nu""wm""bq"]c #(= 1(count(set %)))e #(take-nth 2 %)r #(and(c(e %))(c(e(drop 1 %))))](and(=(first w)(last w))(r w)(some #(=(set w)(set %))s))))

Bu aldatıcı bir şekilde zordu! 3 alt soruna bölmek zorunda kaldım:

  • İlk harf sonuncuyla aynı mı?
  • Harfler tekrar ediyor mu?
  • Tüm harfler geçerli kümelerden birinin bir parçası mı?

Kesinlikle kazanamadım, ama bu bir günaydın egzersiziydi! Aşağıda tam açıklama:

(defn cartwheel? [word]
  (let [; Valid Character Sets
        cs ["nu" "wm" "bq"]

        ; Is the list composed of only a single character?
        count-1? #(= 1 (count (set %)))

        ; Grabs every other element of the list
        every-other #(take-nth 2 %)

        ; Do the characters repeat? Works by checking if every other element is the same, then drops the first letter
        ; to check all the odd indexed characters
        repeating? #(and (count-1? (every-other %))
                         (count-1? (every-other (drop 1 %))))]

    ; Do all the predicates hold?
    (and (= (first word) (last word))
         (repeating? word)
         ; Is the set of letters in the word part of some set of the valid characters?
         (some #(= (set word) (set %)) cs))))

4

Haskell, 80 78 bayt

f s|l<-length s=odd l&&l>1&&any((==s).take l.cycle)(words"un nu mw wm bq qb")

Çevrimiçi deneyin!

Nasıl çalışır:

l<-length s        -- let l be the length of the input string

f s         =      -- return True, if
    odd l          -- l is odd and
    l > 1          -- l is greater than 1 and 
    any            -- any of the following is also True
      (     )(words "  ...  ")
                   -- apply the function to each of the words "un", "nu" ... "qb"
           cycle   --  infinitely repeat the word
      take l       --  take the first l characters
     (==s)         --  and compare to s

4

Python 2,45 bayt

lambda s:s[2:]+s[1:3]==s>s[:2]in'bqbunuwmw'

Çevrimiçi deneyin!

Dizedeki boşluklar DELkarakterdir.


|u|bir çember hareketi olarak yorumlanır.
Harrichael,

@Harrichael DELAçık olması için karakter koydum .
xnor

DEL karakterleri yine de giriş karakterleri olabilir. Çözümünü beğendim ama s[:3]in'bqbqnunuwmwm'
cevabımdan

4

Retina , 24 bayt

G`nu|mw|bq
^((.).)\1*\2$

Truthy için 1, falsy için 0 çıktılar.

İnekler Limanı, soruyu cevapladı.

Çevrimiçi deneyin!


Daha yeni sürüm nunwmwnun(yanlış olması gerektiği zaman) için gerçeği ortaya çıkardı, bu yüzden \1*sed cevabımı aldım.
Kritixi Lithos

@Cowsquack Ah Anladım.
Okx,

İlk satır, G`nu|mw|bptüm truthy dizgileri bu harf çiftlerinden birini içerdiğinden ve ikinci satır, dizginin geri kalanının hepsinin de bu harfleri içerdiğinden emin olabilir.
Neil

@Neil Bu test davasında başarısız olurununununu
Okx

@Okx Neil'in önerisi hala o testcase için çalışıyor gibi görünüyor Çevrimiçi deneyin!
Kritixi Lithos

3

Kir , 28 bayt

e`..-#!"nu\|bq\|mw"oTv&..v+.

Çevrimiçi deneyin! Baskılar 1truthy girişler için ve 0falsy olanlar için.

açıklama

Grime sözdizimi normal ifadelere benzer ve bir Grime programı bir karakter dikdörtgeniyle eşleşebilecek veya eşleşmeyebilecek bir desen belirler.

e`..-#!"nu\|bq\|mw"oTv&..v+.
e`                            Match input against pattern:
      !                       Does not
     #                        contain
  ..                          a 2-character substring
    -                         which is not
       "nu\|bq\|mw"           any of these strings
                   oT         potentially reversed,
                     v&       AND
                       ..     two characters
                         v+   one or more times
                           .  then one more character.

Grime'ın bunu kısaltmaya yardımcı olan bazı özellikleri:

  • Normalde bir karakter değişmezi ters eğik çizgiyle kaçılmalıdır, ancak "" değiştirir: sözdizimi öğeleri kaçış, ancak değişmezler değil. Tırnaklar olmadan, karakter çiftlerini sıralayan kısım olacaktır (\n\u|\b\p|\m\w)oT.
  • (Burada ikili bir operatöre izleyin Birli operatörler -kendi sonuca) hareket: ..-#!"…"oTeşdeğerdir(..-"…"oT)#! .
  • vLer onları takip sözdizimi elemanlarının öncelik düşürmektedir. Yalnız bir yalnızlık &daha yüksek önceliğe sahiptir -, ancak v&daha düşük. Benzer şekilde, ..+olarak ayrıştırılır .(.+), ancak buna ..v+eşittir (..)+.



2

Jöle , 27 bayt

Ḋm2Qµ³m2Q;Ṣe“nu“mw“bq”ȧ³⁼U¤

Çevrimiçi deneyin!

Nasıl çalışır

Ḋm2Qµ³m2Q;µṢe“nu“mw“bq”ȧ³⁼U¤  Main link; z is the argument
Ḋ                             z[1:]
 m2                           z[1::2]
   Q                          deduplicate(z[1::2])
    µ                         New Chain
     ³                        z
      m2                      z[::2]
        Q                     deduplicate(z[::2])
         ;                    deduplicate(z[1::2]) + deduplicate(z[::2])
          Ṣ                  Sort the result
           e                 Is it an element of the following?
            “nu“mw“bq”       ["nu", "mw", "bq"]
                      ȧ      It has the correct characters and:
                       ³  ¤  Nilad followed by links as nilad
                       ³     z
                        ⁼      == 
                         U        z[::-1]
                          ¤  [End chain]

Jelly ... Pyth'ten daha mı uzun ?!
Bay Xcoder

@ Mr.Xcoder shhhh Üzerinde çalışıyorum ... xD
HyperNeutrino

Hah iyi şimdi xD ile
bağlıyım



1

Python 3 , 88 bayt

lambda x:[len(x)%2,x[:2]in'nu,un,bq,qb,mw,wm',len(set(x[::2])),len(set(x[1::2]))]==[1]*4

len(x)%2: çift karakterli bir dize ilk karakterde bitemez

x[:2] in: 6 geçerli başlangıç ​​çiftinden herhangi birini kontrol edin

len(set()): karakter kümelerinin uzunluğu 0,2,4 ... ve 1,3,5 ...

TrueDeğerlendirme listesinin [1,1,1,1], başka bir değere eşit olup olmadığını döndürür False.

Çevrimiçi deneyin!


1

Perl 5 , 55 + 1 (-p) = 56 bayt

$c={"nuunmwwmbppb"=~/./g}->{$l=chop};$_=/^($l$c)+$/&&$c

Çevrimiçi deneyin!

İlk karakterin "baş aşağı" versiyonunu doğru, yanlış için hiçbir şey yazdırmaz.


Beni katı 18 byte ile yen. Güzel cevap!
Silvio Mayolo

Şimdi pek fazla değil. Orijinal, aynı karakterden herhangi bir dize için doğru dönüyordu.
Xcali

1

PHP, 59 + 1 bayt

<?=preg_match('#^(nu|un|mw|wm|bq|qb)\1+$#',$argn.$argn[1]);

İle boru olarak çalıştırın -F.

kısmen regex çözümü, 101 + 1 bayt:

for($s=$argn;$c=$s[$i++];$p=$c)$c!=$p||die;echo$i%2<1&&preg_match("#^(nu|mw|bq)#",count_chars($s,3));

Sahte için boş çıktı. İle boru olarak çalıştırın -nR.


1

Java 8, 57 bayt

s->s.matches("(nu)+n|(un)+u|(mw)+m|(wm)+w|(bq)+b|(qb)+q")

Burada dene.

Altı vakaya uyacak şekilde basit regex. Java'nın String#matchesotomatik olarak tüm String ile eşleştiğini unutmayın; buna gerek yoktur ^...$.


1

MATL , 25 bayt

'nuwmbq'&mq2&\d~wdts~Gnqv

Çıkma , boş bir sayısal olmayan bir sütun vektörüdür; bu, tüm girişleri sıfır değilse truthy ve aksi takdirde sahte olabilir . Çevrimiçi deneyin!

Tüm test durumlarını doğrulamak için if, dize ile 'truthy'herhangi bir truthy değerini veya dize ile herhangi bir sahte değeri değiştiren altbilgiye bir dal eklenir'falsy' ve sonra dizeyi görüntüler.

açıklama

'nuwmbq'  % Push this string
&m        % Implicit input. For each char, push index of membership in the above
          %  string, or 0 if not member
q         % Subtract 1
2         % Push 2
&\        % Divmod. Pushes remainders, then quotients
d~        % Consecutive differences negated. Gives an array of ones iff all
          % quotients were equal
w         % Swap. Moves remainders to top
d         % Consecutive differences. Gives nonzeros iff no consecutive
          % remainders were equal
ts~       % Duplicate, sum, negate. Gives true iff sum was 0. For unequal
          % consecutive differences of remainders, this corresponds to an odd
          % number of remainders
Gnq       % Push input, length, subtract 1. True iff input longer than 1
v         % Concatenate into column vector. Truthy iff all entries are nonzero


0

Clojure, 115 bayt

(apply some-fn(map(fn[r]#(re-matches r %))(map(fn[[x y]](re-pattern(str x"("y x")+")))["nu""un""mw""wm""bq""qb"])))

Her harf çiftinden bir regex oluşturun ve girdinin biriyle eşleşip eşleşmediğine bakın. Tüm bu parçaları yapmak için daha birçok zarif yol var, ancak hepsi daha ayrıntılı. Clojure golf ile hayat böyledir.


0

Perl 5, 68 + 1 = 69 bayt

if(/../&&$&=~/nu|un|bq|qb|mw|wm/){s/^($&)*//;$&=~/./;print if/^$&$/}

İle koş -n .

Açıklama:

# Match the first two characters, and if they exist, then...
if (/../ &&
 # Make sure they are a pair of compatible cartwheel characters.
 $&=~/nu|un|bq|qb|mw|wm/) {
  # If that's true, then eliminate as many of that pair of characters
  # from the beginning of the string as possible.
  s/^($&)*//;
  # Then get the first character out of the match (the first character
  # of the original string).
  $&=~/./;
  # Print the text (which is truthy since it's nonempty) if the original
  # first character matches exactly the remaining string.
  print if/^$&$/
  # Otherwise, print nothing (the empty string in Perl is falsy).
}

0

TXR Lisp , 50 bayt

(f^$ #/n(un)+|u(nu)+|m(wm)+|w(mw+)|b(qb)+|q(bq)+/)

Çalıştırmak:

1> (f^$ #/n(un)+|u(nu)+|m(wm)+|w(mw+)|b(qb)+|q(bq)+/)
#<intrinsic fun: 1 param>
2> [*1 "nun"]
"nun"
3> [*1 "nuns"]
nil
4> [*1 "mwm"]
"mwm"
5> [*1 "wmw"]
"wmw"
6> [*1 "abc"]
nil

f^$bir regex nesnesi alan ve bu regex ile bağlantılı şekilde eşleşen bir işlev döndüren bir birleştiricidir. (Kendi başına, bir regex nesnesi, bir dize alan ve içinde arama yapan işlev çağrılabilir nesnedir.)



0

TXR : 78 74 bayt

@{x 2}@(rep :gap 0)@x@(end)@y
@(bind(x y)(#"nu un mw wm bq qb"@[x 0..1]))

Sistem isteminden çalıştırın. İstenilen sayı sonlandırma durumu: 0 = başarı, 1 = başarısızlık:

0:$ ./txr cart.txr 
nun
0:$ ./txr cart.txr 
abc
1:$ ./txr cart.txr 
bab
1:$ ./txr cart.txr 
mwm
1:$ ./txr cart.txr 
nununununun
0:$

Açıklama:

  • @{x 2}: iki karakter eşleştir, bağlan x değişkene .
  • @(rep :gap 0)@x@(end): atlanan boşluklar olmadan tekrarlanan eşleşme: sıfır veya daha fazla oluşum x önceden eşlenen digrafın .
  • @y: eşleştirilen satırın kalanı y .
  • @(bind(x y)(foo bar)): Bağlamak xiçin foo, y bar. Yana xve yzaten bağlıdırlar, bunlar eşleşmesi gerekirfoo ve bar, ya da başka bir arıza vardır.
  • fooolan #"nu un mw wm bq qb"Lisp listesi için bir kelime listesi değişmezi, sözdizimsel şeker,("nu" "un" ... "qb") . birbind değişken ile bir liste arasındaki eşleşme, değişkenin bir öğe ile eşleşmesi gerektiği anlamına gelir.
  • barşudur @[x 0..1]: xbaşlangıcından itibaren bir karakterlik alt dize . Bunun ile bindeşleşme y, çizginin son harfini ilkiyle eşleşmeye zorlar.

0

C ++, 268 bayt

#include<map>
#include<string>
std::map<char,char>c{{'n','u'},{'m','w'},{98,'q'},{'w','m'},{'u','n'},{'q',98}};
int w(std::string s){if(s[0]!=s[s.size()-1]||c.find(s[0])==c.end()||s.size()<3)return 0;for(int i=0;i<s.size()-1;i+=2)if(s[i+1]!=c[s[i]])return 0;return 1;}

Sadece iki yerine tüm karakterler için ASCII değerlerini kullanarak 10 bayt kazanın .
MD XF

@MDXF n= 110, u= 117, m= 109, w= 119, q= 113. Yani ASCII değerlerini kullanmak veya c(99) ' dan daha büyük olan karakterler için önemli değil
HatsuPointerKun

0

JavaScript (ES6), 63 bayt

s=>/bq|wm|un/.test(s)&s.replace(RegExp(s[0]+s[1],'g'),'')==s[0]

1Veya döndürür 0.

açıklama

Tüm çember dizelerinde bir veya daha fazla bq , wm veya un olacaktır . Bunun için test ediyoruz:

/bq|wm|un/.test(s)

Çember hareketi dizesinin ilk iki harfinin tüm örneklerini hiçbir şeyle değiştirirseniz, dizenin ilk harfini kalır. Bunun için test ediyoruz:

s.replace(RegExp(s[0]+s[1],'g'),'')==s[0]

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.