एक + या - साइन का उपयोग किए बिना जोड़ना


24

पहले कई "Do __ without _ _" चुनौतियां रही हैं, लेकिन मुझे आशा है कि यह सबसे चुनौतीपूर्ण में से एक है।

चुनौती

आपको एक प्रोग्राम लिखना है जो STDIN से दो प्राकृतिक नंबर (पूरे नंबर> 0) लेता है, और दो नंबर के योग को STDOUT में प्रिंट करता है। चुनौती यह है कि आपको यथासंभव कम +और -संकेतों का उपयोग करना चाहिए । आपको किसी भी तरह के योग या निषेध कार्यों का उपयोग करने की अनुमति नहीं है।

उदाहरण

इनपुट

123
468

उत्पादन

591

इनपुट

702
720

उत्पादन

1422

टाई ब्रेकर: यदि दो कार्यक्रमों में समान संख्या +और -वर्ण हैं, तो विजेता कम / * ( ) = . ,और 0-9पात्रों वाला व्यक्ति है ।

अनुमति नहीं: ऐसी भाषाएं जिनमें मानक जोड़ / घटाव और वृद्धि / वृद्धि संचालक के अलावा अन्य प्रतीक हैं +या -अनुमति नहीं है। इसका मतलब है कि व्हॉट्सएप को भाषा की अनुमति नहीं है।


1
शायद यह चुनौती बहुत आसान थी जितना मैंने सोचा था कि यह होगा, खासकर अन्य भाषाओं में, जहां योग () फ़ंक्शन हैं। मुझे इसे ठीक करना है।
PhiNotPi

50
जो भी Brainfuck में ऐसा कर सकता है, उसके लिए 100 प्रतिनिधि इनाम।
पीटर ओल्सन

3
@ पेटर ओल्सन, मुझे लगता है कि बीएफ +या तो पूरा नहीं हो रहा है या फिर -...
फ़ूजक्कल

3
बस स्पष्ट करने के लिए, यह चुनौती कोड लंबाई के बारे में परवाह नहीं है? के केवल संख्या +, -और टाई ब्रेकर वर्ण? ... या क्या आपको नियमों को फिर से बदलने की आवश्यकता है :-)
टॉमी

@ टॉमी नहीं, यह नहीं है।
PhiNotPi 21

जवाबों:


29

पर्ल (नहीं +/-, कोई टाई-ब्रेकर, 29 वर्ण)

s!!xx!;s!x!$"x<>!eg;say y!!!c

एक बोनस के रूप में, आप और अधिक xs जोड़कर कोड को दो संख्याओं से अधिक बना सकते हैं s!!xx!

वैकल्पिक रूप से, यहां क्रमशः 1 और 3 टाई-ब्रेकर के साथ दो 21-चार समाधान हैं

say length$"x<>.$"x<>

say log exp(<>)*exp<>

नोट: ये समाधान sayफ़ंक्शन का उपयोग करते हैं, -Eकमांड लाइन स्विच के साथ या पर्ल 5.10.0 के बाद से उपलब्ध हैं use 5.010। पुराने पर्ल्स पर काम करने वाले संस्करणों के लिए इस उत्तर का संपादित इतिहास देखें ।


