क्या यह लिपोग्राम है?


52

एक लिपोग्राम शब्दों का एक ब्लॉक है जो एक विशेष प्रतीक को छोड़ देता है। अभी, मैं 26 के हमारे पांचवें प्रतीक से बच रहा हूं जो आमतौर पर दिखाते हैं। आपको अब तक पता होना चाहिए कि मैं क्या छोड़ रहा हूं। यदि नहीं, तो "लिपोग्राम" देखें और आपको पता चल जाएगा।

आपका कार्य

एक चार्जर के साथ, एक रिक्त, और एक निम्न स्ट्रिंग (रिक्तता इस में दिखाई दे सकती है; इनपुट में केवल ASCII 32-126 वर्णों के साथ), आउटपुट झूठा अगर यह चार इनपुट स्ट्रिंग में है, तो सत्य नहीं। यह चर जिसे आप देखना चाहते हैं वह हमेशा दो स्पैन में फिट होगा: "ए" से "जेड" या "ए" से "जेड" (एएससीआईआई 65-90, 97-122)। राजधानियों और गैर-राजधानियों में अंतर न करें। इसके अलावा, रिक्त स्थान या विराम चिह्न के बारे में चिंता न करें। दोनों कार्यक्रम और कार्य संतुष्ट करते हैं। इसके अलावा, आप प्रोग्राम या फ़ंक्शंस के लिए इनपुट चार और स्ट्रिंग को दो args में विभाजित कर सकते हैं, और पहले arg के रूप में स्ट्रिंग ठीक है।

रेखांकन

Truthy

e This is a lipogram.
a You need to consider other letters too.
E Capitals also count.

Falsy

e This sentence is not a lipogram (for e).
t This particular letter is surprisingly hard.
A You don't need to care about any non-alphabetic symbols.

गैर लिपोग्राम संस्करण

एक लिपोग्राम शब्दों की एक श्रृंखला है जो एक पत्र को छोड़ देता है। मैंने ऊपर "ई" अक्षर छोड़ दिया।

आपका काम एक चरित्र और एक स्ट्रिंग (जिसमें रिक्त स्थान शामिल हो सकता है) को इनपुट के रूप में लेना है, एक स्थान या न्यूलाइन द्वारा अलग किया गया है, और यदि चरित्र स्ट्रिंग में है, तो आउटपुट झूठा है, और अन्यथा सत्य है। आप मान सकते हैं कि स्ट्रिंग केवल मुद्रण योग्य ASCII वर्ण (चार कोड 32-126) से बना है। चरित्र हमेशा अंग्रेजी वर्णमाला में होगा, और लोअरकेस और अपरकेस के बीच कोई अंतर नहीं है। चरित्र एक स्थान या प्रतीक नहीं होगा। आप एक कार्यक्रम या एक समारोह लिख सकते हैं। या तो, आप अलग-अलग तर्क के रूप में चरित्र और स्ट्रिंग ले सकते हैं, और स्ट्रिंग पहले आ सकती है।


पूर्ण कार्यक्रमों के लिए मैं अलग-अलग लाइनों के रूप में इनपुट ले सकता हूं?
ब्लू

@ मुंडीफ़िश: हाँ।
एल'एंडिया स्ट्रैटन

... और स्ट्रिंग के रूप में पहली arg ठीक है।
edc65

@ edc65: ओह, मुझे वह बेहतर लगी।
एल'एंडिया स्ट्रैटन

1
आपको कोशिश करनी चाहिए "और एक स्ट्रिंग के रूप में आपका पहला arg ठीक है।" या समान कॉन्फ़िगरेशन।
mbomb007

जवाबों:



25

जावास्क्रिप्ट ईएस 6 34 26 23 बाइट्स

x=>!/^(.).*\1/i.test(x)

शेव्ड 8 बाइट्स धन्यवाद @ मार्टिनबटनर


9
वाह, मुझे नहीं पता था कि /iप्रभावित \1!
नील

18

05AB1E , 7 6 4 3 बाइट्स

कोड:

l`-

स्पष्टीकरण:

l     # Convert both elements to lowercase
 `    # Flatten the array
  -   # Loop over the second line of text and substract each char from the first character
        For example: "abcde""ba"- would result in "cde"

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

सत्य तब होता है जब वर्तमान अक्षर आउटपुट होता है। मिथ्या तब है जब कुछ भी आउटपुट नहीं किया जाता है।


