2Col構文を検証してください!


11

人々のカップルは最近気づいたかもしれませんが、私はほとんどの開発放棄してきたBraingolfを、それは退屈と平凡だため、そして上へ移動2Colもう少し面白いです、そしてゴルフの言語に設計されていません。

2Colの定義機能は、改行を除いて、すべてのコード行が正確に2文字の長さでなければならないことです。つまり、2Colプログラムの長さは、プログラムの行数が3n-1どこにあるかnとして常に計算できます。

2Colコードを文字列として指定し、有効な2Colコード(すべての行が正確に2文字であり、3n-1式に準拠している)である場合は真実を出力し、そうでない場合はfalseyを出力します。

入力

入力は、単一の文字列または文字の配列として取得する必要があります。

出力

入力文字列が有効なレイアウトの場合は真偽値、そうでない場合は偽値。

コードは、使用する真実/偽の値が一貫している必要があります

テストケース

======
F!
$^
----
truthy
======


======
*8
+1
Sq
----
truthy
======


======
nop
xt
----
falsey
======


======
+1
+1
#^

----
falsey
======


======
<empty string>
----
falsey
======


======
ye
----
truthy
======


======
no<space>
----
falsey
======


======
test
----
falsey
======


======
puzzle
----
falsey
======

得点

これはので、最少バイト数が勝ちます!


@Shaggyいいえ、何らかの理由で使用する言語がtrue偽りとfalse真実を考慮しない限り
いいえ

1
@StephenS Will do
Skidsdev

@Mayubeありがとう、申し訳ありませんが、そのxDの前に「could you」を追加するのを忘れました
スティーブン

テストケースを追加することをお勧めしますpuzzle。これにより、3を法とする文字列全体の長さを無効にして(現在のすべてのテストケースで機能する)無効なソリューションが作成されます。
同志SparklePony

@ComradeSparklePonyが行います
Skidsdev

回答:


6

Brachylog(2)、4バイト

ṇl₂ᵐ

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

完全なプログラム(これはfalse.ため、アサーションの失敗があった場合、Brachylogの完全なプログラムが出力されますtrue.

説明

ṇl₂ᵐ
ṇ     Split input into lines
   ᵐ  For each line:
 l₂     Assert that that line has length 2

下付きl文字はBrachylogの最新の機能の1つであり(まだチャレンジよりも古い)、これを使用するのは良い挑戦です。


けれどもṇlᵛ2ṇlᵛ²も働くだろう。
無関係な文字列

3

JavaScript(ES6)、24 28 25 24バイト

プログラムを修正し、@ PunPun1000のおかげで3バイト削りました

@Shaggyのおかげで1バイト削り取られる

s=>/^(..\n)*..$/.test(s)

有効な場合はtrueを返し、そうでない場合はfalseを返します。

f=
s=>/^(..\n)*..$/.test(s)

t=
`22
22
22
22
22`

console.log(f(t));
console.log(f(t.slice(0, -1)));


これを見てみると、2つのテストケース(2文字だけで改行なしの真実のケースと、末尾に改行がある偽のケース)で機能するとは思わない。ただしs=>s.match(/^(..\n)*..$/)、これらの両方に正しく一致する必要がありますが、25バイトで短くなります
-PunPun1000

@ PunPun1000ありがとうございます、あなたは正しいです。
スティーブン

残念ながら、2つの出力値が一貫していないため、これは無効です。ただし、それを修正し、のtest代わりにを使用してバイト保存できるはずですmatch
シャギー

@シャギーありがとう-それが編集されたので私が答えたときにそれを見なかった理由
スティーブン

私が知っている、それが私がそれを指摘した理由です;)あなたはあなたの戻り値に関するメモを更新したいと思うかもしれません。
シャギー

2

Cubix、20バイト

真実の場合は1を返し、偽の場合は何も返しません

@1OuABq>;;?w-!$@;U_N

立方体

    @ 1
    O u
A B q > ; ; ? w
- ! $ @ ; U _ N
    . .
    . .
  • ABq すべての入力を丸lurみし、それを逆にして、EOI(-1)をスタックの一番下にプッシュします
  • >;; ループに入ってスタックからアイテムを削除する
  • ? EOI(-1)のテスト。
    • 1uO@スタックにプッシュ1が見つかった場合、整数出力にuターンして停止します
    • それ以外の場合は、車線シフトにリダイレクトするものに_反射します?w
  • N-!$@;U 改行(10)をスタックにプッシュ、減算、結果をテスト、falseの場合は停止をスキップ、結果を削除してuターン
  • ;;> スタックから改行を削除し、ループにリダイレクトします。

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


2

Python、51

lambda s:all(len(l)==2for l in(s+"\n").splitlines())

テストケースランナー:

tcs = {
    "F!\n$^": 1,
    "*8\n+1\nSq": 1,
    "nop\nxt": 0,
    "+1\n+1\n#^\n": 0,
    "": 0,
    "ye": 1,
    "no ": 0,
    "test": 0,
    "puzzle": 0
}
f = lambda s:all(len(l)==2for l in(s+"\n").splitlines())
for tc, expected in tcs.items():
    assert f(tc) == expected

2

Haskell、23 52 32バイト

all((==2).length).lines.(++"\n")

他のソリューションからインスピレーションを得ましたが、それを巧妙なトリックで追加しました"\n"


私はそれを修正しましたが、短い解決策をRIPします。
プログラム男



1

JavaScript(ES6)、35 24バイト

s=>!/^.?$|.../gm.test(s)

それを試してみてください

f=
s=>!/^.?$|.../gm.test(s)
oninput=_=>o.innerText=f(i.value)
o.innerText=f(i.value=`F!
$^`)
<textarea id=i></textarea><pre id=o>


There's gotta be a shorter way to do this with RegEx! うん(そして私のものはおそらく最適ではない)
スティーブン


1

J-uby 19 18バイト

:=~&/^(..\n*)..$/m

:=~&正規表現に一致するかどうかを取得してx返す匿名関数を作成します。0/^(..\n*)..$/mnil



0

Bash + GNUユーティリティ、13

grep -qv ^..$

これにより、シェルの戻り値が設定されます( $?)がfalseの場合は0、trueの場合は1に設定されます。これは実際には通常のシェル規則と比較して反対の意味ですので、その権利を得るにはあなたがする必要があります:

Bash + GNUユーティリティ、15

! grep -qv ^..$


0

Japt7 6バイト

·eÈʶ2

オンラインで試す


説明

     :Implicit input of string "U"
·    :Split to array on newline
eÈ   :Maps over the array, checking that every item's ...
Ê    :length ...
¶2   :Equals 2
     :Implicit output of result
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.