#Hashtag_or_not


25

इस कोड में गोल्फ चुनौती, आप हैशटैग सत्यापित करेंगे!

#What_your_code_should_do

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

हम एक स्ट्रिंग को मान्य हैशटैग के रूप में परिभाषित करते हैं यदि ...

  • इसकी शुरुआत हैश ( #) से होती है।
  • हैशटैग के बाद इसका नंबर सही नहीं है (उदाहरण के #2016USElectionलिए वैध हैशटैग नहीं है)।
  • इसका कोई "विशेष वर्ण" नहीं है (अर्थात कोई भी वर्ण जो वर्णमाला नहीं है, अंडरस्कोर ( _) या एक संख्या)।

आप मान सकते हैं कि इनपुट में केवल ASCII वर्ण हैं। (यदि हमने यूनिकोड भी किया तो यह अनुचित होगा।)

#rules

बुनियादी नियम लागू होते हैं।

#उदाहरण

Truthy:

#
#e
#_ABC 
#thisisanunexpectedlylongstringxoxoxoxo
#USElection2016

Falsy:

Hello, World!
#12thBday
#not-valid
#alsoNotValid!
#!not_a_hash

10
क्या #वास्तव में एक वैध हैशटैग है?
Adám

4
है #öäüमान्य है?
चर्की

7
#किसी भी प्रणाली, फेसबुक या ट्विटर द्वारा एक वैध हैशटैग नहीं है, यह भी निर्धारित नियमों को तोड़ता है यह भी सुनिश्चित नहीं करता है कि #_ABC उन पर फिर से वैध है, लेकिन निश्चित रूप से नहीं।
मार्टिन बार्कर

3
मेरा मानना ​​है an alphabetकि एससीआई अपरकेस या लोअरकेस अक्षर? यानी abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ?
R14

7
A # हैशटैग नहीं है। यह एक हैश है। यह, एक स्ट्रिंग के बाद सोशल मीडिया नेटवर्क हैशटैग के रूप में संदर्भित होता है। यह एक टैग है, जो हैश से शुरू होता है।
i-CONICA

जवाबों:


19

रेटिना , 12 बाइट्स

^#(?!\d)\w*$

1हैशटैग के लिए प्रिंट और 0अन्यथा।

इसे ऑनलाइन आज़माएं! (पहली पंक्ति एक लाइनफ़ीड-पृथक परीक्षण सूट को सक्षम करती है।)

यहाँ समझाने के लिए ज्यादा नहीं, यह परिभाषा का एक शाब्दिक कार्यान्वयन है: ^और $सिर्फ एंकर यह सुनिश्चित कर रहे हैं कि मैच पूरे स्ट्रिंग को कवर #करता है , यह जाँचता है कि स्ट्रिंग एक के साथ शुरू होती है #, (?!\d)यह सुनिश्चित करता है कि अगला चरित्र एक अंक नहीं है (अग्रिम के बिना) रेगेक्स इंजन की स्थिति), \w*जाँच करता है कि हम शून्य या अधिक अक्षरों, अंकों या अंडरस्कोर के साथ स्ट्रिंग के अंत तक पहुँच सकते हैं।

डिफ़ॉल्ट रूप से, रेटिना दिए गए रेगेक्स के मैचों की संख्या को गिनता है, यही कारण है कि यह 1वैध हैश टैग और 0अन्यथा के लिए देता है ।


पर्ल में, (?!\d)है (?=\D)... लेकिन मुझे नहीं पता कि आपने रेटिना कैसे लिखा है। क्या यह संभव है कि आप (?\D)बिना =बाइट का उपयोग कर सकते हैं और बचा सकते हैं ? (यदि नहीं, तो क्या यह भाषा को संपादित करने के लायक है, इसलिए यह संभव है?)
msh210

2
@ msh210 इस (?!\d)बात से अलग (?=\D)है कि वर्तमान स्थिति के बाद उत्तरार्द्ध को कुछ चरित्र की आवश्यकता होती है जबकि पूर्व स्ट्रिंग के अंत से संतुष्ट होता है। इसके बावजूद, रेगेक्स के स्वाद को समायोजित करना वर्तमान में संभव नहीं है (क्योंकि मैं सिर्फ रेगेक्स को .NET के रेगेक्स इंजन को सौंप रहा हूं), लेकिन इस तरह के बदलाव करना लाइन के नीचे कहीं (बहुत दूर) रोडमैप पर है।
मार्टिन एंडर

1
उस ने कहा, मुझे नहीं लगता कि मैं =वैकल्पिक करूँगा । संपूर्ण (?...)सिंटैक्स को एक्स्टेंसिबिलिटी के लिए चुना गया था, जिसमें वर्ण के बाद ?कभी वैकल्पिक नहीं होता है और यह निर्धारित करता है कि यह किस प्रकार का समूह है, और मुझे नहीं लगता कि मैं उस एक्स्टेंसिबिलिटी को छोड़ना चाहता हूं।
मार्टिन एंडर

(अपनी पहली टिप्पणी) दुह, ज़ाहिर है, मुझे ध्यान देना चाहिए कि। लेकिन यह इस जवाब के लिए अप्रासंगिक है। (फिर से अपने दूसरे) हाँ, समझ में आता है। सब के बाद भी नहीं है (?{और (??और (?<(समूहों पर कब्जा करने के लिए और lookbehind के लिए दोनों) और (?-और (?1और निश्चित रूप से बुनियादी (?:। और शायद कुछ मैं;
msh210

6

पर्ल, 22 बाइट्स

21 बाइट्स कोड +1 के लिए -p

$_=/^#([a-z_]\w*)?$/i

प्रिंट 1 यदि यह एक वैध हैशटैग है, तो खाली स्ट्रिंग अन्यथा।

प्रयोग

perl -pe '$_=/^#([a-z_]\w*)?$/i' <<< '#'
1
perl -pe '$_=/^#([a-z_]\w*)?$/i' <<< '#_test'
1
perl -pe '$_=/^#([a-z_]\w*)?$/i' <<< '#1test'

मार्टिन एंडर के लिए 2 बाइट्स धन्यवाद (और उनके लुकअप विधि का उपयोग करके 4 अन्य )


पर्ल, 18 बाइट्स

17 बाइट्स कोड +1 के लिए -p

मार्टिन की नज़र का उपयोग करके यह बहुत कम हो सकता है!

$_=/^#(?!\d)\w*$/

आपने मार्टिन की नकल की और इसे संपादित किया, है ना?

@MatthewRoh दूसरा उत्तर मार्टिन के तंत्र हाँ का उपयोग करता है। उन्होंने कहा कि मैं इसका इस्तेमाल कर सकता हूं, लेकिन मैं नहीं चाहता कि यह मेरा मुख्य जवाब हो क्योंकि मैं खुद इसके साथ नहीं आया था! मैंने इसे तुलना के लिए जोड़ा है। रेटिना अभी भी पर्ल को इस प्रकार की चुनौती में आसानी से हरा देती है!
डोम हेस्टिंग्स

6

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

s=>/^#(?!\d)\w*$/.test(s)

F = s => /^#(?!\d)\w*$/.test(s)
input.oninput = () => result.innerHTML = input.value ? F(input.value) ? '\ud83d\udc8e' : '\ud83d\udca9' : '\ud83d\udcad';
#input, #result {
  vertical-align: middle;
  display: inline-block;
}
#input {
  line-height: 2em;
}
#result {
    font-size: 2em;
}
<input id="input" type="text"/> <span id="result">&#x1f4ad</span>


5

सी, 80 बाइट्स

फ़ंक्शन f()स्ट्रिंग को एक तर्क के रूप में लेता है और int *bसत्य / मिथ्या इंगित करने के लिए 1 या 0 में संशोधन करता है।

f(char*p,int*b){for(*b=(*p==35)&&!isdigit(p[1]);*p;++p)*b&=isalnum(*p)||*p==95;}

यदि स्ट्रिंग में हमेशा कम से कम एक वर्ण होता है (अर्थात कभी कोई रिक्त स्ट्रिंग नहीं), तो बाइट को 79 बाइट्स के लिए बंद किया जा सकता है:

f(char*p,int*b){for(*b=(*p==35)&&!isdigit(p[1]);*++p;)*b&=isalnum(*p)||*p==95;}

5

पायथन 3, 41 बाइट्स

import re
re.compile('#(?!\d)\w*$').match

यह बिल्कुल ठीक होना चाहिए। चूंकि मैच ऑब्जेक्ट्स Noneसत्य हैं और गलत है, मुझे लगता है कि ड्रॉप करना bool()ठीक है।
लिन

हाँ, मैंने इसके बारे में सोचा, इसे स्पष्ट करने के लिए धन्यवाद!
गैबोर फेकेट

यह "# मुझे Gábor" के लिए भी सत्य मान उत्पन्न करता है। BTW, मुझे लगता है कि नियमों को दूसरों द्वारा भी अनदेखा किया जा रहा है, लेकिन यह हम एक स्निपेट पर विचार करते थे, जिसे आमतौर पर उत्तर के रूप में स्वीकार नहीं किया जाता है जब तक कि प्रश्न स्पष्ट रूप से उन्हें अनुमति नहीं देता है।
मैनेटवर्क

धन्यवाद, मैंने आपके द्वारा लिखे गए मामले को संभालने के लिए इसे फिर से लिखा है और इसे लंबोदा फ़ंक्शन बनाया है।
गैबोर फेकेट

2
कैसे के बारे में re.compile('#(?!\d)\w*$').match? यह f=BTW को छोड़ने के लिए स्वीकार्य है ।
लिन

4

ब्रेकीलॉग , 55 बाइट्स

"#"|h"#",?b@lL'(eE,@A:"1234567890":"_"c'eE),@A:"_"ce~hL

यह कोई regex का उपयोग करता है।

व्याख्या

Main predicate, Input (?) is a string

  "#"                           ? = "#"
|                             Or
  h"#",                         First character of ? is "#"
  ?b@lL                         L is the rest of the chars of ? lowercased
  '(                            It is not possible for any char of L that...
    eE,                           Call this char E
    @A:"1234567890":"_"c          Concatenate the lowercase alphabet with the digits and "_"
    'eE                           E is not a member of that concatenated string
   ),                           
   @A:"_"c                      Concatenate the lowercase alphabet with "_"
   e~hL                         One char of that concatenated string is the first char of L

4

पायथन 3, 103 93 बाइट्स

all((c=='_'or c.isalpha()*i>0)^(i<1and'#'==c)^(c.isdigit()*i>1)for i,c in enumerate(input()))

#किया जा रहा है Trueमुझे यहाँ को मार डाला, मैं स्ट्रिंग की गणना करने में एक वर्ण इनपुट पर एक सूचकांक त्रुटि से बचने के लिए किया था।


1
+1। अच्छा! मैं isalpha()अपने py3 उत्तर पर पूरी तरह से विधि भूल गया : डी "#" सच होने के कारण, मुझे भी नष्ट कर दिया।
यति जूल

4

PowerShell v2 +, 25 बाइट्स

$args-match'^#(?!\d)\w*$'

मार्टिन के रेगेक्स का उपयोग करते हुए , बस PowerShell के -matchऑपरेटर में इनपुट के साथ युग्मित किया गया $args। सत्य / गलत मूल्यों के लिए, यह स्ट्रिंग को एक मैच (एक सत्य मूल्य) या एक गैर-मैच (एक गलत मूल्य) पर कुछ भी नहीं लौटाएगा। ऐसा इसलिए है क्योंकि जब किसी तुलना ऑपरेटर को किसी सरणी के विरुद्ध लागू किया जाता है, तो वह उस ऑपरेटर को संतुष्ट करने वाली कोई भी चीज़ लौटाता है

एक युगल उदाहरण ( [bool]उत्पादन को और अधिक स्पष्ट बनाने के लिए एक कास्ट में लिपटे ):

PS C:\Tools\Scripts\golfing> [bool](.\hashtag-or-not.ps1 '#2016Election')
False

PS C:\Tools\Scripts\golfing> [bool](.\hashtag-or-not.ps1 'Hello, World!')
False

PS C:\Tools\Scripts\golfing> [bool](.\hashtag-or-not.ps1 '#')
True

PS C:\Tools\Scripts\golfing> [bool](.\hashtag-or-not.ps1 '')
False

PS C:\Tools\Scripts\golfing> [bool](.\hashtag-or-not.ps1 '#USElection2016')
True

3

गणितज्ञ, 52 46 43 बाइट्स

सहेजे गए 6 की वजह से 9 बाइट्स @MartinEnder

StringMatchQ@RegularExpression@"#(?!\d)\w*"

समारोह। इनपुट के रूप में एक स्ट्रिंग लेता है, और रिटर्न Trueया Falseआउटपुट के रूप में। बहुत आसान है, सिर्फ रेक्स के खिलाफ मैच /#(?!\d)\w*/


मेरे पास यह विश्वास करने का कारण है कि यह इनपुट के लिए काम नहीं करेगा जैसे hello#worldकि आपके पास शुरुआत और अंत स्ट्रिंग एंकर नहीं हैं। मैं गणितज्ञ नहीं जानता, हालांकि मुझे यकीन नहीं है।
मूल्य स्याही

ठीक है, मैं उसके साथ रह सकता हूं।
वैल्यू इंक

3

दिल्लोग एपीएल , 22 20 बाइट्स

RegEx के बिना:

{0≤⎕NC 1↓⍵,⎕A}∧'#'=⊃

-2 ngn के लिए धन्यवाद


1
ओह वाह। अभी भी ऐसे लोग हैं जो एपीएल को जानते हैं। 37 साल हो गए जब मैंने इसका इस्तेमाल किया था!
शुभ अंक

@Auspex APL अच्छी तरह से और जीवित है, लेकिन उन वर्षों में काफी कम सुविधाएँ जोड़ी गई हैं।
आदम

3

पायथन 2, 79 बाइट्स

lambda x:x=='#'or(1>x[1].isdigit())&x[1:].replace('_','').isalnum()&('#'==x[0])

पहला गोल्फ प्रयास। Ungolfed संस्करण:

def f(x):
    if x == '#':
        return True
    else:
        return x[0]=='#' and x[1:].replace('_','').isalnum() and not x[1].isdigit()

अच्छा जवाब, और साइट पर आपका स्वागत है!
DJMcMayhem

3

ऑक्टेव, 37 56 54 43 बाइट्स

8 बाइट निकालने के लिए @LuisMendo का शुक्रिया!

@(s)s(1)==35&(isvarname(s(2:end))|nnz(s)<2)

बहुत गोल्फ नहीं है, लेकिन बहुत ही निर्मित है।
संपादित करें: मूल कोड बिना किसी प्रमुख '#' के स्ट्रिंग को स्वीकार करता है। मुझे लगता है मैं regex के साथ अटक जाना चाहिए था।

आइडोन पर टेस्ट सूट ।


3

पायथन 3 - 156 128 बाइट्स

lambda n:n=="#"or(n[0]=="#")*all(any([47<ord(c)<58,64<ord(c)<91,ord(c)==95,96<ord(c)<123])for c in n[1:]+"0")*~(47<ord(n[1])<58)

एक समाधान जो रेगेक्स का उपयोग नहीं करता है। 0 गलत है और हर दूसरा मूल्य सत्य है।

बाइट्स बचाने के लिए @LeakyNun को धन्यवाद!


@LeakyNun मुझे +0बाद में निकालना पड़ा n[1:], लेकिन दुख की बात है, अभी भी काम नहीं किया: / "#d" को गलत बताया।
यति

@LeakyNun अभी भी काम नहीं करता है :( फिर से, +0"#d" पर हटाने के लिए असफल हो गया था। मैंने इसे Python3 पर परीक्षण किया। हालांकि यकीन नहीं है कि यह Python2 पर काम करेगा
Yytsi

@LeakyNun बस सादा झूठ है।
यति जूल

@LeakyNun IndexOutOfRange"#" और " #d " के लिए फेंकता है False
यति

lambda n:n=="#"or(n[0]=="#")*all(any([47<ord(c)<58,64<ord(c)<91,ord(c)==95,96<ord(c)<123])for c in n[1:]+"0")*~(47<ord(n[1])<58)128 बाइट्स के लिए। सबूत है कि यह काम करता है
लीक नून

2

लुआ, 59 55 54 बाइट्स

कोड

s=arg[1]print(load(s:sub(2).."=0")and s:sub(1,1)=="#")

यह काम किस प्रकार करता है:

  1. जांचें कि क्या बाकी के चरित्र एक वैल्यू लुआ पहचानकर्ता हो सकते हैं (लूआ में पहचानकर्ता हैशटैग के समान नियमों का पालन करते हैं।)
  2. जाँच करें कि क्या पहला वर्ण ए है #

कमांड लाइन से इनपुट लेता है। प्रिंट trueअगर स्ट्रिंग एक वैध हैशटैग है, अन्यथा, यह प्रिंट करता है nil


2

Google शीट, 30 बाइट्स

एक अनाम कार्यपत्रक फ़ंक्शन जो सेल से इनपुट लेता है A1वह RE2 अभिव्यक्ति के खिलाफ जांच करता है और परिणाम को कॉलिंग सेल में आउटपुट करता है।

=RegexMatch(A1,"^#([a-z_]\w*)?


1

सैड 19 + 2 = 21 बाइट्स

/^#([a-z_]\w*)?$/Ip

यह सभी गैर-हैशटैग को फ़िल्टर करता है और वैध हैशटैग को आउटपुट करता है।

के रूप में चलाएँ sed -rn "/^#$|^#[a-z]\w*$/Ip"Ctrl+ D(ईओएफ भेजें) के साथ छोड़ दें ।


1

जीएनयू ग्रीप, 15 + 2 = 17 बाइट्स

grep -Ei '^#([a-z_]\w*)?$'

परीक्षा:

$ echo '#
#e
#_ABC
#thisisanunexpectedlylongstringxoxoxoxo
#USElection2016
Hello, World!
#12thBday
#not-valid
#alsoNotValid!' | grep -Ei '^#([a-z_][a-z0-9_]*)?$'

आउटपुट:

#
#e
#_ABC
#thisisanunexpectedlylongstringxoxoxoxo
#USElection2016

1

पायथन 3, 97 बाइट्स 70 बाइट्स 56 बाइट्स

lambda x:s=x[2:];b=x[1];all(x!="#",[x[0]=="#",any[b.isalpha(),"_"in b],any[s.isalnum(),"_"in s]])

(कोड परिवर्तित) मानव पठनीय

x=input()
if x[0]=="#" and x[1].isalpha() and str(x)[2:].isalnum():
    print(True)
else:
    print(False)


अच्छा जवाब, और साइट पर आपका स्वागत है! कार्य भी तो आप के साथ इस काफ़ी छोटा कर सकता है, की अनुमति हैlambda x:all(True==[x[0]=="#",x[1].isalpha(),x[2:].isalpha()])
DJMcMayhem

कोई सम्स्या नहीं, मै खुश हूं कि सहायता कर सका!
डीजेमेक्मे

1
मुझे बुरी खबरों को लाने वाले से नफरत है, लेकिन क्या यह '#' के लिए असफल नहीं है , जिसे ओपी कहता है कि यह सच है? क्या यह भी विफल नहीं होगा यदि हैशटैग में कोई अंडरस्कोर शामिल है, जो कि गलत हैं isalpha?
बाइकिंग बाइकिंग

@ साइकिलिंग माफ करना, मैं अब इसे ठीक करने की कोशिश करूंगा
डिग्निसिमस - स्पैमी

2
@ बाइकिंग लंबी पैदल यात्रा यह गैर-प्रतिस्पर्धा का क्या मतलब है। गैर-प्रतिस्पर्धा अवैध प्रस्तुत करने का बहाना नहीं है। सही प्रक्रिया उत्तर हटाना है, इसे ठीक करना है, फिर इसे हटाना है।
मेगो

1

पाइके, 19 बाइट्स

\#.^It,!It\_D-PRkq|

यहाँ यह कोशिश करो!

आज रात के लिए जल्दी ठीक करो


1
@kenorb ने इसे रीबूट किया, अगर किसी और मुद्दे पर मुझे पिंग किया
ब्लू

#123रिटर्न अभी भी कुछ नहीं, 0 नहीं लौटना चाहिए?
kenorb

1
कुछ नहीं एक बूलियन झूठी है
ब्लू

1

रूबी, 16 + 3 1 ( nध्वज) = 19 17 बाइट्स

0सत्य के रूप में और मिथ्या के रूप में उपयोग करता है nil

p~/^#(?!\d)\w*$/

इसे के रूप में चलाएँ ruby -ne 'p~/^#(?!\d)\w*$/'। प्रोग्राम चलाते समय बैश त्रुटि को ठीक करने के लिए @manatwork का धन्यवाद।


1
अपने आप को एक एहसान करो और हमेशा एक उद्धरण में कोड संलग्न करें। अन्यथा शेल सभी प्रकार के विस्तार का प्रयास करेगा (या इससे भी बदतर, सफलतापूर्वक प्रदर्शन)। (वर्तमान मुद्दे के बारे में !, मैन बैश में इवेंट
डिजाइनर्स देखें

1

मानक एमएल , 121 118 107 बाइट्स

(fn#"#"::a=>(fn x::r=>x> #"@"andalso List.all(fn#"_"=>1=1|c=>Char.isAlphaNum c)a|e=>1=1)a|e=>1=0)o explode;

इसे ऑनलाइन आज़माएं! रेगेक्स का उपयोग किए बिना कार्यात्मक समाधान। एक अनाम फ़ंक्शन की घोषणा करता है जो निहित परिणाम पहचानकर्ता के लिए बंधन है it

> val it = fn : string -> bool    
- it "#valid_hash";
> val it = true : bool

4
isAlphaNum$orelseबल्कि वह धमकी दे रहा है ...
बिल्ली

@ यह एकमात्र ऐसी सकारात्मक बात हो सकती है जो इस तरह के क्रियात्मक बूलियन ऑपरेटरों के बारे में कह सकती है orelseऔर andalso
लकोनी

2
यह पसंद है AlphaNum, orelse!! ( orelse what?)
बिल्ली

हो सकता है कि एक व्यक्ति o explodeअंत में काफी धमकी दे सकता है ...
लकोनी

1
एसएमएल काफी डरावना लगता है, मुझे नहीं लगता कि मैं उस पूरे दिन को संभाल सकता था: c
बिल्ली

1

एक्सेल VBA, 54 बाइट्स

अनाम VBE तत्काल विंडो फ़ंक्शन जो सेल से इनपुट लेता है [A1], जाँचता है कि क्या सेल का मान Likeपैटर्न से मेल खाता है , और आउटपुट BooleanVBE विंडो के अनुसार है

?Not[Left(A1,2)]Like"[#]#"And[A1]Like"[#][_a-zA-z0-9]*



0

लुआ, 39 बाइट्स

print(arg[1]:match("^#[%a_][%a_%d]*$"))

मैच के विवरण का सीधा मुकाबला। आउटपुट nilहैशटैग नहीं तो हैशटैग, आउटपुट हैशटैग हैशटैग वापस अन्यथा।

findयदि दो मानों की सूची (जो सत्य है) के आउटपुट को तोड़कर नियमों का उल्लंघन नहीं करता है, तो एक और बाइट के लिए छोटा किया जा सकता है।


मुझे लगता है कि यह #अपने आप से मेल नहीं खाएगा ।
मार्टिन एंडर

@MartinEnder, बिल्कुल। यह नहीं करना चाहिए कोई भी शीर्ष उत्तर ऐसा नहीं करता है। इसके अलावा codegolf.stackexchange.com/questions/85619/hashtag-or-not/…
V. Volkov

चाहे #ट्विटर पर हैशटैग है या फेसबुक इस चुनौती के लिए अप्रासंगिक है। इस तथ्य पर विनिर्देश बहुत स्पष्ट है कि #इस चुनौती के उद्देश्यों के लिए एक हैशटैग माना जाना चाहिए। और जब तक मैंने सभी उत्तरों की जाँच नहीं कर ली, सब मैंने चेक किया #हैशटैग के रूप में स्वीकार करते हैं , इसलिए मुझे यकीन नहीं है कि आप किस शीर्ष उत्तर का उल्लेख कर रहे हैं।
मार्टिन एंडर

0

क्लोजर, 130 135 132 बाइट्स

  • +5 बाइट्स एक NPE से निपटने के लिए जो तब होता है जब स्ट्रिंग में केवल एक हैशटैग होता है।

  • -2 बाइट्स का उपयोग करके Character/isLetterOrDigit

(fn[s](let[[h & r]s n(map int r)](and(= h\#)(not(<= 48(or(first n)0)57))(every? #(or(Character/isLetterOrDigit^long %)(= 95 %))n))))

Ungolfed:

(defn hashtag? [s]
  (let [[h & r] s
        codes (map int r)]
    (and (= h \#)
         (not (<= 48 (or (first codes) 0) 57))
         (every?
           #(or (Character/isLetterOrDigit ^long %)
                (= 95 %))
           codes))))

वूप्स, यह वास्तव में "#" के लिए एक NPE देता है। मुझे एक सेकंड दे।
कारजेनिकेट

0

जावा 8, 57 54 28 बाइट्स

s->s.matches("#(?!\\d)\\w*")

पोर्ट ऑफ मार्टिन एंडर के रेटिना का जवाब कुछ बाइट्स बचाने और टेस्ट किए गए मामलों को जोड़ने के लिए है।
ऐसा नहीं है कि String#matchesहमेशा पूरे स्ट्रिंग से मेल खाता है, इसलिए इसकी कोई आवश्यकता नहीं है ^...$

इसे यहाँ आज़माएँ।

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