Prise - Compatibilité des fiches


19

Voyager avec des appareils électroniques est toujours amusant, surtout lorsque vous avez besoin d'un adaptateur pour les charger. Votre défi est de faciliter un peu la planification d'un voyage en vérifiant si une prise donnée sera compatible avec une prise donnée.

Défi

Étant donné un type de prise et un type de prise, renvoyez une valeur qui indique s'ils fonctionneront ensemble ou non.

Tableau de compatibilité

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

Les tableaux présentent les mêmes informations, uniquement transposées.

Pour référence .

Contribution

  • L'entrée sera donnée en deux majuscules ou deux minuscules (à votre choix).

  • Les entrées seront toujours /[A-O]/(ou /[a-o]/), il n'est pas nécessaire de gérer les entrées non valides.

  • Vous pouvez accepter les deux entrées dans n'importe quel ordre (veuillez préciser lesquelles).

  • L'entrée peut être prise dans n'importe quel format raisonnable (chaîne, stdin, tableau, ...).

  • Si vous prenez les deux entrées dans une même chaîne, elles ne peuvent pas être séparées par plus d'un caractère et rien ne doit les entourer

  • De bonnes entrées: "G,K", "EF", "a b",['l', 'o']

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

Production

  • La sortie peut être retournée dans n'importe quel format raisonnable .

  • La sortie doit être soit truthy/ falsysoit l'une des 2 valeurs constantes

  • Bonnes sorties: false/ any positive number, 1/ 2, 'T'/'F'

  • Mauvaises sorties: an even number/ an odd number, 1/more than 1

Exemples

En utilisant le format socket, plug=> true/ false.

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

Les failles standard ne sont pas autorisées.

C'est du donc la réponse avec le moins d'octets dans chaque langue l'emporte.


Mon pays n'utilise que C et F, j'ai aussi vu J ... mais pourquoi y en a-t-il tant ???
AlexRacer

1
@AlexRacer Ici, lisez un peu , il y a aussi la prise de rasoir bizarre et la prise italienne extra large et quelques autres. Europlug est le maître-bouchon.
Asone Tuhid

Réponses:




6

Python 3 , 72 octets 73 octets 70 octets

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

Essayez-le en ligne!

Edit: Merci à Chas Brown pour avoir coupé du gras!


Trouvé une faute de frappe qui a renvoyé C, C à false.
machina.widmo

Agréable! q=peut être omis car la fonction est anonyme. De plus, il y a un espace supplémentaire. 70 octets. Essayez-le en ligne.
Chas Brown

Merci! Pour une raison quelconque, je pensais que le lambda capturerait y, c'est pourquoi je l'avais écrit de cette façon au départ.
machina.widmo

Bienvenue sur PPCG et bon premier post!
user202729

@ user202729: Je n'avais jamais vu ça auparavant; bon conseil à savoir.
Chas Brown

4

C (gcc) (architecture x86), 76 60 octets

Un grand merci à Arnauld pour les changements!

Les arguments sont donnés dans l'ordre (plug, socket).

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

Essayez-le en ligne!


En utilisant la référence que vous avez fournie ici sur les architectures x86: vous pouvez économiser 3 octets en faisant 1<<~-b.
Arnauld

66 octets en se débarrassant de d et de l'opérateur ternaire.
Arnauld

62 octets en doublant les masques de bit. Battre maintenant toutes les langues sauf Jelly et Retina! \ o /
Arnauld

1
60 octets en comparant simplement a à b .
Arnauld

Suggérer à la L"\6\0\xdd78\0襰襰"place de{6,0,56696,0,35184,35184}
plafondcat

3

Haskell, 67 octets

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

Les arguments pour fonctionner #sont deux caractères, plug first, socket second.

Essayez-le en ligne!




2

PHP , 81 octets

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

Pour l'exécuter:

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

Exemple:

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

Ou essayez-le en ligne!

Remarques:

  • Pour économiser quelques octets, j'ai utilisé des chaînes sans guillemets simples / doubles comme wrapper de chaîne. Ainsi, l' error_reporting=0option est utilisée pour ne pas générer d'avertissements.
  • L'entrée ne fonctionne qu'avec des lettres majuscules.
  • Sorties 1 pour la compatibilité et 0 pour la non-compatibilité.

Comment?

Chaque fiche est compatible avec la même prise que la sienne. Il existe quatre fiches spéciales (A, C, E, F) qui sont également compatibles avec quelques prises supplémentaires. Quatre variables de chaîne avec le nom des fiches spéciales sont définies pour contenir la liste de leurs prises supplémentaires compatibles.

Il est vérifié si la prise et la prise d'entrée sont identiques ou si la prise est dans la liste des prises compatibles pour cette prise. Cette dernière vérification est effectuée à l'aide des variables variables de PHP .


2

Javascript ES6, 66 65 64 caractères

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

Prend en lettres majuscules ppour bouchon et spour la prise, le rendement falsy ( 0) ou truthy ( 1, 2, 4, ..., 8192) valeur.

Tester:

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, merci, mis à jour. Mais votre lien est étrange et ne s'ouvre pas.
Qwertiy

C'est TIO. Ouvre pour moi.
Asone Tuhid

@AsoneTuhid,ERR_CONNECTION_RESET
Qwertiy

Avez-vous essayé de supprimer https? Les autres liens TIO fonctionnent-ils? J'ai essayé sur mac (chrome et safari) et android et ça marche très bien ...
Asone Tuhid

2

R , 132 129 113 octets

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

Essayez-le en ligne!

Construit la matrice suivante et extrait m[S,P]=> 1 si VRAI, sinon 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

Enregistré 3 octets en compressant les index en utilisant intToUtf8et en remplaçant cette fonction par !. Voir l'historique pour une version plus lisible.

16 octets enregistrés grâce à @Giuseppe!


avez-vous besoin t=de rep?
Giuseppe

@Giuseppe ressemble à moi non!
JayCe


@Giuseppe Cela ressemble totalement à une soumission de langue ésotérique maintenant.
JayCe

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.