소켓-플러그 호환성


19

전자 장치를 가지고 여행하는 것은 항상 재미 있으며, 특히 충전 할 때 어댑터가 필요할 때 특히 좋습니다. 주어진 플러그가 주어진 소켓과 호환되는지 확인하여 여행 계획을 좀 더 쉽게 만드는 것이 문제입니다.

도전

플러그 유형과 소켓 유형이 주어지면 함께 작동할지 여부를 나타내는 값을 반환하십시오.

호환성 테이블

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

표에는 동일한 정보가 표시되며 바뀐 것만 표시됩니다.

참조하십시오 .

입력

  • 입력은 2 개의 대문자 또는 2 개의 소문자로 제공됩니다 (선택).

  • 입력은 항상 /[A-O]/(또는 /[a-o]/)이며 유효하지 않은 입력을 처리 할 필요가 없습니다.

  • 두 가지 입력을 순서에 상관없이 수락 할 수 있습니다 (어떤 것을 지정하십시오).

  • 적절한 형식 (문자열, 표준 입력, 배열 등)으로 입력을 취할 수 있습니다 .

  • 두 개의 입력을 하나의 문자열로 가져 가면 두 개 이상의 문자로 구분할 수 있으며 주변에 아무것도 없어야합니다.

  • 좋은 입력 : "G,K", "EF", "a b",['l', 'o']

  • 잘못된 입력 : "K l", "f(O)(I)",[1,5]

산출

  • 적절한 형식으로 출력을 반환 할 수 있습니다 .

  • 출력은 truthy/ falsy또는 두 상수 값 중 하나 여야 합니다

  • 좋은 출력 : false/ any positive number, 1/ 2, 'T'/'F'

  • 잘못된 출력 : an even number/ an odd number, 1/more than 1

socket, plug=> true/ 형식을 사용하십시오 false.

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

표준 허점 은 허용되지 않습니다.

이것은 이므로 각 언어에서 가장 적은 바이트를 가진 답이 이깁니다.


우리나라는 C와 F 만 사용하는데 J도 보았는데 왜 그렇게 많은가 ???
AlexRacer

1
@AlexRacer 여기에 약간의 독서 가 있습니다. 이상한 면도기 플러그와 이탈리아 여분의 넓은 플러그 및 기타가 있습니다. Europlug는 마스터 플러그입니다.
Asone Tuhid

답변:




6

파이썬 3 , 72 바이트 73 바이트 70 바이트

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

온라인으로 사용해보십시오!

편집 : 지방을 자르는 Chas Brown 에게 감사드립니다 !


C, C가 false를 반환하는 오타가 발견되었습니다.
machina.widmo

좋은! q=이 함수는 익명이므로 생략 할 수 있습니다. 또한 여분의 공간이 있습니다. 70 바이트 온라인으로 사용해보십시오.
Chas Brown

감사! 어떤 이유로 나는 람다가 y를 포착 할 것이라고 생각했기 때문에 처음에 그렇게 작성했습니다.
machina.widmo

PPCG에 오신 것을 환영합니다.
user202729

@ user202729 : 전에는 본 적이 없습니다. 알아두면 좋은 팁.
Chas Brown

4

C (gcc) (x86 아키텍처), 76 60 바이트

Arnauld에게 많은 변화를 주셔서 감사합니다!

인수는 (플러그, 소켓) 순서로 제공됩니다.

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

온라인으로 사용해보십시오!


여기 에 x86 아키텍처에 대해 제공 한 참조를 사용 하여을 수행하여 3 바이트를 절약 할 수 있습니다 1<<~-b.
Arnauld

d 와 삼항 연산자를 제거하여 66 바이트 .
Arnauld

비트 마스크를 두 배로 늘림으로써 62 바이트 이제 젤리와 레티 나를 제외한 모든 언어를 꺾습니다! \ o /
Arnauld

1
ab를 비교 하여 60 바이트 .
Arnauld

L"\6\0\xdd78\0襰襰"대신 추천{6,0,56696,0,35184,35184}
천장 고양이




2

PHP , 81 바이트

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

그것을 실행하려면 :

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

예:

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

또는 온라인으로 사용해보십시오!

노트:

  • 일부 바이트를 절약하기 위해 작은 / 큰 따옴표가없는 문자열을 문자열 래퍼로 사용했습니다. 따라서이 error_reporting=0옵션은 경고를 출력하지 않는 데 사용됩니다.
  • 입력은 대문자로만 작동합니다.
  • 호환성을 위해 1을 출력하고 비 호환성을 위해 0을 출력합니다.

어떻게?

모든 플러그는 자체와 동일한 소켓과 호환됩니다. 소켓과 더 호환되는 4 개의 특수 플러그 (A, C, E, F)가 있습니다. 특수 플러그의 이름을 가진 4 개의 문자열 변수는 추가 호환 가능 소켓 목록을 보유하도록 정의됩니다.

입력 플러그와 소켓이 동일한 지 또는 소켓이 해당 플러그의 호환 가능한 소켓 목록에 있는지 확인합니다. 후자의 점검은 PHP 변수 변수의 도움으로 수행됩니다 .


2

자바 스크립트 ES6, 66 65 64 자

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

에 대문자를 취 p플러그와 s, 반환 falsy (소켓 0) 또는 truthy ( 1, 2, 4, ..., 8192) 값.

테스트:

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, 감사합니다, 업데이트되었습니다. 그러나 귀하의 링크는 이상하고 열리지 않습니다.
Qwertiy

TIO입니다. 나를 위해 열린다.
Asone Tuhid

@AsoneTuhid,ERR_CONNECTION_RESET
Qwertiy

제거하려고 했습니까 https? 다른 TIO 링크가 작동합니까? 나는 맥 (크롬과 사파리)와 안드로이드에서 시도하고 잘 작동합니다 ...
Asone Tuhid

2

R , 132129113 바이트

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

온라인으로 사용해보십시오!

다음 행렬을 작성하고 m[S,P]TRUE이면 => 1을 추출하고 , 그렇지 않으면 0을 추출 합니다.

       [,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

intToUtf8이 함수를 사용 하고로 대체 하여 인덱스를 압축하여 3 바이트를 절약 했습니다 !. 더 읽기 쉬운 버전은 히스토리를 참조하십시오.

@Giuseppe 덕분에 16 바이트를 절약했습니다!


당신은 필요합니까 t=에서 rep?
주세페

@ 주세페가 아닌 것 같습니다!
JayCe


@Giuseppe 이제 완전히 밀교적인 언어 제출처럼 보입니다.
JayCe

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.