तो -प्रभावी रूप से एक पूरक ऑपरेशन करता है ?
२०१२ आर्कम्पियन २३'१६

@ 2012 आर्कम्पियन हाँ, यह सही है। लेकिन केवल तब जब दोनों मान पूर्णांक नहीं होते हैं।
अदनान

14

टीस्क्रिप्ट, 5 3 बाइट्स

AµN

अहा \ _ /! मैं निहित इनपुट के बारे में भूल गया! TeaScript शुरुआत में स्वचालित रूप से x.(इनपुट) सम्मिलित करेगा । मैं तब जांच कर सकता हूं कि इसमें अन्य इनपुट (चर में µ) और ऐसा नहीं है ( N)। मुझे लगता है कि TeaScript का सबसे अच्छा फायदा यहां इसका निहितार्थ है

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

व्याख्या

  A µ  N
x.A(y).N  // At compile time

x.A // input, has...
(y) // second input
N   // Logical NOT

वाह। बहुत में निर्मित। यह मुझे याद दिलाता है, जाप में यह एक ही अंतर्निहित है ... एक और दो बाइट्स काटता है :)
ETHproductions

12

बैश, 16 11 बाइट्स

grep -iv $1

-iकेस-असंवेदनशील ध्वज है, -vinverts (एक गैर-मिलान के लिए जांच)।

चरित्र को कमांड लाइन तर्क और एसटीडीआईएन पर परीक्षण स्ट्रिंग के रूप में प्रदान किया जाना चाहिए।

@ DigitalTrauma की मदद से 5 बाइट्स घटाए !

नमूना चलता है:

llama@llama:~$ echo 'This is a lipogram' | ./lipogram.sh e
This is a lipogram.
llama@llama:~$ echo 'This sentence is not a lipogram (for e).' | ./lipogram.sh e

STDIN से वाक्य क्यों नहीं पढ़ा गया? grep -iv $1। मुझे एसटीडीआईएन और कमांड-लाइन आर्गन्स को इनपुट विधियों के साथ मिलाने में कुछ भी गलत नहीं दिखता है - मैंने इसे पहले किया था - लेकिन शायद एक मेटा मिसाल है जो मुझे याद है ...
डिजिटल ट्रॉमा

@DigitalTrauma मैंने उस पर विचार किया, लेकिन लगा कि यह थोड़ा स्केच होगा। शायद मेटा पर चर्चा करने के लिए एक विषय।
दरवाज़े


अच्छा लगता है @ डेनिस!
डिजिटल ट्रामा

1
क्या हमें ^Dइस उत्तर पर टिप्पणी करने के लिए कोई और उपयोगकर्ता मिल सकता है ? @Downgoat - क्या तुम वहाँ हो? ;-)
डिजिटल ट्रामा

12

जाप, 12 6 4 बाइट्स

!VoU

इसे ऑनलाइन टेस्ट करें!

@ डाउनगेट के टीस्क्रिप्ट उत्तर ने मुझे याद दिलाया कि जाप में बिलकुल एक जैसा है, अंतिम दो बाइट्स को काट देता है।

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

       // Implicit: U = input char, V = input string
VoU    // Keep only the chars in V that are equal to U, ignoring case.
!      // Take logical NOT. Returns true if no matches were found, false otherwise.

@ C @O'Bʀɪᴇɴ एक अंतर्निहित धन्यवाद के बारे में मैं भूल गया था, यह अब और भी छोटा है :)
ETHproductions

6
उम इंतजार नहीं है कि बहुत कम है
कॉनर ओ'ब्रायन


9

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

(c,s)=>!RegExp(c,'i').test(s)

4
आप c=>s=>!RegExp(c,"i").test(s)एक बाइट को बचाने के रूप में उत्तर को करी कर सकते हैं ।
कॉनर ओ'ब्रायन

c=>s=>!s.match(c,'i')है 21. :)
20

@ETHproductions matchकेवल एक तर्क लेता है। दूसरा तर्क फ़ायरफ़ॉक्स 39 या बाद में कंसोल चेतावनी को लॉग करता है, और फ़ायरफ़ॉक्स 47 में बिल्कुल भी काम नहीं करेगा।
नील

@ नील मैं फ़ायरफ़ॉक्स 44 का उपयोग कर रहा हूं, और यह पूरी तरह से ठीक काम करता है।
ETHproductions

