निर्धारित करें कि क्या कोई संख्या 13 से विभाज्य है (13 का उपयोग किए बिना) [बंद]


31

आपकी चुनौती, क्या आपको इसे स्वीकार करना चाहिए, एक फ़ंक्शन या एक प्रोग्राम बनाना है जो "हां" को आउटपुट करता है यदि किसी दिए गए नंबर को 13 से विभाज्य है और यदि नहीं है तो "नहीं" को आउटपुट करता है।

नियम:
- आपको कहीं भी संख्या 13 का उपयोग करने की अनुमति नहीं है।
- 13 के लिए कोई कॉप-आउट पर्यायवाची नहीं (जैसे 15 - 2 का उपयोग करके)।
- बोनस अंक को मापांक का उपयोग नहीं करने, विभाजन का उपयोग नहीं करने के लिए अतिरिक्त बोनस से सम्मानित किया जाएगा।

स्कोरिंग:
- आपका स्कोर आपके कोड में बाइट्स की संख्या होगी (व्हाट्सएप को शामिल नहीं किया गया) आपके बोनस से गुणा किया जाएगा।
- यदि आपने मापांक का उपयोग नहीं किया है, तो वह बोनस 0.90 है; यदि आपने विभाजन का उपयोग नहीं किया है, तो वह बोनस 0.90 है।
- यदि आपने या तो उपयोग नहीं किया है, तो वह बोनस 0.80 है।
- आपका स्कोर जितना कम होगा, उतना बेहतर होगा।

इनपुट हमेशा 0 से अधिक और 2 ^ 32 से कम पूर्णांक होगा।
आपका आउटपुट एक साधारण "हां" या "नहीं" होना चाहिए।

स्पष्टता:
- उपयोग के लिए संख्या 13 उत्पन्न करने के कुछ राउंडअबाउट विधि का उपयोग करना स्वीकार्य है। सरल अंकगणित समानार्थक शब्द (10 + 3) की अनुमति नहीं है।
- फ़ंक्शन या प्रोग्राम का शाब्दिक रूप से आउटपुट "हां" या "नहीं" होना चाहिए , अगर दिए गए नंबर 13. से विभाज्य हैं
- हमेशा की तरह, चतुर समाधान की सिफारिश की जाती है, लेकिन आवश्यक नहीं है।


क्या 'सत्य' या 'असत्य' एक मान्य आउटपुट है?
ब्लेज़र

8
जावास्क्रिप्ट (27 वर्ण) function f(n){return "yes"}। यह सभी संख्याओं के लिए 'हां'
लौटाएगा

5
"(व्हाट्सएप शामिल नहीं है)" हमेशा इन दो स्थितियों में से एक में हुई है: एक कार्यक्रम व्हॉट्सएप में अपनी सामग्री को एन्कोड करता है, या व्हॉट्सएप (प्रोग्रामिंग भाषा) में लिखित एक कार्यक्रम ।
JiminP

4
Using some roundabout method of generating the number 13 for use is acceptable.आप कैसे निर्धारित करते हैं कि "गोल चक्कर पर्याप्त" क्या है?
क्रंचर

3
@Rusher ईमानदार होने के लिए, मैंने ध्यान नहीं दिया कि यह 2 साल का था, यह अभी हाल ही में सक्रिय हुआ। आपके सुझाव के अनुसार, मैं नॉन-ओपी के रूप में निंजा-परिवर्तन नहीं करूंगा, जिसका उत्तर दो पृष्ठों के साथ होगा ..
क्रंचर

जवाबों:



19

ASM - WinXP कमांड शेल पर 16 बिट x86

निष्पादन योग्य - 55 बाइट्स * 0.8 = 44

स्रोत - 288 वर्ण * 0.8 = 230.4

13 नंबर इकट्ठे .com फ़ाइल में भी नहीं दिखता है।

A86 का उपयोग करके इकट्ठा करें।

    mov si,82h
    xor ax,ax
    xor cx,cx
a:  imul cx,10
    add cx,ax
    lodsb
    sub al,48
    jnc a
    inc cx
h:  mov dl,a and 255
c:  loop g
    sub dl,a and 255
    jz e
    mov dl,4
e:  add dl,k and 255
    mov dh,1
    mov ah,9
    int 21h
    ret
g:  inc dl
    cmp dl,c and 255
    jne c
    jmp h
k:  db 'yes$no$'

मैं समझता हूं कि यह समाधान चतुर है, लेकिन जैसा कि यह कोड-गोल्फ है, क्या हमें चतुर समाधानों के बजाय सबसे छोटे समाधानों को नहीं अपनाना चाहिए?
मेलमोकब