बिना टाई-ब्रेकर के समाधान कैसे काम करता है?

  • s!!xx!एक regexp प्रतिस्थापन ऑपरेटर है , $_जो चर पर डिफ़ॉल्ट रूप से काम करता है, जो स्ट्रिंग के साथ खाली स्ट्रिंग को बदलता है xx। (आमतौर पर /पर्ल में रेगेक्सपी डेलिमिटर के रूप में उपयोग किया जाता है, लेकिन वास्तव में लगभग किसी भी चरित्र का उपयोग किया जा सकता है। मैंने चुना !क्योंकि यह टाई-ब्रेकर नहीं है।) यह सिर्फ एक फैंसी तरीका "xx"है $_- या $_खाली होने के बाद से - (शुरू नहीं हुआ)। वास्तव में), यह वास्तव $_ = "xx"में बराबरी के संकेत का उपयोग किए बिना लिखने का एक तरीका है (और एक चरित्र कम, भी)।

  • s!x!$"x<>!egएक और regexp प्रतिस्थापन है, इस बार प्रत्येक को अभिव्यक्ति के मूल्य के साथ प्रतिस्थापित किया जा रहा xहै । ( स्विच वैश्विक प्रतिस्थापन को निर्दिष्ट करता है , निर्दिष्ट करता है कि प्रतिस्थापन को शाब्दिक स्ट्रिंग के रूप में उपयोग किए जाने के बजाय पर्ल कोड के रूप में मूल्यांकन किया जाना है।) एक विशेष चर है जिसका डिफ़ॉल्ट मान एकल स्थान होता है; इसके बजाय इसका उपयोग एक चार बचाता है। (किसी भी अन्य चर को एक वर्ण-मान के रूप में जाना जाता है, जैसे कि या , यहाँ समान रूप से अच्छी तरह से काम करेगा, सिवाय इसके कि मेरे इस्तेमाल से टाई-ब्रेकर का खर्च होगा।) $_$" x <>ge$"" "$&$/$/

    <> लाइन इनपुट ऑपरेटर , अदिश संदर्भ में, मानक इनपुट और यह रिटर्न से एक पंक्ति पढ़ता है। इससे xपहले कि यह पर्ल स्ट्रिंग पुनरावृत्ति ऑपरेटर है , और वास्तव में इस समाधान का मूल है: यह अपने बाएं ऑपरेंड (एक सिंगल स्पेस कैरेक्टर) को अपने दाहिने ऑपरेंड द्वारा दिए गए समय की संख्या को दोहराता है (लाइन जिसे हम इनपुट के रूप में पढ़ते हैं)।

  • y!!!c(ab) ट्रांसलिटर ऑपरेटर का उपयोग करके स्ट्रिंग में वर्णों को ( $_डिफ़ॉल्ट रूप से, फिर से) गिनने के लिए सिर्फ एक अस्पष्ट तरीका है । मैं बस लिखा जा सकता था say length, लेकिन अस्पष्ट संस्करण एक चरित्र छोटा है। :)


3
+1 - awsome और पूरी तरह से अपठनीय ;-) यह सही जवाब है क्योंकि चरित्र गिनती इस चुनौती में कोई फर्क नहीं पड़ता।
टॉमी

@ टॉमी, अन्य सही जवाब भी हैं। हो सकता है कि हमें कैरेक्टर काउंट के लिए अंतिम टाई-ब्रेकर बनाने पर जोर देना चाहिए।
पीटर टेलर

@Peter: मैं पहले से ही डिफ़ॉल्ट रूप से मान लिया गया था।
इल्मरी करोनें

1
यदि कैरेक्टर काउंट अंतिम टाई ब्रेकर है, और कई प्रविष्टियाँ अन्य श्रेणियों में शून्य के लिए मौजूद हैं, तो क्या यह केवल code-golfकुछ स्रोत प्रतिबंधों के साथ नहीं है ?
23

47

आर (24 अक्षर)

length(sequence(scan()))

यह क्या करता है:

  • scan STDIN (या फ़ाइल) से इनपुट पढ़ता है
  • sequence1 से शुरू होने वाले पूर्णांक अनुक्रमों को उत्पन्न करता है और अनुक्रमों को समेटता है। उदाहरण के लिए, sequence(c(2, 3))वेक्टर में परिणाम1 2 1 2 3
  • length समवर्ती वेक्टर में तत्वों की संख्या की गणना करता है

उदाहरण 1:

> length(sequence(scan()))
1: 123
2: 468
3:
Read 2 items
[1] 591

उदाहरण 2:

> length(sequence(scan()))
1: 702
2: 720
3:
Read 2 items
[1] 1422

1
बहुत चालाक, अच्छी नौकरी।
मैथ्यू

यह मेरे मन चल रही है
एसएमसीआई

+/- और ऊपर वर्णित टाई-ब्रेकर दिलचस्प हैं, वर्ण नहीं।
उपयोगकर्ता अज्ञात

यह लंबाई की गणना कैसे करता है? किसी भी अतिरिक्त का उपयोग किए बिना? यदि हां, तो मुझे आश्चर्य होगा।
तेरा पोरा

