Soket - Fiş uyumluluğu


19

Elektroniklerle seyahat etmek her zaman eğlencelidir, özellikle de şarj etmek için bir adaptöre ihtiyacınız olduğunda. Zorluğunuz, belirli bir fişin belirli bir soketle uyumlu olup olmadığını kontrol ederek bir seyahat planlamasını biraz daha kolaylaştırmaktır.

Meydan okuma

Bir fiş tipi ve bir soket tipi verildiğinde, birlikte çalışıp çalışmayacaklarını gösteren bir değer döndürün.

Uyumluluk tablosu

Socket  Accepted plugs  |  Plug  Accepting Sockets
A       A               |  A     A, B
B       A, B            |  B     B
C       C               |  C     C, D, E, F, H, J, K, L, N, O
D       C, D, E, F      |  D     D
E       C, E, F         |  E     D, E, F, H, K, O
F       C, E, F         |  F     D, E, F, H, K, O
G       G               |  G     G
H       C, E, F, H      |  H     H
I       I               |  I     I
J       C, J            |  J     J
K       C, E, F, K      |  K     K
L       C, L            |  L     L
M       M               |  M     M
N       C, N            |  N     N
O       C, E, F, O      |  O     O

Tablolar yalnızca aktarılan aynı bilgileri gösterir.

Referans için .

Giriş

  • Giriş iki büyük veya iki küçük harf olarak verilir (siz seçersiniz).

  • Girişler her zaman /[A-O]/(veya /[a-o]/) olacaktır, geçersiz girişleri işlemeye gerek yoktur.

  • İki girişi istediğiniz sırayla kabul edebilirsiniz (lütfen hangisini belirtin).

  • Giriş herhangi bir makul biçimde (dize, stdin, dizi, ...) alınabilir .

  • Her iki girişi tek bir dizede alırsanız, birden fazla karakterle ayrılabilirler ve çevreleyen hiçbir şey olmamalıdır

  • İyi girişler: "G,K", "EF", "a b",['l', 'o']

  • Kötü girişler: "K l", "f(O)(I)",[1,5]

Çıktı

  • Çıktı herhangi bir makul biçimde iade edilebilir .

  • Çıktı, truthy/ falsyveya 2 sabit değerden biri olmalıdır

  • İyi çıktılar: false/ any positive number, 1/ 2, 'T'/'F'

  • Hatalı çıkışlar: an even number/ an odd number, 1/more than 1

Örnekler

Biçimini kullanarak socket, plug=> true/ false.

A, A => true
I, K => false
O, C => true
C, O => false
E, F => true
F, E => true

Standart boşluklara izin verilmez.

Bu yani her dilde en az bayt ile cevap kazanır.


Ülkem sadece C ve F kullanıyor, ben de J gördüm ... ama neden bu kadar çok var ???
AlexRacer

1
@AlexRacer Burada biraz okuma yapın , garip tıraş makinesi fişi ve İtalyan ekstra geniş fişi ve diğerleri de var. Europlug bir masterplug tho.
Asone Tuhid

Yanıtlar:




6

Python 3 , 72 Bayt 73 bayt 70 bayt

lambda p,s:s in{"A":"AB","C":y+"CJLN","E":y,"F":y}.get(p,p)
y="DEFHKO"

Çevrimiçi deneyin!

Düzenleme: Biraz yağ kesmek için Chas Brown sayesinde !


C, C'nin yanlış dönmesine neden olan bir yazım hatası bulundu.
machina.widmo

Güzel! q=işlev anonim olduğundan atlanabilir. Ayrıca, fazladan bir alan var. 70 bayt. Çevrimiçi deneyin.
Chas Brown

Teşekkürler! Nedense lambda'nın y'yi yakalayacağını düşündüm, bu yüzden başlangıçta bu şekilde yazmıştım.
machina.widmo

PPCG'ye hoş geldiniz, ve ilk güzel yazı!
user202729

@ user202729: Bunu daha önce görmemiştim; bilmek güzel bir ipucu.
Chas Brown

4

C (gcc) (x86 mimarisi), 76 60 bayt

Arnauld'a değişiklikler için çok teşekkürler!

Bağımsız değişkenler (fiş, soket) sırayla verilir.

c[15]={6,0,56696,0,35184,35184};f(a,b){a=a==b|c[a-65]>>b&1;}

Çevrimiçi deneyin!


Burada x86 mimarileri hakkında verdiğiniz referansı kullanarak : yaparak 3 bayt tasarruf edebilirsiniz 1<<~-b.
Arnauld

D ve üçlü operatörden kurtularak 66 bayt .
Arnauld

Bit maskelerini ikiye katlayarak 62 bayt . Şimdi Jelly ve Retina hariç tüm dilleri yeniyoruz! \ o /
Arnauld

1
A ile b'yi karşılaştırarak 60 bayt .
Arnauld

L"\6\0\xdd78\0襰襰"Bunun yerine öner{6,0,56696,0,35184,35184}
ceilingcat

3

Haskell, 67 bayt

p#s=p==s||or[elem s b|a:b<-words"AB CDEFHJKLNO EDFHKO FDEHKO",a==p]

İşlevin #bağımsız değişkenleri iki karakterdir, önce fiş, soket ikinci.