21
@ मैमेलमोकब: मैंने मेटा पर जो पढ़ा है, उससे कुछ लोगों को लगता है कि मतदान एक चतुर / असामान्य समाधान के लिए प्रशंसा का प्रतीक है। यदि हम केवल सबसे कम उत्तर पर मतदान करते हैं, तो मतदान करने का कोई मतलब नहीं होगा। मुझे लगता है कि 'कुद' सबसे छोटे कोड के अंतिम कोड के रूप में जाता है। तो फिर, गोल्फ में एक सरल समाधान हमेशा सी में एक बहुत ही चतुर समाधान से छोटा होगा - तो वोटों के हकदार कौन है? अंत में, वोट महत्वपूर्ण नहीं हैं, यह मज़ेदार है।
स्किज़

1
शासन: The input will always be an integer greater than 0 and less than 2^32। आप 16bit
Fabricio

@ फ़ेब्रियो: सभी 16 बिट संख्या 2 ^ 32 से कम हैं। :-)
स्काइज़

योग्य .. तुम किसी तरह सही हो। लेकिन आप 2 ^ 32-1 = पी
फैब्रियो

17

पायथन 3.x: 54 * 0.8 = 43.2

यह 13 की लंबाई वाला एक कॉप-आउट हो सकता है, लेकिन यहां यह दिया गया है:

print('no' if any((' ' * int(input())).split('             ')) else 'yes')

यह n रिक्त स्थान की एक स्ट्रिंग का निर्माण करके काम करता है (सीमांक का विकल्प मनमाना है, लेकिन मैंने स्पष्ट कारणों के लिए स्थान चुना है), और 13-अंतरिक्ष सबस्ट्रिंग को अलग कर रहा है जब तक कि आप स्ट्रिंग के साथ n% 13 रिक्त स्थान नहीं छोड़ते।


4
+1। मुझे 13 चरित्र वाले व्हाट्सएप द्वारा विभाजन पसंद है। इसे पायथन 2 में ले जाना और मेरे उत्तर से एक तकनीक का उपयोग करके इसे 35.2 के स्कोर तक ले जाना है:print 'yneos'[any((' ' * input()).split(' '))::2]
स्टीवन रूंबल्स्की

मैं कहना है के बारे में था: आप बदल सकते ' 'के साथ ' '*6+' 'करने के लिए सेव 5 वर्ण - लेकिन तब मैंने पाया कि रिक्त स्थान सब पर भरोसा नहीं था ...
kratenko

15

GolfScript, 32 वर्ण