2
@ टेमपोरा सवाल केवल उत्तर में कोड को प्रतिबंधित करता है, न कि पर्दे के पीछे किए गए कार्यों को। हम प्रश्न को प्रतिबंधित नहीं करने जा रहे हैं ताकि अंतर्निहित कंप्यूटर वास्तुकला एक रजिस्टर में वृद्धि न कर सके।
mbomb007

15

डी

main(){
    int a,b;
    readf("%d %d",&a,&b);
    while(b){a^=b;b=((a^b)&b)<<1;}
    write(a);
}

जीत के लिए थोड़ा सा चक्कर

एक बोनस के रूप में संकलित कोड में एक ऐड ऑपरेशन नहीं होता है (हालांकि रीडफ़ कॉल के लिए बोल नहीं सकते)


12

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

print len('%s%s'%(input()*'?',input()*'!'))

3
बहुत ही आविष्कारशील, लेकिन आप स्ट्रिंग-ब्रेकर के अलावा स्ट्रिंग में उपयोग किए जाने वाले चरित्र को "~" में
बदलना चाहते हैं

सलाह के लिए धन्यवाद एलेक्स, मैं पहले से ही टाई-ब्रेकर नियम के बारे में भूल गया था।
उमर

print sum(input(),input())
razpeitia

9
razpeitia: मुझे लगता है कि योग एक "योग जैसा" कार्य है और इस प्रकार इसकी अनुमति नहीं है।
उमर

6

GolfScript

कोई +/- या टाई-ब्रेकर:

# Twiddle some bits to get a few small integers
[]!~abs:two~abs:three!:zero~:minusone;

~[two base minusone%\two base minusone%]zip
zero:c;
{
    # Stack holds [x y] or [x] with implicit y is zero
    # Half adder using x y c: want to end up with sum on stack and carry back in c
    [~c zero]three<zero$
    ~^^\
    $~;:c;;
}%
[~c]minusone%two base

दो टाई-ब्रेकर पात्रों के साथ बहुत सरल संस्करण, समान सूची-संयोजन चाल का उपयोग करके जो अन्य लोग उपयोग कर रहे हैं:

~[\]{,~}%,

मैं यह मान रहा हूं कि गोल्फस्क्रिप्ट )वेतन वृद्धि ऑपरेटर के रूप में अयोग्य नहीं है , क्योंकि मैं वास्तव में इसका उपयोग नहीं कर रहा हूं।


6

सी (केवल 32 बिट)

int main(int ac, char *av) {
    scanf("%d\n%d", &ac, &av);
    return printf("%d\n", &av[ac]);
}

सूचक अंकगणित बस के रूप में अच्छा है।
यह आवश्यकताओं से कैसे मेल खाता है?
* कोई +या -
* कोई /, =, ., 0- 9
* जो मुझे कम से कम (आप की जरूरत लगती है कोष्टक के केवल 3 जोड़े, main, scanf, printf)।
* एक *(सूचक दृष्टिकोण की आवश्यकता है)।
* चार ,(सामान्य चर को परिभाषित करके एक को बचा सकता है, नहीं ac,av)


6

सी ++ 0 +/-, 3 टाई-ब्रेकर

#include <vector>
#include <iostream>

#define WAX (
#define WANE )
#define SPOT .

int main WAX WANE {
    unsigned x;
    unsigned y;
    std::cin >> x >> y;
    std::vector<int> v WAX x WANE;
    std::vector<int> u WAX y WANE;
    for WAX auto n : u WANE {
        v SPOT push_back WAX n WANE;
    }
    std::cout << v SPOT size WAX WANE;
}

5

हास्केल, 0 + 2

import Monad
main = join $ fmap print $ fmap length $ fmap f $ fmap lines getContents
f x = join $ flip replicate [] `fmap` fmap read x

यह टाई ब्रेकर पात्रों के सेट में से केवल दो +या -वर्णों का उपयोग करता है =, जिनमें से एक बंधन के लिए अनिवार्य है main। योग उपयुक्त लंबाई की सूचियों को समेट कर किया जाता है।


4

