Soquete - Compatibilidade de plugue


19

Viajar com eletrônicos é sempre divertido, especialmente quando você precisa de um adaptador para carregá-los. Seu desafio é facilitar um pouco o planejamento de uma viagem, verificando se um determinado plugue será compatível com um soquete.

Desafio

Dado um tipo de plug e um tipo de soquete, retorne um valor que indica se eles trabalharão juntos ou não.

Tabela de compatibilidade

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

As tabelas mostram as mesmas informações, apenas transpostas.

Para referência .

Entrada

  • A entrada será dada como duas letras maiúsculas ou duas minúsculas (você escolhe).

  • As entradas sempre serão /[A-O]/(ou /[a-o]/), não há necessidade de lidar com entradas inválidas.

  • Você pode aceitar as duas entradas em qualquer ordem (especifique qual).

  • A entrada pode ser obtida em qualquer formato razoável (string, stdin, array, ...).

  • Se você pegar as duas entradas em uma única sequência, elas podem ser separadas por não mais que um caractere e não deve haver nada ao seu redor

  • Boas entradas: "G,K", "EF", "a b",['l', 'o']

  • Bad entradas: "K l", "f(O)(I)",[1,5]

Resultado

  • A saída pode ser retornada em qualquer formato razoável .

  • Saída deve ser truthy/ falsyou um de 2 valores constantes

  • Bons resultados: false/ any positive number, 1/ 2, 'T'/'F'

  • Saídas incorretas: an even number/ an odd number, 1/more than 1

Exemplos

Usando o formato socket, plug=> true/ false.

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

As brechas padrão não são permitidas.

Isso é então a resposta com o menor número de bytes em cada idioma vence.


Meu país usa apenas C e F, eu também vi J ... mas por que existem tantos ???
AlexRacer

1
@AlexRacer Aqui, tenha algumas leituras , há também o estranho plug do barbeador e o plug extra largo italiano e outros. O Europlug é o masterplug tho.
Asone Tuhid

Respostas:




6

Python 3 , 72 bytes 73 bytes 70 bytes

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

Experimente online!

Edit: Obrigado a Chas Brown por cortar um pouco de gordura!


Foi encontrado um erro de digitação que fazia com que C, C retornasse falso.
machina.widmo

Agradável! q=pode ser omitido, pois a função é anônima. Além disso, há um espaço extra. 70 bytes. Experimente online.
Chas Brown

Obrigado! Por alguma razão, pensei que o lambda capturaria y, e foi por isso que o escrevi dessa maneira inicialmente.
machina.widmo

Bem-vindo ao PPCG e bom primeiro post!
user202729

@ user202729: Não tinha visto isso antes; boa dica para saber.
quer

4

C (gcc) (arquitetura x86), 76 60 bytes

Muito obrigado a Arnauld pelas mudanças!

Os argumentos são dados em ordem (plugue, soquete).

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

Experimente online!


Usando a referência que você forneceu aqui sobre arquiteturas x86: você pode salvar 3 bytes fazendo isso 1<<~-b.
Arnauld

66 bytes , eliminando d e o operador ternário.
Arnauld

62 bytes dobrando as máscaras de bits. Agora superando todos os idiomas, exceto Jelly e Retina! \ o /
Arnauld

1
60 bytes apenas comparando a com b .
Arnauld

Sugerir em L"\6\0\xdd78\0襰襰"vez de{6,0,56696,0,35184,35184}
tetocat 31/07

3

Haskell, 67 bytes

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

Os argumentos para funcionar #são dois caracteres, primeiro plug, segundo socket.

Experimente online!




2

PHP , 81 bytes

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

Para executá-lo:

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

Exemplo:

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

Ou Experimente online!

Notas:

  • Para salvar alguns bytes, usei cadeias sem aspas simples / duplas como o invólucro da cadeia. Portanto, a error_reporting=0opção é usada para não emitir avisos.
  • A entrada funciona apenas com letras maiúsculas.
  • Saídas 1 para compatibilidade e 0 para não compatibilidade.

Quão?

Cada plugue é compatível com o mesmo soquete que ele. Existem quatro fichas especiais (A, C, E, F) que também são compatíveis com mais algumas tomadas. Quatro variáveis ​​de string com o nome dos plugues especiais são definidas para manter a lista de seus soquetes adicionais compatíveis.

É verificado se o plugue e o soquete de entrada são iguais ou se o soquete está na lista de soquetes compatíveis para esse plugue. A última verificação é feita com a ajuda das variáveis ​​variáveis do PHP .


2

Javascript ES6, 66 65 64 caracteres

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

Toma letras maiúsculas para pa ficha e spara o soquete, retornos Falsas ( 0) ou truthy ( 1, 2, 4, ..., 8192valor).

Teste:

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, obrigado, atualizado. Mas seu link é esquisito e não abre.
21718 Qwertiy

É o TIO. Abre para mim.
Asone Tuhid

@AsoneTuhid,ERR_CONNECTION_RESET
Qwertiy

Você tentou remover https? Outros links TIO funcionam? Eu tentei no mac (chrome e safari) e android e ele funciona bem ...
Asone Tuhid

2

R , 132 129 113 bytes

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

Experimente online!

Cria a seguinte matriz e extrai m[S,P]=> 1 se TRUE, caso contrário 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

Economizou 3 bytes compactando índices usando intToUtf8e substituindo esta função por !. Veja Histórico para uma versão mais legível.

Guardado 16 bytes graças a @Giuseppe!


você precisa t=entrar rep?
Giuseppe

@ Giuseppe parece que eu não!
Jayce


@ Giuseppe Parece totalmente um envio de idioma esotérico agora.
Jayce

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.