~){.14base{+}*.@<}do('no''yes'if

मैं हर किसी से अलग कुछ करने की कोशिश करना चाहता था, इसलिए मेरा समाधान संख्या के आधार 14 डिजिटल रूट की गणना करता है , बार-बार संख्या को आधार 14 में परिवर्तित करके और अंकों को समेटता है जब तक कि परिणाम अब छोटा नहीं हो जाता। यह मूल रूप से शेष मोडुलो 13 की गणना के रूप में समान है, सिवाय इसके कि परिणाम 0 से 12 के बजाय 1 से 13 की सीमा में होगा।

चेक करने के बाद कि क्या डिजिटल रूट 13 के बराबर है 13 नंबर का उपयोग किए बिना मुश्किल होगा (या 12 + 1 की तरह कुछ लंगड़ा वर्कअराउंड), मैं वास्तव में क्या कर रहा हूं मैं लूप से पहले एक के बाद एक इनपुट नंबर बढ़ाता हूं और बाद में परिणाम घटाता हूं। इस तरह, 13 से विभाज्य संख्याओं का परिणाम वास्तव में शून्य होगा, जिसकी जांच करना बहुत आसान है।

यहाँ कार्यक्रम का एक टिप्पणी संस्करण है:

~              # evaluate the input, turning it from a string to a number
)              # increment by one
{              # start of do-loop 
    .          # make a copy of the previous number, so we can tell when we're done
    14 base    # convert the number to base 14
    { + } *    # sum the digits
    . @ <      # check if the new number is less than the previous number...
} do           # ...and repeat the loop if so
(              # decrement the result by one
'no' 'yes' if  # output 'no' if the result is non-zero, 'yes' if it's zero

यह प्रोग्राम वास्तव में किसी भी गैर-नकारात्मक पूर्णांक इनपुट को संभालता है, क्योंकि गोल्फस्क्रिप्ट बंगलम अंकगणित का उपयोग करता है। बेशक, बहुत बड़े इनपुट अत्यधिक समय और / या मेमोरी का उपभोग कर सकते हैं।

कोड सीधे तौर पर मॉडुलोस या डिवीजन का उपयोग नहीं करता है, हालांकि यह गोल्फस्पिल्ट के बेस कन्वर्जन ऑपरेटर का उपयोग करता है, जो लगभग निश्चित रूप से कुछ डिवीजन और शेष-आंतरिक रूप से लेता है। मैं यह तय करने के लिए गीगावाट के लिए छोड़ दूंगा कि क्या यह मुझे बोनस के लिए योग्य बनाता है या नहीं।


यदि केवल हर कोई अपने गोल्फ कोड को इतनी अच्छी तरह से टिप्पणी करेगा। कुडोस
skibrianski

13

सी, 68 * 0.8 = 54.4

24 उत्तरों के बाद, कोई भी इस स्पष्ट एल्गोरिदम के साथ अभी तक नहीं आया था:

f(x){puts("no\0yes"+3*((x*330382100LL>>32)-(~-x*330382100LL>>32)));}

मैं किसी के लिए एक पूर्णांक पारस्परिक रूप से करने के लिए इंतजार कर रहा था। न केवल यह चुनौती का एक सुरुचिपूर्ण समाधान है, बल्कि एक प्रदर्शन अनुकूलन के रूप में यह अपने आप में एक उपयोगी तकनीक है।
सर_गैसालॉट

क्या यह अभी भी वैध है, भले ही यह बहुत ही गैर-मानक हो?
पुराना

1
@ डॉल्ड्रिन, मुझे प्रश्न में मानक अनुपालन की कोई आवश्यकता नहीं है। सामान्य तौर पर, सख्त मानक अनुपालन गंभीर रूप से कोड गोल्फ में कष्टप्रद होता है।
बदसूरत

क्या आप बता सकते हैं कि यह क्यों काम करता है?
वेदाद शाकिब

@ user2767189, यह "पारस्परिक गुणा" नामक एक तकनीक है - मूल रूप से गुणा द्वारा एक्स का उपयोग करके विभाजन को लागू करने का एक तरीका है (2 ^ K / X)। इस मामले में एक्स 13 है, और 330382100 * 13 लगभग 2 ^ 32 है।
ugoren

11

जावास्क्रिप्ट (27.9)

वर्तमान संस्करण (31 अक्षर * 0.90 बोनस = 27.9)।

alert(prompt()*2%26?'no':'yes')

डेमो: http://jsfiddle.net/9GQ9m/2/

संपादित करें 1: मापांक का कम उपयोग करके दूसरे बोनस को काफी कम करें और forलूप से बचें । इसके अलावा ~~दो वर्णों को समाप्त करें और सहेजें (धन्यवाद @copy)।


पुराना संस्करण (48 अक्षर * 0.80 बोनस = 38.4)

for(n=~~prompt()*2;n-=26>0;);alert(n?'no':'yes')​

सब कुछ दो से गुणा करें और इसके बजाय 26 का उपयोग करें ... जो नहीं आ रहा है।
श्री लामा

आप ~~मान्य मान्य इनपुट को छोड़ सकते हैं ; अन्यथा prompt()<<1भी काम करेगा।
कॉपी करें

हालाँकि मैं यह स्वीकार करूँगा कि तकनीकी रूप से यह पद्धति का उपयोग करते हुए 2 ^ 32 की सीमा तक नहीं पहुँचती है ..
mellamokb

1
वास्तव में यह 2 ^ 32 से परे काम करता है क्योंकि आपने किसी भी बिटकॉइन ऑपरेटरों को अब गिरा दिया है।
कॉपी

3
यह अभी भी 13 द्वारा विभाज्यता निर्धारित करने के लिए एक अंकगणितीय क्विक का उपयोग कर रहा है, और एक नियम कह रहा था कि कोई अंकगणित पुलिस वाला नहीं है ...
WallyWest

7

BrainFuck

स्कोर: 200 * 0.8 = 160

>++++++[>++++++++<-]>>,[<[-<+>>-<]<[->+<]>>>[->++++++++++<]>[-<+>]<<[->+<],]++++
+++++++++>[>+<-<-[>>>]>>[[-<<+>>]>>>]<<<<]>[<<<[-<++>]<++++++++++++++.+.>]<<[[-<
++++++<++++++++>>]<-----.<---.>------.>]

स्टड से पढ़ता है। शायद सबसे चतुर समाधान नहीं है, लेकिन बीएफ में काम करने वाली कोई भी चीज अच्छी है। हालांकि यह काफी कॉम्पैक्ट है।


यह कैसे काम करता है पर कोई स्पष्टीकरण? ऐसा लगता है कि डिफ़ॉल्ट ब्रेनफैक को पूर्ण 0.8 बोनस मिलेगा क्योंकि इसमें बस विभाजन या मापांक नहीं है।
श्री लामा

@ गीगावाट यह मापांक की गणना करता है।
कॉपी करें

1
ऐ, लेकिन मेरा क्या मतलब था कि यह मापांक ऑपरेटर का उपयोग नहीं करता है (क्योंकि इसमें एक नहीं है)। इसलिए इसका उपयोग न करने के लिए इसे हमेशा बोनस मिलेगा। इसके अलावा, अच्छा जैव चित्र।
श्री लामा

@ गीगावाट मैं आपसे असहमत नहीं था, बस आपके सवाल का जवाब दिया।
कॉपी करें

7

स्काला (38 * 0.9 = 34.2)

के समान 0xD(हेक्स) या 015(OCT)।

ASCII का मूल्य CR13 है।

def t(n:Int)=if(n%'\r'==0)"yes"else"no"

1
मैंने सोचा कि इससे पहले कि यह हो सकेगा जब तक मैंने किसी के साथ असमी मूल्यों का शोषण किया है।
श्री लामा

1
क्या आप अपनी पोस्ट में स्कोर जोड़ सकते हैं? 38 * 0.9 = 34.2 होना चाहिए।
मेलामोकब


5

अजगर:

f=lambda n:1==pow(8,n,79)

उदाहरण के लिए

[i for i in range(100) if f(i)]

देता है

[0, 13, 26, 39, 52, 65, 78, 91]

1
अब यह मुझे पसंद है। हालाँकि, चुनौती मानदंड के अनुसार हाँ / नहीं होने की आवश्यकता है, और आपको अपना स्कोर (25 * .08 = 20)
ब्लेज़र

f=lambda n:pow(8,n,79)-1 and "no" or "yes"इसे ठीक करता है,
बदसूरत

4

C, 54.4 == 68 * .8   80 * .8

char*f(c){char*s=" yes\0\rno";while(c&&*s++);return c>0?f(c-*s):++s;}

का अच्छा उपयोग \r- मैंने सोचा कि यह केवल विंडोज समर्थन के लिए अच्छा है। लेकिन क्यों करेगा c>0कब c?
बदसूरत

@ यूगोरेन: यह नहीं होगा, इसके बारे में सोचो।
चालू करना बंद कर दिया

तुम सही हो, मैं किसी तरह उलझन में पड़ गया। मैं 2 ^ 31 से ऊपर की संख्या के बारे में सोच रहा था, जहां >0कोई अच्छा नहीं है। लेकिन यह देखने के बजाय कि आपका कार्य उनका समर्थन नहीं करता है, मुझे लगा कि ==यह अच्छा है।
ugoren

4

ईसीएमएस्क्रिप्ट 6, 25 × 0.9 = 22.5

हाँ, यह 13 पाने का एक उबाऊ तरीका है।

n => n % '             '.length ? 'no' : 'yes'

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

1
नियमों का दुरुपयोग करने के लिए +1। अगर मैंने उनसे कहा, तो यह "रिमॉटेबल व्हॉट्सएप की गिनती नहीं" होगा। तो क्या कोई हमें 0 बाइट का घोल देने वाला है?
15

@ यूगोरेन विश दी
TuxCrafting

3

एपीएल ((21 - 1) × 0.8 = 16)

'yes' 'no'[1=⎕∨⌊⍟9*6]

⎕IODyalog APL में ठीक से काम करने के लिए इसे 0 पर सेट किया जाना चाहिए। 13 को उत्पन्न करने के लिए, हम 9 के 6 के घात ( ) के लिए प्राकृतिक लघुगणक ( ) का फर्श ( ) लेते हैं 9*6। उसके बाद, हम अपने इनपुट का जीसीडी ( ) और 13 पाते हैं, और हम तब परीक्षण करते हैं यदि वह बराबर होता है 1. इसका उपयोग [...]उत्तरों के वेक्टर को अनुक्रमित करने के लिए किया जाता है।

यदि कोई स्कोरिंग विनिर्देश में बाइट्स के उल्लेख के बारे में बालिग होना चाहता है , तो इसके लिए UTF-8 एनकोडेड संस्करण का स्कोर है (29 - 1) × 0.8 = 22.4। :)