संपादित करें यह पहले नियमों को अस्वीकार करने के लिए बदल दिया गया था sum...

द आर लैंग्वेज: नो टू टू +या -... और 9 टाई-ब्रेकर कैरेक्टर!

sum(as.numeric(readLines(n=2)))

उदाहरण:

> sum(as.numeric(readLines(n=2)))
123
456
[1] 579

[1] 579जवाब 579 (है[1] जहां परिणाम वेक्टर में अपना रहे हैं के बाद से आर में सभी मान वैक्टर हैं का ट्रैक रखने के है - लंबाई 1 से इस मामले में)

ध्यान दें कि आर के पास +अधिकांश भाषाओं की तरह ही ऑपरेटर हैं - यह सिर्फ इतना होता है कि इसमें sumबहुत अधिक मात्रा में वैक्टर का एक गुच्छा होता है।

इस मामले में, readLines एक स्ट्रिंग वेक्टर की लंबाई 2 लौटाता है। मैं फिर इसे संख्यात्मक (युगल) के लिए बाध्य करता हूं और इसे योग करता हूं ...

R की कुछ अन्य विशेषताएं दिखाने के लिए:

> 11:20 # Generate a sequence
 [1] 11 12 13 14 15 16 17 18 19 20

> sum(1:10, 101:110, pi)
[1] 1113.142

1
+1 करने के लिए मुझे राशि () फ़ंक्शन को उल्लिखित करने के लिए नियमों को बदलना होगा।
PhiNotPi

@PhiNotPi - नियम बदलना ?! यह बेइमानी है! :-) ... लेकिन आपको शायद "सम-लाइक फ़ंक्शंस" कहना चाहिए या मैं colSumsइसके बजाय सिर्फ उपयोग करूँगा ... हो सकता है कि "निगेटिव-लाइक फ़ंक्शंस" भी हो, जबकि आपके यहाँ ...
टॉमी

2
मैं आपकी सलाह लेने जा रहा हूं। मैं जो बता सकता हूं, इस साइट पर हर कोई (मेरे सहित) नियमों में खामियों को इंगित करना पसंद करता है।
PhiNotPi

4

आर भाषा

नए नियम, नया उत्तर, वही भाषा। करने के लिए कोई कॉल +या-

अद्यतन का उपयोग करते हुए scan, यह 11 टाई-ब्रेकर पात्रों (और सभी में 27 वर्ण) पर गिरता है।

as.numeric(scan())%*%c(1,1)

मूल: 13 टाई-ब्रेकर वर्ण!

as.numeric(readLines(n=2)) %*% c(1,1)

उदाहरण:

> as.numeric(readLines(n=2)) %*% c(1,1)
123
456
     [,1]
[1,]  579

इस बार परिणाम मैट्रिक्स गुणन द्वारा प्राप्त किया गया है। उत्तर को 1x1 मैट्रिक्स के रूप में प्रदर्शित किया जाता है।


वहाँ कुछ भी नहीं है कि मैं यह करने के लिए कर सकते हैं। शायद आर इस चुनौती पर अच्छा है, क्योंकि यह ज्यादातर गणित-आधारित है। या शायद यह चुनौती आसान है।
PhNNotPi

+1 अच्छा है। आप के साथ इस भी कम कर सकते हैं scan()के बजायreadlines(n=2)
Andrie

@Andrie - हाँ, लेकिन फिर आप ठीक दो नंबरों में प्रवेश करने वाले उपयोगकर्ता पर भरोसा करते हैं ... जो इस चुनौती के लिए ठीक है, मुझे लगता है ...
टॉमी

4

हास्केल, 0 +/ -, 6 2 टाई-ब्रेकर (= )

(स्ट्रिंग / सूची समवर्ती चाल का उपयोग नहीं करता है)

main = interact f
f x = show $ log $ product $ map exp $ map read $ lines x

आप रचना के स्थान पर एक अतिरिक्त = की कीमत पर सभी बिंदुओं को समाप्त कर सकते हैं: "fgh" लिखने के बजाय "a ax = f $ g $ h x"
Omar

3

जावास्क्रिप्ट, 56

p=prompt;alert(Array(~~p()).concat(Array(~~p())).length)

