Sezar denkliği


24

Karşılık gelen karakterler arasındaki mesafe (sayma) aynı ise, iki karakter "Sezar eşdeğeri" dir. Evet, bu terimi ben yaptım. İşte bir örnek:

"Abc" ve "Cde" eşdeğerdir çünkü

distance from a-c == 2
distance from b-d == 2
distance from c-e == 2

Büyük harf kullanımı herhangi bir fark yaratmaz.

"Merhaba" ve "Dünya" Sezar eşdeğeri değil çünkü

distance from h-w == 15
distance from e-o == 10
distance from l-r == 6
distance from l-l == 0
distance from o-d == 15

"Abcd" ve "Yzab" Sezar eşdeğeridir çünkü

distance from a-y = 24
distance from b-z = 24
distance from c-a = 24 (it wraps around)
distance from d-b = 24

STDIN'den iki dize alan tam bir program yazmalı ve Sezar eşdeğeri ise bir asil değeri ve eğer değilse sahte bir değer yazmalısınız.

Geçerli Giriş

  • Büyük harf kullanımı önemli olmadığından, programınızın, cevabınızda belirtildiği sürece girişin tümünün küçük harf, bütün büyük harf veya istediğiniz herhangi bir karışımı olmasını isterse kabul edilebilir.

  • Giriş boşluk veya noktalama işareti içermez.

  • Girişler aynı uzunlukta olacaktır.


8
Komut satırı argümanları olarak girişe izin vermek güzel olurdu. Ben bir C çözümü yazacaktım, ama stdin'den okumak, özellikle vaktinden azami bir uzunluğa sahip değilseniz, oldukça uzun bir kod gerektiriyor.
Reto Koradi

@RetoKoradi Neden olmasın? Muhtemelen yine de kazanmayacak, çünkü C tam olarak özlü olduğu bilinmiyor.
DJMcMayhem

Doğru, C'nin mutlak bir kazanma şansının olacağından şüpheliyim. En iyi ihtimalle, "real";) programlama dillerini kullanan çözümlerle karşılaştırırım. Ancak orada bile, diğer diller, özellikle tel işlemeyi içeriyorsa, daha kompakt olma eğilimindedir.
Reto Koradi

4
Bunu soru listesinde her gördüğümde, cevaplar kadar çok oyuna sahip.
Alex A.

1
@AlexA. Siz belirleyene kadar, oy kullanma cevap oranına hiç dikkat etmedim. Şimdi tek fark ettiğim bu.
DJMcMayhem

Yanıtlar:


10

Pyth, 9 bayt

}wm=.rzGG

İki dizgenin küçük harfle yazılması bekleniyor, yeni satır ayrılmış.

Gösteri.

Nasıl çalışır:

.rPyth'un döner çeviri işlevidir. İlk argümandaki her öğeyi, ikinci argümandaki ilk oluşumundan ikinci argümandaki bir sonraki girişe eşler. Bu durumda, ikinci argüman Gküçük harfli alfabedir, bu nedenle 1 Sezar kaymasına eşdeğerdir.

=Fonksiyonun önüne bir tane koymak onu yerinde yapar. Böylece, =.rzGSezar'ın kaymasını zbire bir atar z. zPyth'da girişin ilk satırına başlatıldığını unutmayın .

Bu ifade bir haritanın içinde kullanılır. m=.rzGGbu dönüşümü zher bir öğe için bir kez 26 kez uygular Gve sonuçları bir listeye kaydeder. Bu, tüm olası Sezar kaymalarının bir listesini verir z.

Son olarak, bir }wsonraki giriş satırının o listede olup olmadığını kontrol eder.


14

CJam, 17 12 11 bayt

Dennis tarafından 1 bayt kurtarıldı.

ll.m26f%)-!

Burada test et.

İlk dizginin küçük harf, ikincisinin büyük harf olmasını bekler. 1Sezar eşdeğer dizeleri ve diğerlerini yazdırır 0.

açıklama

ll           e# Read two lines of input.
  .m         e# Take the differences of corresponding characters.
    26f%     e# Take the differences modulo 26.
        )-   e# Remove all copies of the last difference from the array. This will 
             e# yield an empty array if and only if all differences are the same.
          !  e# Logical NOT, which yields 1 for an empty array and 0 otherwise.