1
मैं तो बाइट्स के बारे में पंडिताऊ होना चाहता हूँ।
स्टीवन रंबलस्की

1
Ohhhhhhhh स्नैप आप di- पूर्णांक
डिलन कवर

3

सी, 88

फाइबोनैचि चाल।

f(n){return n<2?n:f(n-1)+f(n-2);}main(x){printf("%s",x%f(7)?"No":"Yes",scanf("%d",&x));}

2
आप f (7) के माध्यम से 13 का उपयोग कर रहे हैं ... यह थोड़े से नियमों को थोड़ा
झुक रहा है

3

पर्ल - 44 × 0.8 = 35.2

#!perl -p
map$_+=4*chop,($_)x10;$_=chop^$_*3?'no':yes

एक बाइट के रूप में शेबंग की गिनती।

मुझे खेल में थोड़ी देर हो गई है, लेकिन मुझे लगा कि मैं एल्गोरिथ्म साझा करूंगा, क्योंकि इस बिंदु पर किसी अन्य पोस्ट ने इसका उपयोग नहीं किया है।

यह अवलोकन के तहत काम करता है कि यदि n 13 से विभाज्य है , तो 10 n / 10 ⌋ + n% 10 * 4 भी 13 से विभाज्य है । मान 13 , 26 और 39 स्वयं पर चक्र। 13 के सभी अन्य गुणकों अंततः लॉग 10 एन पुनरावृत्तियों से अधिक नहीं इन मूल्यों में से एक तक पहुंच जाएगा ।