~~ टिप पर @JiminP का धन्यवाद! मैं कम से कम बाइट्स के लिए जा रहा हूं, इसलिए पी = प्रॉम्प्ट पर 1 बाइट की बचत; अभी भी इसके लायक है। मैं टाई-ब्रेकर चार्ट के बारे में आपके तर्क को समझता हूं, लेकिन ईमानदार होने के लिए आप कम से कम बाइट्स नहीं करेंगे: -पी

संस्करण, ६ ९

i=parseInt;p=prompt;alert(Array(i(p())).concat(Array(i(p()))).length)

@ इल्मरी और @ जमिनप से कुछ प्रतिक्रिया के लिए धन्यवाद, मैंने अपने मूल समाधान से 13 बाइट का मुंडन किया है।

मूल रूप से, ,२

i=parseInt;p=prompt;a=Array(i(p()));a.push.apply(a, Array(i(p())));alert(a.length)

अल्पविराम के बाद वह स्थान पूरी तरह से अनावश्यक है; इसे हटाकर आप 81 साल के हो जाते हैं।
इल्मरी करोनन

उपयोग करना concatऔर गणना करना alertकम है। i=parseInt;p=prompt;alert(Array(i(p())).concat(Array(i(p()))).length) BTW, मुझे नहीं पता था कि Array(n)लंबाई के साथ एक सरणी देता है n। Google Chrome कंसोल ने मुझे दिया []और मुझे लगा कि कुछ भी नहीं है ...
JiminP

1
ओह, चूंकि महत्वपूर्ण चीज टाई-ब्रेकर चरित्र है, p=promptअच्छा नहीं है। और, parseInt(x)लगभग बराबर है ~~xalert(Array(~~prompt())['concat'](Array(~~prompt()))['length'])(12 टाई-ब्रेकर चार्ट) पीएस। मैं इसे अपनी प्रविष्टि के रूप में उपयोग कर सकता था, लेकिन यह मुझे चोरी करने की भावना देता है।
JiminP


3

एपीएल (नहीं +/-, कोई टाई ब्रेकर, 8 या 10 अक्षर)

यह प्रविष्टि अन्य लोगों के समान है जो इनपुट से उत्पन्न अनुक्रमों को प्राप्त करते हैं और लंबाई पाते हैं ... लेकिन यह एपीएल में है, जो इस तरह की एक छोटी सी समस्या के लिए भी भ्रामक दिखाई दे सकता है। मैंने Dyalog APL का उपयोग किया , जो मुफ्त शैक्षिक लाइसेंस प्रदान करता है।

कोड:

⍴⊃⍪⌿⍳¨⎕⎕

दांये से बांये तक:

  • प्रत्येक उद्धरण-क्वाड ( ) उपयोगकर्ता से इनपुट का अनुरोध करता है और उसका मूल्यांकन करता है।
  • प्रत्येक ऑपरेटर ( ¨) अनुक्रमणिका जनरेटर फ़ंक्शन ( ) को प्रत्येक आइटम में अपने दाईं ओर लागू करता है।
  • यह परिणामी सारणी को एक सरणी में समतल करता है। इनपुट ऑपरेटर को कमी ऑपरेटर ( /) द्वारा फ्लैट सूची में घटाया जाता है , जो समवर्ती फ़ंक्शन ( ,) का उपयोग करके सरणी को तह करता है । इस चुनौती के लिए, एक आयामी कमी ऑपरेटर ( ) का उपयोग किया जाता है, साथ ही पहली धुरी पर संघनन ऑपरेटर के साथ ( )।
  • कमी ऑपरेटर का उपयोग करने के परिणामस्वरूप, सरणी संलग्न है , जो इसे बैग में रखने की तरह है; हम सभी को बाहर देखते हैं एक बैग, इसकी सामग्री नहीं। खुलासा ऑपरेटर ( ) हमें संलग्न सरणी (बैग) की सामग्री देता है।
  • अंत में, फ़ंक्शन का आकार ( ) हमें एक सरणी के आयामों की लंबाई देता है। इस मामले में, हमारे पास एक-आयामी सरणी है, इसलिए हम सरणी में वस्तुओं की संख्या प्राप्त करते हैं, जो हमारा परिणाम है।