@ETHproductions ज़रूर, लेकिन मेरे पास यह विश्वास करने का कोई कारण नहीं है कि यह अन्य ब्राउज़रों में काम करता है, और यह जल्द ही फ़ायरफ़ॉक्स में काम करना भी बंद कर देगा।
नील

7

अजगर 3, 36

मामले को नजरअंदाज करना आश्चर्यजनक रूप से महंगा है।

lambda a,b:a.lower()not in b.lower()

तर्क (चार, स्ट्रिंग) के रूप में लेता है



6

ओ, 8 बाइट्स

{_.@_-=}

एक अनाम फ़ंक्शन जो एक चरित्र और एक स्ट्रिंग लेता है।

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

व्याख्या

{_.@_-=}

{      }
 _        Lowercase string
  .       Duplicate
   @      Rotate stack
    _     Lowercase character
     -    Remove all instances of the character
      =   Compare to original

यह एक फ़ंक्शन होने की आवश्यकता क्यों है? सिर्फ एक कार्यक्रम ही क्यों न हो?
चरण

@ मुझे पता नहीं चल सका कि चार का विभाजन क्या था। किसी भी दर पर, मुझे पूरा यकीन है कि यह एक फ़ंक्शन वैसे भी कम है।
एक स्पेगेटो

6

पर्ल, 11 + 1 = 12 बाइट्स

$_=lc!~lc<>

-pस्विच की आवश्यकता है और इनपुट के रूप में लेता है$string\n$letter

$ perl -pe'$_=lc!~lc<>' <<< $'this is a lipogram\ne'
1

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

            # -p auto reads input into $_ and auto prints at the end
   lc       # lowercase $_
     !~     # Check against regex
       lc<> # Read next line and lowercase it. '=~' will expect the rValue to be
            # a regex and therefore the result from 'lc<>' will be treated as such
$_=         # Assign result ('1' or '') to $_ which will be printed

आपको अपना शेल निर्दिष्ट करना चाहिए। मेरे लिए, उबंटू पर बैश करें, यह आपके द्वारा दिए गए टेम्प्लेट के बाद इनपुट से कोई फर्क नहीं पड़ता। (मुझे पता नहीं क्यों, लेकिन, फिर भी, मैं इससे अपरिचित हूं <<<।) (और सामान्य STDIN (नहीं <<<) का उपयोग करते हुए , मुझे 1 मिलता है जब तक कि पत्र स्ट्रिंग में अंतिम वर्ण नहीं है, क्योंकि आप पत्र को नहीं काटते हैं ।)
msh210

@ msh210 आप printf "this is a lipogram\ne\n" | perl -pe'$_=lc!~lc<>'इसके बजाय उपयोग कर सकते हैं । <<< बैश वाक्य रचना है।
andlrc 21

@ msh210 स्टड <<<पास करने का एक और तरीका है।
andlrc

5

जावा, 63 बाइट्स।

boolean f(String s,char c){return!s.matches("(?i:.*"+c+".*)");}

आप एक (s,c)->!s.matches("(?i:.*"+c+".*)")
लंबोदर

1
यह एक उचित तरीका नहीं होगा, हालांकि, आपको कहीं Stringऔर charलगाना होगा।
शुकी


5

गंभीरता से, 6 बाइट्स

,ù,ùíu

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

के रूप में इनपुट लेता है 'string'\n'char'

स्पष्टीकरण:

,ù,ùíu
,ù      get string (lowercase)
  ,ù    get char (lowercase)
    íu  1-based index (0 if not found)

,ù,ùìuYकाम की तरह कुछ नहीं होगा ? (यह माना जाता है कि मैं ऐसा करता हूं जो indexOf करता है, लेकिन मुझे याद नहीं है कि कौन सा ऐसा करता है)
क्विंटोपिया

5

जूलिया 0.3, 22 20 बाइट्स

c%s=c&95∉[s...]&95

uppercaseएक लंबा शब्द है।

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

c%s=c&95∉[s...]&95

c%s=                Redefine the binary operator % so it takes a character c and
                    a string s and...
     c&95                Compute lo bitwise AND of c and 95.
                         This casts the character c to uppercase.
          [s...]         Yield the list of the characters of the string s.
                &95      Compute lo bitwise AND of each chararacter and 95.
                         This casts the characters of s to uppercase.
         ∉               Return a Boolean, signaling non-membership.

4

रेटिना, ११

