2Col सिंटैक्स मान्य करें!


11

जैसा कि लोगों के एक जोड़े ने हाल ही में देखा होगा, मैंने बड़े पैमाने पर ब्रिंगोल्फ के विकास को छोड़ दिया है क्योंकि यह उबाऊ और उदासीन है, और 2Col पर चला गया है जो थोड़ा अधिक दिलचस्प है, और एक गोल्फ भाषा के लिए डिज़ाइन नहीं किया गया है।

2Col की परिभाषित करने की विशेषता यह है कि नई पंक्ति को छोड़कर कोड की प्रत्येक पंक्ति ठीक 2 वर्ण लंबी होनी चाहिए। इसका मतलब है कि 2Col प्रोग्राम की लंबाई की गणना हमेशा की जा सकती है क्योंकि प्रोग्राम में लाइनों की संख्या 3n-1कहां nहै।

तो यहाँ मेरी चुनौती है: एक स्ट्रिंग के रूप में 2Col कोड दिया गया है, आउटपुट सत्य है यदि यह मान्य है 2Col कोड (प्रत्येक पंक्ति बिल्कुल 2 वर्ण है और यह 3n-1सूत्र के साथ अनुरूप है), और अन्यथा अन्यथा।

इनपुट

इनपुट को एकल स्ट्रिंग, या वर्णों की एक सरणी के रूप में लिया जाना चाहिए।

उत्पादन

एक सत्य मान यदि इनपुट स्ट्रिंग वैध लेआउट है, और अन्यथा एक गलत मूल्य।

आपका कोड सुसंगत होना चाहिए जिसमें सत्य / असत्य मूल्यों का उपयोग होता है

परीक्षण के मामलों

======
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 नहीं है, जब तक किसी कारण से जिस भाषा का उपयोग पर विचार करता नहीं truefalsey और falsetruthy
Skidsdev

1
@StephenS करेंगे
स्काईसदेव

@ माय्यूब धन्यवाद, क्षमा करें, मैं उस एक्सडी के सामने "आप" को जोड़ना भूल गया
स्टीफन

मेरा सुझाव है कि आप एक परीक्षण मामला जोड़ें puzzle:। यह ऐसे समाधान करेगा जो स्ट्रिंग मोडुलो 3 की पूरी लंबाई को करते हैं, फिर उपेक्षित (जो सभी मौजूदा परीक्षण मामलों के लिए काम करता है) अमान्य है।
कॉमरेड स्पार्कलपनी

@ कॉम्रेडस्पार्कलेनी करेगी
स्काइड्सदेव

जवाबों:


6

ब्रेकीलॉग (2), 4 बाइट्स

ṇl₂ᵐ

इसे ऑनलाइन आज़माएं!

पूर्ण कार्यक्रम (क्योंकि यह एक ; false.यदि पूर्णांक विफलता, true.एक के बिना , पूर्ण कार्यक्रम आउटपुट;

व्याख्या

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

सबस्क्रिप्ट पर lBrachylog की नवीनतम सुविधाओं (हालांकि अभी भी चुनौती से अधिक उम्र के) में से एक है, और इस पर उन्हें इस्तेमाल करने के लिए एक अच्छी चुनौती है।


हालांकि ṇlᵛ2और ṇlᵛ²भी काम करेगा।
असंबंधित स्ट्रिंग

3

जावास्क्रिप्ट (ईएस 6), 24 28 25 24 बाइट्स

फिक्स्ड प्रोग्राम और तीन बाइट्स का मुंडन @ PunPun1000 धन्यवाद

@ बस्ती के लिए एक बाइट धन्यवाद के साथ मुंडा

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

यदि सही है और नहीं तो सही है।

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

t=
`22
22
22
22
22`

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


बस इसे देखकर मुझे नहीं लगता कि यह दो परीक्षण मामलों के लिए काम करता है (केवल 2 पात्रों के साथ सत्य एक और कोई नई रेखा नहीं है, और एक अनुगामी न्यूलाइन के साथ एक गलत है)। हालाँकि s=>s.match(/^(..\n)*..$/)25 बाइट्स में छोटी होने पर भी दोनों को सही ढंग से मैच करना चाहिए
PunPun1000

@ PunPun1000 आपको धन्यवाद, आप सही हैं।
स्टीफन

दुर्भाग्य से यह अमान्य है क्योंकि 2 आउटपुट मान संगत नहीं हैं। हालांकि, आपको इसे ठीक करने में सक्षम होना चाहिए औरtest इसके बजाय का उपयोग करके एक बाइट को बचाने के लिए करना चाहिए match
झबरा

@ धन्यवाद धन्यवाद - कारण जो मैंने देखा नहीं था जब मैंने उत्तर दिया क्योंकि वह सिर्फ संपादित किया गया था
स्टीफन

मुझे पता है, इसलिए मैंने इसे इंगित किया है;) आप अपने रिटर्न मूल्यों पर नोट को अपडेट करना चाह सकते हैं।
झबरा