यदि हमें स्पष्ट रूप से परिणाम का उत्पादन करने की आवश्यकता है, तो हम ऐसा कर सकते हैं:

⎕←⍴⊃⍪⌿⍳¨⎕⎕

ऊपर एपीएल प्रतीकों के साथ तुलनीय पायथन कोड,:

import operator

⎕←     ⍴    ⌿        ⍪                 ¨              ⍳                ⎕        ⎕         ⊃
print (len (reduce (operator.__add__, [map (lambda n: range (1, n+1), [input(), input()])][0])))

मैं एक छोटा एपीएल में संभव संस्करण हो, तो जानना चाहते हैं - एक और, सरल संस्करण मैं आया था कि के साथ और अधिक टाई तोड़ने वाले है (हालांकि 8 अक्षरों में अभी भी) है: ⍴(⍳⎕),⍳⎕


क्या आपका सूचकांक जनरेटर 1 या 0 से शुरू होता है?
श्रीजैंडर

3

मैंने किसी को भी इलेक्ट्रिकल इंजीनियरिंग का तरीका नहीं देखा, इसलिए यहाँ मेरा (रूबी में) लेना है:

def please_sum(a, b)
    return (a&b !=0)? please_sum( ((a&b)<<1) , a^b ):a^b
end

यह थोड़ा बदसूरत है, लेकिन यह काम हो जाता है। दो मूल्यों की तुलना एक बिटवाइज़ द्वारा की जाती है AND। यदि उनके पास कोई बिट नहीं है, तो अगले बाइनरी कॉलम में कोई "कैरी" नहीं है, इसलिए इसके अलावा बिटवाइज़ XORआईएनजी द्वारा पूरा किया जा सकता है। अगर कोई कैरी है, तो आपको कैरी को बिट वाइज में जोड़ना होगा XOR। यहाँ थोड़ी रूबी लिपि है जिसका उपयोग मैंने यह सुनिश्चित करने के लिए किया था कि मेरा डिजिटल तर्क बहुत कठोर नहीं था:

100.times do
    a=rand 10
    b=rand 10
    c=please_sum(a,b)
    puts "#{a}+#{b}=#{c}"
    end

चीयर्स!



2

खोल, ५२

read a
read b
(seq 1 $a;seq 1 $b)|wc|awk '{print$1}'

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


सदृश: xargs -n1 jot | wc -lजो समान -कमी लेता है, awkलेकिन मैं यह नहीं देख सकता कि इससे कैसे बचा जाएxargs
बेन जैक्सन

+/- और ऊपर वर्णित टाई-ब्रेकर दिलचस्प हैं, चरित्र नहीं।
उपयोगकर्ता अज्ञात

2

सी

a,b;A(int a,int b){return a&b?A(a^b,(a&b)<<1):a^b;}
main(){scanf("%d%d",&a,&b);printf("%d\n",A(a,b));}

मैं 20 टाई ब्रेकर गिनता हूं ... क्या मैं सही हूं?
फ़ूजएक्सएक्सएल