Çevrimiçi deneyin!


3

JavaScript (Node.js) , 79 bayt

S=>P=>P==S|P<'B'&S<'C'|P=='C'&'JLN'[K='includes'](S)|'CEF'[K](P)&'DEFHKO'[K](S)

Körili bir işlev olarak çağrılır f(socket)(plug),.

Çevrimiçi deneyin! (test sonuçlarını içerir, sonuçların bir matrisini gösterir.)



2

PHP , 81 bayt

<?list(,$s,$p)=$argv;$A=AB;$C=$E=$F=DEFHKO;$C.=JLN;echo+($p==$s||strpos($$p,$s));

Çalıştırmak için:

php -n -d error_reporting=0 <filename> <socket> <plug>

Misal:

php -n -d error_reporting=0 socket_plug_compatibility.php F E

Veya çevrimiçi deneyin!

Notlar:

  • Bazı baytları kaydetmek için, dize sarmalayıcı olarak tek / çift tırnak içermeyen dizeler kullandım. Bu nedenle, error_reporting=0seçenek uyarıları vermemek için kullanılır.
  • Giriş yalnızca büyük harflerle çalışır.
  • Uyumluluk için 1 ve uyumsuzluk için 0 çıktılar.

Nasıl?

Her fiş kendisiyle aynı soketle uyumludur. Birkaç prizle de uyumlu olan dört özel fiş (A, C, E, F) vardır. Özel fişlerin adıyla dört dize değişkeni, ekstra uyumlu yuvalarının listesini tutmak için tanımlanır.

Giriş fişi ve soketinin aynı olup olmadığı veya soketin bu fiş için uyumlu soketler listesinde olup olmadığı kontrol edilir. İkinci kontrol PHP değişken değişkenlerinin yardımıyla yapılır .


2

Javascript ES6, 66 65 64 karakter

p=>s=>p==s|{A:1,C:14172,E:8788,F:8780}[p]&(1<<parseInt(s,36)-11)

pFiş ve ssoket için büyük harfler alır , falsy ( 0) veya truthy (1 , 2, 4, ..., 8192) değeri.

Ölçek:

f=p=>s=>p==s|{B:1,C:14172,E:8788,F:8780}[p]&(1<<parseInt(s,36)-11)

console.log(`A, A => true
I, K => false
O, C => true
C, O => false
E, F => true
F, E => true`
.split`
`.map(x=>x.match(/(.), (.) => (\w+)/))
.every(([m,p,s,res])=>!!f(s)(p)==eval(res)))



@AsoneTuhid, teşekkür ederim, güncellendi. Ancak bağlantınız çok garip ve açılmıyor.
Qwertiy

Bu TIO. Benim için açılıyor.
Asone Tuhid

@AsoneTuhid,ERR_CONNECTION_RESET
Qwertiy

Kaldırmayı denedin httpsmi? Diğer TIO bağlantıları çalışıyor mu? Mac (krom ve safari) ve android üzerinde denedim ve iyi çalışıyor ...
Asone Tuhid

2

R , 132121113 bayt

function(S,P,`!`=utf8ToInt)"[<-"(diag(15),cbind(rep(!"",!"	"),!"
"),1)[-64+!P,-64+!S]

Çevrimiçi deneyin!

Aşağıdaki matrisi oluşturur ve m[S,P]DOĞRU ise => 1, başka bir değer çıkarır .

       [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15]
 [1,]    1    1    0    0    0    0    0    0    0     0     0     0     0     0     0 
 [2,]    0    1    0    0    0    0    0    0    0     0     0     0     0    0     0
 [3,]    0    0    1    1    1    1    0    1    0     1     1     1     0    1     1
 [4,]    0    0    0    1    0    0    0    0    0     0     0     0     0    0     0
 [5,]    0    0    0    1    1    1    0    1    0     0     1     0     0    0     1
 [6,]    0    0    0    1    1    1    0    1    0     0     1     0     0    0     1
 [7,]    0    0    0    0    0    0    1    0    0     0     0     0     0    0     0
 [8,]    0    0    0    0    0    0    0    1    0     0     0     0     0    0     0
 [9,]    0    0    0    0    0    0    0    0    1     0     0     0     0    0     0
[10,]    0    0    0    0    0    0    0    0    0     1     0     0     0    0     0
[11,]    0    0    0    0    0    0    0    0    0     0     1     0     0    0     0
[12,]    0    0    0    0    0    0    0    0    0     0     0     1     0    0     0
[13,]    0    0    0    0    0    0    0    0    0     0     0     0     1    0     0
[14,]    0    0    0    0    0    0    0    0    0     0     0     0     0    1     0
[15,]    0    0    0    0    0    0    0    0    0     0     0     0     0    0     1

intToUtf8Bu işlevi kullanarak dizinleri sıkıştırarak ve değiştirerek 3 bayt kaydedildi !. Daha okunaklı sürüm için Geçmiş'e bakın.

@Giuseppe sayesinde 16 bayt tasarruf edildi!


ihtiyacınız t=var rep
Giuseppe

@Giuseppe sanmıyorum!
JayCe


@Giuseppe Şimdi tamamen ezoterik bir dil gönderme gibi görünüyor.
JayCe

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.