अन्य मामलों में

माना जाता है, chopथोड़ा-बहुत पुलिस वाला है। आधार 10 प्रतिनिधित्व के साथ, यह बराबर हैdivmod । लेकिन एल्गोरिथ्म अन्य आधारों में अच्छी तरह से काम करता है, उदाहरण के लिए बेस 4, या 8।

उपरोक्त एल्गोरिथम का पायथन शैली छद्म कोड (बेस 10):

def div13(n):
    while n > 40:
        q, r = n // 10, n % 10
        n = q + 4*r
    return n in [13, 26, 39]

आधार 2 में:

def div13(n):
    while n > 40:
        q, r = n >> 1, n & 1
        n = q + 7*r
    return n in [13, 26, 39]

आधार 4 में:

def div13(n):
    while n > 40:
        q, r = n >> 2, n & 3
        n = q + 10*r
    return n in [13, 26, 39]

आधार 8 में:

def div13(n):
    while n > 40:
        q, r = n >> 3, n & 7
        n = q + 5*r
    return n in [13, 26, 39]

आदि 13 से छोटा कोई भी आधार समान रूप से अच्छी तरह से काम करता है।


2

जावास्क्रिप्ट: 59 * 0.8 = 47.2 (?)

बेला :

function r(n){
  for(c=0;n>c;n-=12,c++);
  return n==c?'yes':'no';
}

मेलमोकब के सुधार सहित (57 * 0.8 = 45.6):

function r(n){
  for(c=0;n>c;n-=12,c++);
  return n-c?'no':'yes'
}

1
return n-c?'no':'yes'दूसरे अर्धविराम को वापस करने और छोड़ने से आप दो वर्णों को बचा सकते हैं ।
मेलामोकब

@ ममलमोकब अच्छा कैच। संभवत: इसे रूबी में लिखकर या और अधिक कॉम्पैक्ट फ़ंक्शन परिभाषाओं की अनुमति देकर कुछ और सुधार किया जा सकता है।
सुप्र

promptइनपुट के लिए और alertआउटपुट के लिए उपयोग करने के लिए सीजी पर एक स्वीकृत मानक भी है , जो प्रोग्राम को इंटरैक्टिव बनाता है और कुछ चार्ट बचाता है।
मेलमोकब

2

पर्ल: (51-4 रिक्त स्थान) * 0.9 = 42.3

say+<>%(scalar reverse int 40*atan2 1,1)?'no':'yes'

40 * atan2 (1,1) -> 31.41592 (PI * 10)


2

पर्ल (19.8)

21 बाइट्स * ।9

say2*<>%26?"no":"yes"

नोट: मेरा पहला पर्ल प्रोग्राम कभी। कम्‍प्‍लीट टाइप टाइप गोल्‍फ के हिसाब से अच्‍छा है।


मैंने पाया है कि किसी भाषा के अपने ज्ञान को मापने का एक अच्छा तरीका यह है कि उसमें कोशिश करें और गोल्फ करें। आमतौर पर किनारे के मामलों को जानने की आवश्यकता होती है। इसके अलावा, आपका स्कोर वास्तव में 23 * 0.90 है (व्हाट्सएप की गिनती नहीं है)।
श्री लामा

सोचा मैंने व्हॉट्सएप का हिसाब कर लिया है। अभी तय किया है। यह बात बताने के लिए धन्यवाद।
स्टीवन रूंबल्स्की

वाह। पर्ल के लिए कोई प्यार नहीं। मैं यह भी पसंद नहीं कह सकता।
स्टीवन रंबलस्की

2

सी में (के एंड आर): 47 * 0.8 = 37.6

f(i){for(;i>0;i-=__LINE__);puts(i?"no":"yes");}

EDIT1: बाहरी कार्यों पर सभी निर्भरताएँ हटा दी गई हैं, जब तक आप इस पंक्ति को फ़ाइल की 13 वीं पंक्ति में रखते हैं, तब तक यह काम करेगी! :) यदि __LINE__कहने के द्वारा प्रतिस्थापित किया जाना ठीक है, 0xdतो आगे के 5 वर्णों को बचा सकते हैं (स्कोर: 33.6)


7
अगर यह 13 वीं पंक्ति में होना चाहिए, तो आपको अपने कोड में 12 नए अंक जोड़ने होंगे, और इसलिए, आपके स्कोर के लिए: यह 59 * 0.8 = 47.2 हो जाता है
Vereos