iA`^(.).*\1

मुझे यकीन नहीं है कि रेटिना में सच्चाई / झूठ के रूप में क्या मायने रखता है, यह पंक्ति को प्रतिध्वनित करेगा यदि यह दिए गए वर्ण के लिए एक लिपोग्राम है, और यह खाली स्ट्रिंग वापस करेगा यदि यह नहीं है।

यह मल्टीलाइन इनपुट के लिए भी काम करेगा।

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


एक खाली स्ट्रिंग मिथ्या है, ताकि मायने रखता है।
एल'एंडिया स्ट्रैटन



4

जेली, 8 बाइट्स

ḢO^O&95P

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

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

ḢO^O&95P  Main link. Input: S (string)

Ḣ         Pop the first character of S.
 O        Ordinal; compute its code point.
  ^O      XOR it with the code points of the remaining characters.
    &95   AND each result with 95.
       P  Take the product of the results.

रुको, जेली जीत नहीं है? इसे और नीचे ले जाने का एक तरीका होना चाहिए!
जेनेरिक यूजर

नहीं जब तार जुड़े हैं ...
डेनिस

इसे ठीक किया जाना चाहिए।
कैलकुलेटर



4

पायथन, 34 बाइट्स

lambda c,s:c not in s+s.swapcase()

cस्ट्रिंग में चरित्र की जाँच हो रही है s, मामले की अदला-बदली की प्रतिलिपि बनाकर मामले को अनदेखा कर रहा sहै s। नकार के साथ किया जाता है not, जो लंबा दिखता है, लेकिन मैं बेहतर नहीं देखता हूं। यह समान लंबाई है:

lambda c,s:(c in s+s.swapcase())<1

आप पैरेंस को छोड़ नहीं सकते हैं या फिर पाइथन अभिव्यक्ति को एक जंजीर के रूप में तीन-मूल्य की असमानता के रूप में बदल देगा _ in _ < _

पायथन 3.5 को सेट रूपांतरणों के माध्यम से 33 बाइट्स की अनुमति देनी चाहिए, हालांकि मैं अब इसका परीक्षण नहीं कर सकता।

lambda c,s:{*c}-{*s+s.swapcase()}

4

Pyke, 7 बाइट्स

Dl3+R{!

स्पष्टीकरण:

D       -     eval_or_not(input()).lower()
 l3     -    ^.swapcase()
   +    -   ^+^
    R   -  rotate 2
     {  -  ^ in ^
      ! - not ^

3

जावास्क्रिप्ट ईएस 6, 41 40 बाइट्स

x=>!~x.slice(2).search(RegExp(x[0],"i"))

पूरे स्ट्रिंग को एक तर्क के रूप में लेता है। मैं दो अलग-अलग तर्कों को स्वीकार करके बाइट्स नहीं बचा सकता क्योंकि तब मेरा उत्तर अन्य ES6 उत्तर में बदल जाएगा :(


मैं इस बार, ES6 जीत गया। ;) आपका अनाम फ़ंक्शन सिंटैक्स मेरे लिए कोई मैच नहीं है not in
मॉर्गन थ्राप

@ मॉर्गनट्रैप गैह, फिर से नाकाम!
कॉनर ओ'ब्रायन

यह ठीक है मुझे यह मिल गया है , आप @MorganThrapp को स्थानांतरित करें।
शॉन एच

3

आर, 26 बाइट्स

 function(x,y)!grepl(y,x,T)

x स्ट्रिंग है, y अक्षर है, grepl में कॉल में T इसे असंवेदनशील बनाता है।



2

रूबी, 17 बाइट्स

->c,s{/#{c}/i!~s}
->c,s{  # lambda with two arguments
/#{c}/  # turn the input character into a regexp w/ interpolation
i       # case insensitive
!~      # does not match
s       # input string
}

2

बैच, 53 बाइट्स

@set s=%2
@call set t=%%s:%1=%%
@if %s%==%t% echo 1

इनपुट को दो कमांड-लाइन तर्क के रूप में स्वीकार करता है। (यदि आवश्यक हो तो दूसरे तर्क को उद्धृत करें।) सफलता पर आउटपुट 1, दूसरा तर्क में असंवेदनशील होने पर कुछ नहीं।


2

गणितज्ञ, 33 32 बाइट्स

StringFreeQ[##,IgnoreCase->1>0]&

मुझे यह पसंद है जब ## का उपयोग किया जा सकता है। इनपुट स्ट्रिंग है, तो चार।

या, एक संवेदनशील मामला: (11 बाइट्स :)

StringFreeQ

हां, सिर्फ एक बिलिन।

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