İlk dizgiyi küçük harf, ikinciyi büyük harf istememizin nedeni, farkın her zaman pozitif olmasını sağlamaktır. Aksi takdirde modülo almak, negatif bir şey döndürebilir ve Sezar eşdeğeri dizeler için bile mutlaka benzersiz olmaz.


1
İlk kelimenin küçük harf, ikincisinin büyük harf olmasını istiyorsanız, 26f%bir bayt kaydetmek için kullanabilirsiniz .
Dennis,

Pyth cevabını daha da yakınlaştırmak için kabuk kuralını ( stackoverflow.com/questions/2933843/… ) kullanabilirsiniz.
VicAche

1
@VicAche kabul kongre ne şekilde olursa olsun truthy ve falsy yorumlamak sizin o dil yorumladığını. Ayrıca, kaldırırsam !0 veya 1 değerine sahip değil, boş veya boş olmayan bir diziye sahip olmazdım.
Martin Ender

9

Python2, 68 67 70 69 Bayt

print len({(ord(y)-ord(x))%26for x,y in zip(*raw_input().split())})<2

Python3, 67 66 Bayt

print(len({(ord(y)-ord(x))%26for x,y in zip(*input().split())})<2)

Ungolf yapmak biraz zor, bu yüzden sadece parçaları açıklamak:

  • zip(*raw_input().split())girişi alır, kelimelerin boşluklarla ayrıldığını varsayarsak, iki kelimelik bir listeye böler. Bundan sonra her kelime operatörün zipkullanımıyla fonksiyonun bir parametresi olarak geçirilir *. zipFonksiyon aynı konumda mektupları, mektup çiftlerinin bir listesini oluşturur.
  • (ord(y)-ord(x))%26for x,y in ... Bu sadece 2 harften oluşan listeyi bu harfler arasındaki mesafelerin bir jeneratör ifadesine dönüştürür.
  • {...} Bu ifadeyi bir kümeye indirgeyerek, esas olarak kopyaları atma
  • len(...)<2 sette yalnızca bir öğe kaldığını (veya boş dizeler için 0) olup olmadığını kontrol eder; bu, temelde tüm harflerin aynı mesafeye sahip olduğu anlamına gelir.
  • print bu değeri verir

Bana hatırlattığın xnor sayesinde, set(...)yerine geçebilir {...}ve daha önce boşluk forgerekli değildir. İçin Josay için de teşekkür <=1etmek <2optimizasyonu.


Çözümüme oldukça benzer, aynı dakikada kabaca yayınlandı. Girdiye benden daha zekisin ama <=1'<2' seviyesine düşebilirsin .
SylvainD

1
Bir dizi anlama {...}yerine doğrudan yapabilirsiniz set((...)). Kodunuzun sonucu gerçekten yazdırması gerekiyor.
xnor

@KillianDS Varsayılan kurallar STDOUT'a yazdırmayı veya geri dönmeyi (REPL değerlendirmesi değil) ve burada OP tarafından belirtilen yazdırmayı gerektirir. Aksi taktirde, jenerik en kısa yol lambdayazma printveya tasarrufta kullanmaktır return.
xnor

1
Bu arada, daha önce yer bulamazsın for; Python lexer doğru şekilde böler 26for.
xnor

5

APL (15)

1=≢∪26|-⌿⎕A⍳↑⍞⍞

Harflerin büyük harfli olması gerekir ve şöyle ya 1da 0böyle yazdırır :

      1=≢∪26|-⌿⎕A⍳↑⍞⍞
ABCD
YZAB
1

      1=≢∪26|-⌿⎕A⍳↑⍞⍞
HELLO
WORLD
0

Açıklama:

  • ↑⍞⍞: klavyeden iki satır okuyun ve karakterleri N × 2 matrisinde düzenleyin.
  • ⎕A⍳: Her karakter için, hangi pozisyonda gerçekleştiğini bulun ⎕A(büyük harf)
  • -⌿: her sütun için, ikinci değeri ilk değerden çıkarın
  • 26|: bu sayıların her birinin mod-26'sını al.
  • Dizeler Sezar'a eşdeğerse, bu listedeki tüm sayılar artık eşittir.
  • ≢∪: listedeki benzersiz değerlerin sayısını bulun
  • 1=: bunu karşılaştır 1.

Asla APL :)
orlp