2

जावास्क्रिप्ट (व्हॉट्सएप के लिए 108 कम 0) => 108, x 0.8 (कोई मापांक, कोई विभाजन नहीं) = 86.4

b=b=>{a=z,a=a+"";return+a.slice(0,-1)+4*+a.slice(-1)};z=prompt();for(i=99;i--;)z=b();alert(b()-z?"no":"yes")

यह विधि निम्नलिखित एल्गोरिथ्म का उपयोग करती है: 1. अंतिम अंक लें, इसे चार से गुणा करें, इसे बाकी की छोटी संख्या में जोड़ें। 2. 99 पुनरावृत्तियों के लिए चरण 1 को दोहराएं ... 3. चरण 1 का उपयोग करते हुए एक बार और परीक्षण करें, यदि परिणामी संख्या स्वयं है, तो आपने 13 का एक गुण पाया है।

पिछले अद्यतन को हटा दिया गया है var, और घटाव-झूठी स्थिति का उपयोग करके अधिक वर्णों को हटाने के लिए चेतावनी पर तर्क को उलट दिया गया है।

तकनीकी रूप से, अंतिम परिणाम यह है कि आप अंततः दो अंकों की संख्या जैसे 13, 26, या 39 तक पहुंचेंगे, जो कि चरण 1 के माध्यम से चलने पर क्रमशः 13, 26 या 39 देगा। तो पुनरावृत्ति 100 के लिए परीक्षण एक ही होने की विभाज्यता की पुष्टि करेगा।


2

चेडर, 20 बाइट्स (नॉनकमेटिंग)

स्कोर 20 * 0.9 = 18 है

n->n*2%26?'no':'yes'

सीधा सा जवाब।


2

आम लिस्प (71 बाइट्स * 0.8) = 56.8

सरल पुनरावृत्ति, वास्तव में।

(defun w(x)(if(> x 14)(w(- x 13))(if(> 14 x 12)(print'yes)(print'no))))

Ungolfed:

(defun w (x)
  (if (> x 14)
      (w (- x 13))
      (if (> 14 x 12)
          (print 'yes)
          (print 'no))))

2

रूबी ( 50 48 * 0.9 = 43.2)

उपयोग करने का स्मार्ट तरीका eval

eval x="p gets.to_i*3%x.length == 0? 'yes':'no'"

1

डी 56 चार्ट .80 बोनस = 44.8

bool d(double i){
    return modf(i*0,0769230769,i)<1e-3;
}

यह 1/13 का उपयोग करने के साथ एक पुलिस-आउट हो सकता है और एक डबल किसी भी 32 बिट संख्या को बिल्कुल स्टोर कर सकता है

संपादित करें: यह 1/13 के साथ गुणा करके और भिन्नात्मक भाग की जांच करता है यदि यह 0 से भिन्न है (राउंडिंग त्रुटियों की अनुमति देता है) या दूसरे शब्दों में यह i / 13 के भिन्नात्मक भाग की जांच करता है


मापांक का उपयोग नहीं करता है?
ब्लेजर

@ ब्लेज़र वास्तव में यह पहली दलील के अंश का हिस्सा नहीं लेता है और दूसरे आर्ग में अभिन्न अंग को संग्रहीत करते हुए इसे वापस लौटाता है
शाफ़्ट फ्रीक

बस एक नोट: परिणाम (हाँ / नहीं) वास्तव में उत्पादन किया जाना है। इसके अलावा, मैं कुछ हद तक उत्सुक हूं कि यह समाधान कैसे काम करता है। एक स्पष्टीकरण बहुत सराहना की जाएगी!
श्री लामा

1

पायथन 2.7

(20 - 1 व्हाट्सएप) * 0.9 (कोई विभाजन नहीं) = 17.1

print input()%015==0

सही / गलत के बजाय हां / नहीं: 31 * 0.9 (कोई विभाजन नहीं) = 27.9

print'yneos'[input()%015!=0::2]

अजगर के intअन्य आधारों को स्ट्रिंग से आधार 10 पूर्णांक में बदलने के लिए लाभ उठाता है । आप दोनों संस्करणों में देख सकते हैं कि वे एक अलग (अभी तक समान वर्ण लंबाई) आधार का उपयोग करते हैं

संपादित करें: 1 char हां / नहीं संस्करण में सहेजें

edit2: एक और 2 चार्ट मुंडा!

edit3: टिप्पणियों के लिए फिर से धन्यवाद! आंतरिक अनुवाद के बजाय पायथन के बिल्टिन ऑक्टल अभ्यावेदन ( 015== 13...) का उपयोग करके और भी अधिक पात्रों का मुंडन किया गया


3
मैं अलग-अलग ठिकानों के साथ एक पुलिस-आउट देखता हूं
शाफ़्ट फ्रीक

बेस 9 में 14? मुझे वह आते हुए दिखना चाहिए था।
श्री लामा

1
print['no','yes'][input()%int('d',14)==0
स्टीवन रूंबलकी

जहाँ तक मैंने देखा, एक सिपाही बाहर की तरह कुछ होने के रूप में परिभाषित किया गया था 14-1या 26/2। मैंने सिर्फ 13 का प्रतिनिधित्व करने के लिए रचनात्मक स्वतंत्रता ली
ब्लेज़र

@StevenRumbalski 1 char बचाने के लिए धन्यवाद: P
ब्लेज़र

1

पर्ल, 95 * 0.8 = 76

$_=<>;
while($_>0){
$q=7*chop;
$d=3*($m=chop$q);
chop$d;
$_-=$d+$m}
if($_){print"no"}
else{print"yes"}

स्पष्टता के लिए लाइन ब्रेक जोड़े गए थे। मैं शायद इस उत्तर को बहुत छोटा बना सकता था, लेकिन मुझे लगता है कि यह उत्तर समस्या के करीब आने के एक अनोखे तरीके का प्रतिनिधित्व करता है।


1

पायथन - स्कोर 27.9

(31 अक्षर * 0.90) - छोटे कोड के लिए कुछ बोनस माफ करता है।

print'yneos'[2*input()%26>0::2]

पुराना संस्करण: (४ 0. अक्षर * ०.b०) - मेलमोकब के जावास्क्रिप्ट उत्तर का पूरा रिप-ऑफ, लेकिन पायथन में।

n=2*input()
while n>0:n-=26
print'yneos'[n<0::2]

पुराना संस्करण: (60 अक्षर * 0.80)

n=input()
while n>12:
 for _ in'x'*12+'!':n-=1
print'yneos'[n>0::2]

पुराने संस्करण: (105 अक्षर * 0.80)

n=abs(input())
while n>12:n=abs(sum(int(x)*y for x,y in zip(`n`[::-1],n*(1,-3,-4,-1,3,4))))
print'yneos'[n>0::2]

हम्म, यह एक निफ्टी विधि है। यह 1, -3, -4 पैटर्न जैसा कि मैंने विकिपीडिया पर देखा था। अभी भी इसे कोड में देखने के लिए अच्छा है।
श्री लामा

@ गीगावाट: यही वह जगह है जहाँ मुझे यह मिला। अन्य पैटर्न (1,10,9,12,3,4)1 चरित्र को बचाएंगे, लेकिन 13. से कम मान के लिए हल नहीं होंगे
स्टीवन रूम्बल्स्की

1

क्यू में:

d:{$[0=x mod "I"$((string 6h$"q")[1 2]);`yes;`no]}
50*.9=45

CodeGolf.SE में आपका स्वागत है। आपको अपना कोड एक कोडब्लॉक में रखना चाहिए, और आप किस बिंदु पर बैकटिक्स का उपयोग कर सकते हैं, जहां आपको बैकटिक्स का मतलब है क्योंकि अब उनका प्रारूप प्रारूप नहीं है। मैंने आपके लिए पहला भाग किया है, कृपया इसे देखें और मैंने जो भी इरेटा पेश किया है उसे ठीक करें।
dmckee

1

राइट लाइनर ग्रामर - ar अंक

S->ε
S->1A
S->0S
S->9I
S->3C
S->5E
S->4D
S->2B
S->7G
S->6F
S->8H
F->3K
K->0F
A->2L
K->1G
A->5B
A->0J
B->7A
J->5A
G->6K
G->8S
H->9K
F->5S
K->2H
I->6E
I->5D
J->4S
D->8I
B->6S
K->9B
F->6A
G->9A
K->6L
K->4J
C->1E
L->8K
E->5C
B->4K
C->0D
J->2K
D->2C
A->9F
J->7C
C->6J
C->8L
E->0K
L->0C
B->9C
E->2S
L->6I
I->0L
J->0I
B->2I
I->3B
H->1C
I->7F
C->4H
F->1I
G->4I
I->0G
C->3G
F->8C
D->0A
E->3A
I->9H
A->7D
C->2F
H->7I
A->8E
F->9D
E->8F
A->6C
D->6G
G->0E
D->5F
E->9G
H->2D
D->7H
H->3E
I->2A
K->3I
C->9S
C->7K
E->4B
D->1B
L->1D
J->9E
I->1S
E->1L
J->8D
D->9J
L->2E
J->3L
B->5L
B->8B
L->7J
L->9L
G->1F
A->4A
K->5K
B->3J
H->6H
E->7E
J->1J
D->4E
G->2G
J->6B
D->3D
E->6D
H->4F
I->4C
C->5I
F->0H
H->5G
K->7S
G->3H
L->5H
H->8J
A->3S
H->0B
B->1H
G->7L
K->8A
F->2J
F->7B
L->4G
F->4L
A->1K
B->0G
G->5J
L->3F

फिर आप इसे 'रन' कैसे चुनते हैं, इसके आधार पर यह 'हां' या 'नहीं' को आउटपुट करेगा।

गंभीर प्रविष्टि नहीं, बस कुछ मजेदार;)

संपादित करें: शायद मुझे थोड़ा समझाना चाहिए।

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

यहाँ वर्णमाला सभी दशमलव अंकों का समूह है। व्याकरण के नियम हैं कि सभी तार दशमलव पूर्णांक बनाने चाहिए जो कि 13 से विभाज्य हैं।

हम परीक्षण करने के लिए उपर्युक्त व्याकरण का उपयोग कर सकते हैं कि क्या कोई स्ट्रिंग हमारी भाषा की है।

व्याकरण के नियमों में टर्मिनल प्रतीक (जो भाषा में तत्व हैं) के साथ-साथ गैर-टर्मिनल प्रतीक भी होते हैं जिन्हें पुनरावर्ती रूप से प्रतिस्थापित किया जाता है।

उदाहरण के साथ क्या हो रहा है, यह स्पष्ट करना आसान है:

उदाहरण के लिए कहते हैं कि हम जिस स्ट्रिंग का परीक्षण कर रहे हैं वह 71955 है।

हमेशा एक स्टार्ट सिंबल (जो नॉन-टर्मिनल होता है), इसके ऊपर व्याकरण के मामले में 'S' होता है। इस बिंदु पर हमने अपनी स्ट्रिंग से कोई वर्ण नहीं पढ़ा है:

current pattern                    symbol read
S                                  ε

अब, हम अपने स्ट्रिंग में पहला सिंबल पढ़ते हैं जो '7' है, फिर हम व्याकरण में एक नियम की तलाश करते हैं, जिसमें हमारे वर्तमान पैटर्न में कोई भी गैर-टर्मिनल 'बाएं हाथ की ओर' -> 'और' '->' के दाहिने हाथ में हमारा प्रतीक है। सौभाग्य से एक (S-> 7G) है, इसलिए हम अपने मौजूदा पैटर्न में नए नियम के दाहिने हाथ के साथ गैर-टर्मिनल प्रतीकों को प्रतिस्थापित करते हैं:

current pattern                    symbol read
7G                                 7

अब हमारे पास अपने पैटर्न में गैर-टर्मिनल 'जी' है, और पढ़ा जाने वाला अगला प्रतीक '1' है, इसलिए हम अपने व्याकरण में एक नियम की तलाश करते हैं जो 'जी-> 1 "से शुरू होता है। हम पाते हैं कि एक है। (G-> 1F), इसलिए हम अपने नए नियम के आरएचएस के साथ गैर टर्मिनल को प्रतिस्थापित करते हैं:

current pattern                    symbol read
71F                                1

इस प्रक्रिया को दोहराते रहें:

अगला नियम: एफ-> 9 डी

current pattern                    symbol read
719D                               9

अगला नियम: D-> 5F

current pattern                    symbol read
7195F                              5

अगला नियम: F-> 5S

current pattern                    symbol read
71955S                             5

इस बिंदु पर हमारे पास हमारे स्ट्रिंग में और अधिक प्रतीक नहीं हैं, लेकिन हमारे पास वहां एक और गैर-टर्मिनल प्रतीक है। हम व्याकरण में पहले नियम से देखते हैं कि हम खाली स्ट्रिंग के साथ 'S' को बदल सकते हैं (:): S-> rule

ऐसा करने से हमें वर्तमान संरक्षक मिलता है: 71955 is जो 71955 के बराबर है।

हमने अपने स्ट्रिंग में सभी प्रतीकों को पढ़ा है, और पैटर्न में कोई गैर-टर्मिनल प्रतीक नहीं हैं। जिसका अर्थ है कि स्ट्रिंग भाषा से संबंधित है और इसलिए 71955 वास्तव में 13 से विभाज्य है।

यानी लक्ष्य के लिए पैटर्न = स्ट्रिंग है। यदि आप किसी भी गैर-टर्मिनल प्रतीकों के साथ छोड़ दिए जाते हैं, तो अपने स्ट्रिंग के सभी प्रतीकों को पढ़ने के बाद, यह स्ट्रिंग भाषा से संबंधित नहीं है। इसी तरह, यदि आपके पास अभी भी पढ़ने के लिए आपके स्ट्रिंग में अधिक प्रतीक हैं, लेकिन व्याकरण में कोई नियम नहीं हैं जो आपको आगे जाने की अनुमति देते हैं, तो स्ट्रिंग भाषा से संबंधित नहीं है।


मैं ... यह भी निश्चित नहीं हूँ कि मैं यहाँ क्या देख रहा हूँ।
श्री लामा

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