ソケット-プラグの互換性


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]/)であり、無効な入力を処理する必要はありません。

  • 2つの入力を任意の順序で受け入れることができます(どちらを指定してください)。

  • 入力は、任意の妥当な形式(文字列、標準入力、配列など)で取得できます。

  • 両方の入力を単一の文字列で取得する場合、それらは複数の文字で区切ることはできず、それらを囲むものは何もないはずです

  • グッド入力:"G,K""EF""a b"['l', 'o']

  • 悪い入力:"K l""f(O)(I)"[1,5]

出力

  • 出力は、妥当な形式で返すことができます

  • 出力は、truthy/ falsyまたは2つの定数値のいずれかでなければなりません

  • 適切な出力:false/ any positive number1/ 2'T'/'F'

  • 悪い出力:an even number/ an odd number1/more than 1

フォーマットを使用してsocketplug=> 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はmasterplug thoです。
Asone Tuhid

回答:



7

Python 3、76バイト

lambda s,p:any([s==p,p in"CEF"and s in"DEFHKO",s=="B"<p,s in"JLN"and"C"==p])

オンラインでお試しください!

クレジット:


1
lambda s,p:any([s==p,p in"CEF"and s in"DEFHKO",s=="B"<p,s in"JLN"and"C"==p])76バイト?
ニール

@Neilありがとう、更新しました。
ニール

3
とても面白い笑ベター・ニール
ルイス・フェリペ・デ・イエス・ムニョス

6

Pythonの372バイト 73バイト 70バイト

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

オンラインでお試しください!

編集:脂肪をカットしてくれたチャス・ブラウンに感謝します!


C、Cがfalseを返す原因となるタイプミスを見つけました。
machina.widmo

いいね!q=関数は匿名なので、省略できます。また、余分なスペースがあります。70バイト。オンラインでお試しください。
チャスブラウン

ありがとう!何らかの理由で、ラムダがyをキャプチャすると考えたため、最初にそのように記述しました。
machina.widmo

PPCGへようこそ、最初の投稿です!
user202729

@ user202729:以前は見たことがありませんでした。知っておくと便利なヒント。
チャスブラウン

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
アーナルド

dと三項演算子を取り除くことで66バイト
アーナルド

ビットマスクを2倍にして62バイト。JellyとRetina以外のすべての言語に勝ちました!\ o /
アーナウルド

1
abを比較するだけで60バイト
アルノー

提案するL"\6\0\xdd78\0襰襰"代わりに{6,0,56696,0,35184,35184}
ceilingcat




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の変数variableを使用して行われます


2

Javascriptを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 、...、 )の値。248192

テスト:

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です。私のために開きます。
アソーントゥヒッド

@AsoneTuhid、ERR_CONNECTION_RESET
Qwertiy

削除してみましたhttpsか?他のTIOリンクは機能しますか?Mac(クロームとサファリ)とAndroidを試してみたところ、問題なく動作しました...
Asone Tuhid

2

R132129113バイト

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

を使用してインデックスを圧縮することで3バイトを節約しました intToUtf8この関数をして、この関数をに置き換えてしました!。より読みやすいバージョンについては、履歴を参照してください。

@Giuseppeのおかげで16バイト節約されました!


あなたは必要ですかt=rep
ジュゼッペ

@ジュゼッペはそうではないようです!
JayCe


@Giuseppe今では完全に難解な言語の提出のように見えます。
JayCe

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.