2
22 टाई ब्रेकर: 0 /*=., 7 (, 7 ), 7 ,, 1[0-9]
saeedn

2

सी#

यह किसी भी खिंचाव से कम नहीं है:

private static int getIntFromBitArray(BitArray bitArray)
{
    int[] array = new int[1];
    bitArray.CopyTo(array, 0);
    return array[0];
}

private static BitArray getBitArrayFromInt32(Int32 a)
{
    byte[] bytes = BitConverter.GetBytes(a);
    return new BitArray(bytes);
}

static void Main(string[] args)
{
    BitArray first = getBitArrayFromInt32(int.Parse(Console.ReadLine()));
    BitArray second = getBitArrayFromInt32(int.Parse(Console.ReadLine()));
    BitArray result = new BitArray(32);

    bool carry = false;
    for (int i = 0; i < result.Length; i++)
    {
        if (first[i] && second[i] && carry)
        {
            result[i] = true;
        }
        else if (first[i] && second[i])
        {
            result[i] = false;
            carry = true;
        }
        else if (carry && (first[i] || second[i]))
        {
            result[i] = false;
            carry = true;
        }
        else
        {
            result[i] = carry || first[i] || second[i];
            carry = false;
        }
    }
    Console.WriteLine(getIntFromBitArray(result));
}

थकाऊ है, मैथ्यू।
Cary Swoveland

2

जे, 15 7 चार्ट, 1 टाई ब्रेकर, अधूरा कार्यक्रम

यह मेरा J प्रयास है। यह एक पूर्ण कार्यक्रम नहीं है, क्योंकि मुझे अभी तक पता नहीं चला है कि कैसे लिखना है। फ़ंक्शन को प्राप्त करने के लिए बस उस लाइन को स्क्रिप्ट में रखें, pजिसका उपयोग संख्याओं की मनमानी मात्रा को जोड़ने के लिए किया जा सकता है। यह एक सन्यासी है और इसे जोड़ने के लिए संख्याओं की सूची लेता है (जैसे p 1 2 3 4):

p=:#@#~

विचार बहुत सरल है। समारोह tacit उर्फ ​​व्यर्थ शैली में लिखा है। यहाँ एक निर्दिष्ट परिभाषा है:

p=:3 :'##~y'

दाईं से बाईं ओर पढ़ें। टैसिट संस्करण में, @फ़ंक्शन के कुछ हिस्सों की रचना करता है। (गणित में mathematics की तरह [(f∘g) (x) = f (g (x)])

  • yका पैरामीटर है p
  • ~क्रिया को रिफ्लेक्टिव बनाता है। कुछ क्रिया के लिए m, m~ aके बराबर है a m a
  • #(कॉपी, a#b): प्रत्येक तत्व को बार-बार aदोहराया जाता iहै, जहां iमौजूदा तत्व के समान सूचकांक में तत्व हैa है b। इस प्रकार, #~एक आइटम n nबार दोहराता है ।
  • #(count #b),: तत्वों की संख्या की गणना करता है b

निष्कर्ष: J, पर्ल की तुलना में अधिक आकर्षक और कम पठनीय है (जो इसे और भी अधिक आकर्षक बनाता है)

संपादित करता

  • 15 -> 7 का उपयोग करना # बजाय काi. । हाँ! गोल्फस्क्रिप्ट की तुलना में कम वर्ण।

एक कार्यक्रम के अधिक

इनपुट के लिए यह एक प्रश्न है, लेकिन यह अभी भी एक पूर्ण कार्यक्रम नहीं है: (13 चार्ट, 3 ब्रेकर)

##~".1!:1<#a:

जम्मू निश्चित रूप से भयानक है, लेकिन मुझे विश्वास है, तो आप सिर्फ जब आप इसके साथ चुनौतियों का समाधान समस्या का पार्स हिस्सा बाहर नहीं छोड़ सकते ;-)
जेबी

@JB खैर, आप बिल्ट फंक्शन toJ का उपयोग कर सकते हैं, लेकिन मुझे डोमेन त्रुटियाँ मिलती रहती हैं।
फ़ूजएक्सएक्सएल

2

जावास्क्रिप्ट (17 टाई-ब्रेकर वर्ण)

eval('걢갽거걲걯걭거건갨걡갽거걲걯걭거건갨걹갽걦걵걮걣건걩걯걮갨걡갩걻걣갽걮걥걷갠걕걩걮건갸걁걲걲걡걹갨걡갩갻걦걯걲갨걩갠걩걮갠걣갩걩걦갨걩갽갽걾걾걩갩걸갮거걵걳걨갨갱갩걽갬걸갽걛걝갩갩갻걹갨걡갩갻걹갨걢갩갻걡걬걥걲건갨걸갮걬걥걮걧건걨갩갻'['split']('')['map'](function(_){return String['fromCharCode'](_['charCodeAt'](~~[])^0xac00)})['join'](''))

: पी ("Obfuscated" टाई-ब्रेकर पात्रों की संख्या को कम करने के लिए। आंतरिक रूप से, यह b=prompt(a=prompt(y=function(a){c=new Uint8Array(a);for(i in c)if(i==~~i)x.push(1)},x=[]));y(a);y(b);alert(x.length); ।)


2

सी#,

कार्यक्रम 1 लाइन पर काम करता है; क्षैतिज स्क्रॉलिंग से बचने के लिए कई लाइनों पर अलग किया गया।

using C=System.Console;
class A{
static void Main(){
int a,b,x,y;
a=int.Parse(C.ReadLine());
b=int.Parse(C.ReadLine());
do{x=a&b;y=a^b;a=x<<1;b=y;}while(x>0);
C.WriteLine(y);
}}

1

क्लोजर (44 वर्ण)

(pr(#(count(concat(%)(%)))#(repeat(read)0)))

संपादित करें: केवल रिटर्निंग राशि के बजाय STDOUT पर प्रिंट करने के लिए तय किया गया।


+/- और ऊपर वर्णित टाई-ब्रेकर दिलचस्प हैं, चरित्र नहीं।
उपयोगकर्ता अज्ञात

1

स्काला

  • स्कोर:
    • + -: 0
    • ()। : ५ + ५ + ३ = १३

कोड:

(List.fill (readInt) (1) ::: List.fill (readInt) (2)).size
  • List.fill (4) (7) सूची (7, 7, 7, 7) का उत्पादन करती है
  • एक ::: b एक में 2 सूचियों को समेटता है
  • बाकी सब स्पष्ट होना चाहिए

1

के, ११

{#,[!x;!y]}

आर समाधान के रूप में एक ही गति चाल। बाएं से दाएं पढ़ना: दो इनपुट वैरिएबल, कॉनमेटेट और फिर गणना करें।


1

पावरशेल , 27 42 बाइट्स, 0 +-, 4 1 माध्यमिक

एक +और 4 सेकंड बचाने के लिए mazzy के लिए धन्यवाद

$args|%{[int[]]$_*$_}|measure|select count

इसे ऑनलाइन आज़माएं! या एक अतिरिक्त 3 बाइट्स के लिए सुंदर तालिका

-या- 19 बाइट्स को बचाने के लिए चार सेकंड जोड़ने:

32 23 बाइट्स, 1 0 +-, 12 5 सेकंड

-9 बाइट्स mazzy के लिए धन्यवाद

($args|%{,$_*$_}).count

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

प्रत्येक तर्क के लिए, हम nसरणी तत्वों (जिसमें [n]यह महत्वपूर्ण नहीं है) को धक्का देते हैं, जो कि पाइप लाइन द्वारा समूहीकृत किए जाते हैं और फिर गिने जाते हैं।



1
मुझे क्षमा करें, यह कोडगोल्फ नहीं है। 0 + -, 3 सेकंड, 27 बाइट्स
माज़ी

1
@ माज़ी मेरी गिनती से 4 है लेकिन फिर भी धन्यवाद: D
Veskah

1
तुम सही हो। धन्यवाद। 0 + -, 1 टाई ब्रेकर, 42 बाइट्स । आप |flएक सुंदर प्रारूप के लिए जोड़ सकते हैं यह ऑनलाइन कोशिश करो!
माज़ी

1

पीपा (केबीसी विकी पर SBCS)

मूल रूप से R उत्तर का एक बंदरगाह है।

¿¿Ï_"Ï_!.

व्याख्या

¿¿#        Take 2 integer inputs
  Ï_"Ï_#   Generate 2 arrays the length of the integer inputs
       !.# Output the length of the stack

1

05AB1E , 2 4 बाइट्स, 0 +/-

F>

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

माफी अगर मैंने इस चुनौती को गलत समझा, लेकिन मुझे आश्चर्य था कि कोई 05AB1E उत्तर नहीं था। इस भाषा में सबसे छोटा उत्तर मैं इस बात को लेकर आ सकता हूं कि इसका उपयोग + या बिल्ट इन फंक्शन में नहीं किया गया है।

स्पष्टीकरण:

 F   #Loop A many times
  >  #Increment B
     #(Implicit output)

-2 बाइट्स ग्रिम के लिए धन्यवाद।


1
धन्यवाद! मैं अभी भी 05AB1E में नया हूं।
बिस्मार्क 71


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