2

क्यूबिक्स , 20 बाइट्स

सच्चाई के लिए 1 रिटर्न और झूठी के लिए कुछ भी नहीं

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

Cubified

    @ 1
    O u
A B q > ; ; ? w
- ! $ @ ; U _ N
    . .
    . .
  • ABq सभी इनपुट में घिसाव, इसे उल्टा करें और स्टैक के नीचे ईओआई (-1) को धक्का दें
  • >;; लूप में कदम रखें और स्टैक से आइटम हटा दें
  • ? EOI (-1) के लिए टेस्ट।
    • यदि 1uO@स्टैक 1 को धक्का मिलता है, तो पूर्णांक आउटपुट और हाल्ट पर यू-टर्न लें
    • अन्यथा लेन शिफ्ट _पर ?पुनर्निर्देशित करता हैw
  • N-!$@;U स्टैक पर पुश लाइन फीड (10), घटाना, परीक्षा परिणाम, झूठ को छोड़ें यदि गलत है, तो परिणाम निकालें और यू-टर्न लें
  • ;;> स्टैक से लाइन फीड हटाएं और लूप में रीडायरेक्ट करें।

इसे ऑनलाइन आज़माएं!


2

अजगर, ५१

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

हास्केल, 23 52 32 बाइट्स

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

मुझे कुछ अन्य समाधानों से मेरी प्रेरणा मिली, जो चालाक चाल है "\n"


मैंने इसे ठीक कर दिया है, लेकिन मेरा संक्षिप्त समाधान रिप करें।
प्रोग्राम मैन



1

जावास्क्रिप्ट (ईएस 6), 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

जे-यूबी , 19 18 बाइट्स

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

:=~&अनाम फ़ंक्शन बनाता है जो लेता है xऔर रिटर्न करता है 0यदि यह regex से मेल खाता है /^(..\n*)..$/m, या nilअन्यथा।


0

जावा (ओपनजेडके 8) , 25 बाइट्स

s->s.matches("(..\n)*..")

इसे ऑनलाइन आज़माएं!

जाँचता है कि इनपुट स्ट्रिंग में लाइन फीड और उसके बाद अंतिम पंक्ति में कितनी संख्या में लाइनें हैं (कम से कम एक लाइन सुनिश्चित करता है)


0

बैश + जीएनयू उपयोगिताओं, 13

grep -qv ^..$

यह शेल रिटर्न वैल्यू (एक्सेस $?करने योग्य ) में 0 के लिए गलत और 1 के लिए सेट करता है। यह वास्तव में सामान्य शेल सम्मेलन की तुलना में विपरीत भावना है , इसलिए यह करने के लिए कि आपको सही करने की आवश्यकता है:

बैश + जीएनयू उपयोगिताओं, 15

! grep -qv ^..$


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.