@AlexA .: Dyalog APL 14 kullanıyorum. Ahududu Pi'niz varsa, ücretsizdir; öğrenciler için de ücretsiz; Aksi takdirde, nagware olan, ancak işlevsel olarak gerçek olanlarla aynı olan kayıtsız bir sürümü indirebilirsiniz. dyalog.com Bu arada TryAPL buna dayanıyor.
marinus

Yorumlar gerçekten böyle bir tartışma için uygun olmasa da Dyalog ile GNU APL, ngn / apl ve APLX hakkındaki düşüncelerinizi duymak isterim. ;)
Alex A.

3

J, 19 bayt

1=[:#@~.26|-&(3&u:)

Aynı pozisyondaki harfler aynı durumda olmalıdır.

Her iki giriş dizesini kod noktası temsiline dönüştürdükten sonra , iki dizinin farkının modulo 26 nubunun uzunluğu ile &(3&u:)karşılaştırıyoruz . Nub olacak1#~.26|-1Tüm sezar mesafeleri aynı ise .

Kullanımı:

   'abcd' (1=[:#@~.26|-&(3&u:)) 'yzab'
1

Burada çevrimiçi deneyin.


3

Julia, 91 87 83 bayt

a=readline()
b=readline()
show(length(Set([mod(a[i]-b[i],26)for i=1:length(a)]))<2)

Ungolfed + açıklama:

# Read two strings from STDIN
a = readline()
b = readline()

# Get the absolute difference mod 26 of the character values in the strings
x = [mod(a[i] - b[i], 26) for i = 1:length(a)]

# Construct a set consisting of the elements of x. If the set has only a
# single element, the strings are Caesar equivalent. This will print a
# boolean value to STDOUT.
show(length(Set(x)) < 2)

Bu, Julia'daki karakter dizilerinin karakter dizileri olarak ele alınabilmesi ve karakter değerlerinde aritmetik işlemlerin gerçekleştirilebilmesi gerçeğinden yararlanır. Giriş dizeleri, her bir konumdaki büyük harf, dizgiler arasında eşleştiği sürece, istediğiniz herhangi bir büyük harf karışımına sahip olabilir.


3

C99, 92 bayt, hata   101 92 bayt

  r,i;main(z,a)char**a;{for(;z=a[2][++i];)r|=(a[1][i]-z+*a[2]-*a[1]+52)%26;putchar(49-!!r);}

Oldukça basit; sözcüklerin sırasıyla birinci ve ikinci argüman olarak geldiğini varsayar. İle derlendi -std=c99.


Bu, ikinci numune girişi için yanlış sonuç verir.
Reto Koradi

Haklısın, özledim. Sabit.
rr

3

Javascript ( ES7 Taslak ), 87 bayt

Girişlerin aynı durumda olması gerekir.

(p=prompt)(![z=(a[c='charCodeAt'](i)-b[c](i)+26)%26 for(i in b=p(a=p()))].some(x=>x^z))


2

CJam, 13 bayt

{r(fm26f%}2*=

Her kelimenin ilk harfinin büyük, diğerlerinin küçük harf olmasını gerektirir.

Burada dene . ( Firefox burada .)

APL değişkenlerinin karakter aritmetik özelliğini desteklememesi kötü ...

açıklama

{
    r       e# Read a word.
    (f-     e# Return each character value minus the first character.
    26f%    e# Mod 26.
}2*         e# Repeat 2 times.
=           e# Check if they are equal.

2

Perl, 80

Düzenleme : Başarısız bir optimizasyon golf koduna geçti. Şimdi ungolfed versiyonuyla eşleşiyor. (Bayt sayısı da doğruydu.)

@a=unpack"W*",<>;for(<>=~/./g){$n=ord()-shift@a;$p=!$c++||$p&&$n==$o;$o=$n}say$p

Perl sürüm 5.10 ( perl -M5.10.0veya perl -E …) ile çalıştırın say(). Biraz genişletilmiş sürüm:

@a=unpack"W*",<>;             # read first string, split and convert to numbers

for(<>=~/./g){                # reads the second string and splits it
   $n=ord()-shift@a;          # convert next character of second string and compare
   $p= !$c++ || $p && $n==$o; # compare differences (special case for first char)
   $o=$n
}

say $p

1Dizeler Sezar eşdeğeri ise kod (Perl'deki truthy) ve eğer değilse boş dizge (Perl'de sahte) çıkar. Bu bir yorumu gevşek çok olursa, ben 2 bayt eklemeniz gerekir say$p+0hangi baskılar,1 veya0 .

Karakter durumu girişler arasında eşleşmelidir.


Yukarıdaki soruya yapılan yorumları temel alarak, komut satırı argümanları olarak da girdi alabilirsiniz. -iİkinci dizgeyi almak için kullanabilirsiniz , bu değişkende onu saklar $^I. Ayrıca, komut satırında çalışırken -Eyerine kullanmak ücretsiz ve size bir bayt eklemeden kullanabilirsiniz. Bunu çalıştırmayı deneyin: Bunu numarayla kısaltabilirsiniz . -esayperl -iteststring -E'say$^I'-i
hmatt1

Thanks @chilemagic, -ihile temiz (ve ben bilmiyordum!). Bu durumda yardımcı olacağını sanmıyorum çünkü $^Idaha uzun <>.
xebtl,

@chilemagic Oh, ve bu tartışmaya göre , -M5.10.0zaten bayt saymadım . (Ama -Edüzenlemedeki anahtardan bahsettim )
xebtl

2

Matlab, 49 48 bayt

Bu gerçekten çok hızlıydı. Ne yazık ki stdin'den bir string almak oldukça pahalı.

x=@()input('','s');sum(diff(mod(x()-x(),26)))==0

Tüm cevaplar olmasa da çoğu zaman büyük / küçük harfe duyarlı olduğunu unutmayın.

EDIT: anonim bir işlev tanımlayarak bir bayt traş!



2

C, 97 bayt

#define D (*a[2]++-*a[1]+++26)%26
d,r;main(int c,char**a){for(d=D;*a[1];r|=d-D);puts(r?"N":"Y");}

1
Yuppi! Dengeyi geri yüklediniz!
DJMcMayhem

Eğer türünü tekrar kullanırsanız dve abunun gibi parametrelerin dışında kalırsanız 4 karakter kaydedebilirsiniz : d,r;main(int c,char**a){r;main(d,a)char**a;{
rr -

1

Scala, 57 bayt

(readLine zip readLine map(x=>x._1-x._2%26)toSet).size==1

Diğerlerinden biraz daha uzun ve esasen eşdeğerdir, ancak farklı bir dil tarzındadır!

Ayrıca bu sürüme de sahibim (56 bayt):

(readLine zip readLine map(_._1-x$1._2%26)toSet).size==1

Ama x $ 1 çalışmasının tesadüf mü yoksa tasarım mı olduğunu bilmiyorum ...


1
Bu gerçekten garip, hiç tanımlanmadan nasıl x$1çalışıyor x?
Dan Getz

@DanGetz Ben bir derleyici fluke olduğundan oldukça eminim. Yığın taşması hakkında bir soru sorabilirim: D
Diğerleri

1

Python 2,80 bayt

Bir boşlukla ayrılmış stdin'den benzer şekilde kasalı 2 dizi alır:

s,t=raw_input().split();print len(set((ord(c)-ord(d))%26 for c,d in zip(s,t)))<2

Aşağıdaki test durumlarında test edilmiştir:

tests = [
    ("abc", "abc", True),
    ("abcd", "abc", False),
    ("abc", "cde", True),
    ("Abc", "Cde", True),
    ("abc", "deg", False),
    ("Hello", "World", False),
    ("Abcd", "Yzab", True),
    ("", "", True)
]

for s, t, v in tests:
    if len(s) == len(t): # I didn't read that at first
        assert v == (len(set((ord(c) - ord(d)) % 26 for c, d in zip(s, t))) < 2)

1

Python 2 - 241 237 188 147 Bayt

Girdiyi tırnak içine alınmış, boşlukla ayrılmış küçük dizge olarak alır. Daha iyi bir yol olmalı.

s=[[ord(x)for x in y]for y in input().split()];v=[];v=[v+[(s[1][i]-s[0][i])%26]for i in xrange(0,len(s[0]))];v=sum(v,[]);print sum(v)//v[0]==len(v)

Ungolfed (260 tek bayt)

strs = [[ord(x) for x in y] for y in raw_input().split()]
vals = []
for i in xrange(0, len(strs[0])):
if strs[0][i]<strs[1][i]:
    vals += [strs[1][i]-strs[0][i]]
else:
    vals += [26-(strs[0][i]-strs[1][i])]
return sum(vals)//vals[0] == len(vals)

Tüm değişkenleri 1 karakter uzunluğunda tutabildiğinizden ve bir sürü bayttan tasarruf edebileceğinizden eminim. Ayrıca ", girişinizde 4 sn beklediğiniz için puanınıza 4 eklemelisiniz .

@ Retikalite Değişkenleri kısaltmadığıma inanamıyorum .. amatör hareket. Düzgün açıklamadığım için bayt sayısına 2 ekledim; giriş "abc cde" gibi çalışır.
Kade

1

R, 83 84

Diğer çözümlerle oldukça aynı. Dizeleri bir tamsayı vektörüne dönüştürün. Vektörlerin farkını 26 ile modlayın. Uzunluğun 1 olup olmadığını kontrol ederek listenin üzerinde benzersiz bir işlem yapın.

length(unique(((S=strtoi)((R=charToRaw)((I=readline)()),16L)-S(R(I()),16L))%%26))<2

İki dizinin girilmesini bekler

> length(unique(((S=strtoi)((R=charToRaw)((I=readline)()),16L)-S(R(I()),16L))%%26))<2
abcdefghijklmnopqrstuvwxyz
opqrstuvwxyzabcdefghijklmn
[1] TRUE
> length(unique(((S=strtoi)((R=charToRaw)((I=readline)()),16L)-S(R(I()),16L))%%26))<2
Hello
World
[1] FALSE
> length(unique(((S=strtoi)((R=charToRaw)((I=readline)()),16L)-S(R(I()),16L))%%26))<2
Bob
Nan
[1] TRUE
>

Kullanmak <2yerine bir bayt kaydedebilirsiniz ==1.
Alex A.

Sadece çıktısını alarak 3 byte kaydedebilirsiniz 1veya0

@AlexA. Teşekkürler Alex Ben onu özledim ... ve şimdi onu özledim :)
MickyT

@Reticality: Nasıl?
Alex A.

@Reticality Ne yazık ki 1 veya daha fazla döndürürdü.
MickyT

1

Matlab / Octave, 53 52

x=@()input('','s');isscalar(unique(mod(x()-x(),26)))

Giriş aynı durumda olmalıdır.

Ne yazık ki, Matlab kullanıcı girişi ile çok iyi değil. Anonim bir tanıtıcı olarak, bu yalnızca 35 bayt olabilir:

@(a,b)isscalar(unique(mod(a-b,26)))

Matlab bir dizginin karakterlerini sayı vektörü olarak ele alır. Çıkarma yapmak bize farklarını verir ve uniquebu vektörü sadece benzersiz değerler içeren bir vektöre dönüştürür. Yalnızca bir sayı varsa, kelimeler caeser eşdeğerdir ve isscalar 1, aksi takdirde 0 döndürür.


Ah! Başka bir Matlab girişi! Sadece kendime cevap verdikten sonra cevaplara baktım.
Oebele

sadece x = @ () input ('', 's');
Oebele

@Oebele Teşekkürler! Sanırım Matlab'da daha fazla golf problemi denemeye başlayacağım, aslında oldukça eğlenceli buldum.
FryAmTheEggman

Evet, öyle. Bir çok problem için matris bazlı şeylerle çok özlü olabilir. Octave biraz daha fazla serbest sözdizimine sahiptir, bu da bazen satır içi değişken tanımı gibi birkaç byte'ı da koruyabilir.
Oebele

1

Bash, 71 48

“Standart” Unix programını kullanarak caesar(6).

Yeni sürüm (@DigitalTrauma'nın yardımı ile):

read a b;seq -f"caesar %g <<<$a" 26|bash|grep $b
  • Girişler aynı satırda olmalı, boşluklarla ayrılmalıdır
  • Karakter durumu girişler arasında eşleşmelidir.
  • 1Doğru ya da yanlış bir şey için yazdırır .

Komut satırı argümanları üzerinden giriş yapılmasına izin verilirse, 39 byte'a kadar kısaltılabilir. :

 seq -f"caesar %g <<<$1" 26|bash|grep $2

Kayıt için eski sürüm:

 read a b;for i in `seq 26`;do [ `echo $a|caesar $i` = $b ]&&echo 1;done

Benim sayıma göre 48 bayt: read a b;seq -f"caesar %g <<<$a" 26|bash|grep $bSonuç $?standart kabuk anlambilimine göre 0 == YANLIŞ ve 1 == TRUE olan yerleşik değişkende.
Dijital Travma

@DigitalTrauma Bunlar çok şık fikirlerdir! Özellikle seq -f | bashbiraz hoşuma gidiyor . Sonuç $?, zorluğu okuduğumda geçerli değildir, ancak kodum gibi, sizinki de yanlış olan hiçbir şey çıkarmaz ve doğru olan bir şey çıkarır (iki boş giriş dizesinin sınır çizgisi durumu hariç). Her neyse, benim cevabımda tüm bunları kullanmak hile gibi hissediyorum, belki kendi göndermelisin.
xebtl

Endişelenmeyin - kullanmanız için golf ipuçlarını öneriyorum. Onları kullanmak isteseydim, çoktan çoktan yapardım :). Truthy / falsey meselesine gelince, bunu kendi dilinizde doğru ve yanlış olduğunu yorumlamaya meyilliyim - dene [ 0 == 0 ] ; echo $?ve[ 0 == 1 ] ; echo $?
Dijital Travma

1

> <> (Balık) , 50 bayt

i:3b*(?v88+0.;n1<
0)?vc1.>~ri-&l?!^i-&:&-2d*%
;n0<

Aynı pozisyondaki harflerin aynı durumda olmasını bekler.

açıklama

  • i:3b*(?v88+0.Döngü atlamayı sağlayan ilk kelimeyi yığına okur.
  • ~ri-&~ayırma alanını yığından kaldırır , yığını ters çevirir r(ilk harf üstte olur), ikinci kelimenin ilk harfini okur i, ofseti ilk kelimenin ilk harfinden hesaplar -ve kayıt defterinde saklar &.
  • l?!^i-&:&-2d*%0)?vikinci sözcüğün her sonraki harfini, ilk kelimenin yığın mektubunun tepesindeki karşılık gelen harfinden ayırarak okur &:&-ve kayıt defterinde saklanan ofseti toplar ve sonucun 0 mod 26 olup olmadığını kontrol eder 2d*%. Değilse 0 yazdırır ve sonlandırır 0n;. c1.döngü atlama sağlar.
  • İkinci kelimenin sonuna gelindiğinde, program 1 yazdırır ve sona erer 1n;.

0

KDB (Q), 35 bayt

{0=sum(1_-':)mod[;26](-)."i"$(x;y)}

açıklama

                         "i"$(x;y)      / convert to ascii decimal
                     (-).               / get differences
             mod[;26]                   / mod 26
      (1_-':)                           / difference between the differences
 0=sum                                  / sum should be 0 if equivalent
{                                 }     / lambda

Ölçek

q){0=sum(1_-':)mod[;26](-)."i"$(x;y)}["abcd";"yzab"]
1b

0

Java 281

import java.util.*;enum C{E;Scanner s=new Scanner(System.in);public static void main(String[]z){char[]u=E.n(),v=E.n();int i=0,d=(u[0]-v[0]+26)%26;boolean e=true;for(;++i<u.length;)e&=d==(u[i]-v[i]+26)%26;System.out.print(e);}char[]n(){return s.next().toUpperCase().toCharArray();}}

genişletilmiş:

import java.util.*;
enum Caesar{
    Equivalence;
    Scanner input=new Scanner(System.in);
    public static void main(String[]z){
        char[]firstString=Equivalence.nextInput(),secondString=Equivalence.nextInput();
        int index=0,difference=(firstString[0]-secondString[0]+26)%26;
        boolean isEqual=true;
        for(;++index<firstString.length;)
            isEqual&=difference==(firstString[index]-secondString[index]+26)%26;
        System.out.print(isEqual);
    }
    char[]nextInput(){
        return input.next().toUpperCase().toCharArray();
    }
}

Her şeyi büyük harfe dönüştürmekten kurtulursam 14 bayt tasarruf edebilirim, ancak içinde bırakmanın daha eksiksiz olduğunu hissediyorum.


0

Jöle , 5 bayt

Oạ/ċ2

Çevrimiçi deneyin!

Eşdeğer için pozitif bir tamsayı, 0 ise çıktı verir

Nasıl çalışır

Oạ/ċ2 - Main link. Argument A (a list of strings)  e.g. ["abc", "cde"]

O     - Ordinal. Cast to code point                     [[97, 98, 99], [99, 100, 101]]
  /   - Reduce the list by...
 ạ    -   absolute difference                           [2, 2, 2]
   ċ2 - Count the number of 2s in the list              3
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.