कुछ जावा उत्पन्न करें


14

आपका बॉस चाहता है कि आप इस तरह कोड लिखें:

public static boolean isPowerOfTen(long input) {
  return
    input == 1L
  || input == 10L
  || input == 100L
  || input == 1000L
  || input == 10000L
  || input == 100000L
  || input == 1000000L
  || input == 10000000L
  || input == 100000000L
  || input == 1000000000L
  || input == 10000000000L
  || input == 100000000000L
  || input == 1000000000000L
  || input == 10000000000000L
  || input == 100000000000000L
  || input == 1000000000000000L
  || input == 10000000000000000L
  || input == 100000000000000000L
  || input == 1000000000000000000L;
}

(मार्टिन स्मिथ, /codereview//a/117294/61929 पर )

जो कुशल और ऐसा है, लेकिन टाइप करने के लिए यह मजेदार नहीं है। चूँकि आप अपने द्वारा किए जाने वाले कुंजीपट की संख्या को कम करना चाहते हैं, आप एक छोटा प्रोग्राम या फ़ंक्शन (या विधि) लिखते हैं जो आपके लिए इस फ़ंक्शन को आउटपुट करता है (या आउटपुट के लिए एक स्ट्रिंग देता है)। और जब से आपके पास अपने सभी कस्टम फुल-रेंज यूनिकोड कीबोर्ड हैं , जिनमें से सभी के लिए यूनिकोड 8.0 की आवश्यकता होती है, तो हम कीकोड के बजाय यूनिकोड वर्णों की गणना करते हैं। या बाइट्स, यदि आपकी भाषा यूनिकोड स्रोत कोड का उपयोग नहीं करती है।

आपके प्रोग्राम या फंक्शन का कोई भी इनपुट आपके स्कोर के लिए मायने रखता है, क्योंकि आपको स्पष्ट रूप से इसे टाइप करना होगा।

स्पष्टीकरण और संपादन:

  • आखिरी के बाद 3 अनुगामी रिक्त स्थान निकाले }
  • के बाद एक एकल अनुगामी स्थान को हटा दिया गया return
  • फ़ंक्शन / विधि से आउटपुट का एक स्ट्रिंग वापस करना ठीक है

12
0==Math.log10(input)%1
SuperJedi224

7
आप कहते हैं " हम यूनिकोड वर्णों की गणना करते हैं ," लेकिन फिर आप तुरंत " या बाइट्स " कहते हैं । इनमें से कौनसा?
दरवाज़े

2
जिसे आप पसंद करते हैं, यानी जो आपको सबसे कम स्कोर देता है। पाठ स्रोत का उपयोग नहीं करने वाली भाषाओं को अनुमति देने के लिए बाइट्स जोड़े गए।
फिलाल हाग्लंड

1
while(input%10==0) input/=10; return input == 1;
PSkocik

4
05AB1E विंडोज़ CP1252 का उपयोग करता है, जो बाइट्स है, यूनिकोड नहीं। मैं मानक नियमों के लिए लक्ष्य बना रहा हूं, लेकिन मुझे लगता है कि मैं हर समय गलत हूं।
फिलाल हाग्लंड

जवाबों:


15

PostgreSQL, 158 वर्ण

select'public static boolean isPowerOfTen(long input) {
  return
   '||string_agg(' input == 1'||repeat('0',x)||'L','
  ||')||';
}'from generate_series(0,18)x

मैं एक RDBMS कोड गोल्फ जवाब के रूप में इस्तेमाल कभी नहीं देखा है ... मीठा! +1
क्रिस क्रैफिस

@ChrisCirefice SQL वास्तव में इस साइट पर कुछ सामान्य है। (या कम से कम एक सामान्य से अधिक की उम्मीद कर सकते हैं।)
एलेक्स ए।

@AlexA। हम्म, अच्छी तरह से पीसीजी मेरी कम आवृत्ति वाली एसई साइटों में से एक है, इसलिए मैंने कभी भी एसक्यूएल उत्तर नहीं देखा है :)
क्रिस सिराइफ़

7

विम 97 कीस्ट्रोक्स

ipublic static boolean isPowerOfTen(long input) {
  return
  || input == 1L<esc>qyYpfLi0<esc>q16@yo}<esc>3Gxx

खैर, मैं एक रोल पर हूं जिसमें वीवा उत्पादक जावा है, इसलिए प्रवृत्ति को जारी क्यों नहीं रखना चाहिए!


के fLसाथ बदलने से $आप एक कीस्ट्रोक बचा सकते हैं
लीक नून

इसके अलावा, तीसरी पंक्ति input == 1Lको एक बाइट द्वारा भ्रमित किया जाता है ...
लीक नून

तो अंतिम xको बदल दिया जाना चाहिए r<sp>और फिर कीस्ट्रोक्स की संख्या अपरिवर्तित होगी
लीक नून


7

CJam, 52 वर्ण

YA#_("𐀑򀺸󆚜񸎟񜏓񞍁򛟯󩥰󾐚򉴍􍼯𹾚򶗜򳙯󭧐񹷜񊽅𸏘򴂃򦗩󧥮𤠐𰑈򶂤𘏧󔆧򇃫󡀽򊠑񊩭򯐙񛌲񊚩𤱶𻺢"f&bY7#b:c~

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

चरण 1

यूनिकोड वर्ण U + 10000 से U + 10FFFF का उपयोग करके, हम एक एकल वर्ण में 20 बिट्स को एन्कोड कर सकते हैं। CJam आंतरिक रूप से 16-बिट वर्णों का उपयोग करता है, इसलिए हर एक को सरोगेट्स की एक जोड़ी के रूप में कूटबद्ध किया जाएगा , जो कि U + D800 से U + DBFF तक की सीमा में होगा, इसके बाद U + DC00 से लेकर U + DFFF तक।

1023 के साथ प्रत्येक सरोगेट की बिटवाइज़ और लेने से, हम जानकारी के 10 बिट्स प्राप्त करते हैं जो इसे एन्कोड करता है। हम BMP से ASCII स्ट्रिंग के बाहर यूनिकोड वर्णों की मनमानी स्ट्रिंग को डीकोड करने के लिए परिणामी सरणी को आधार 1024 से बेस 128 में बदल सकते हैं।

कोड निम्नलिखित करता है:

YA#    e# Push 1024 as 2 ** 10.
_(     e# Copy and decrement to push 1023.

"𑅰󻢶񹱨񉽌񍍎񄆋򎿙򧃮񑩹󠷽􂼩􉪦񭲣񶿝򭁩󭰺􄔨񍢤𘎖񮧗򦹀𹀠񐢑񜅈𠟏򘍎󾇗򲁺􅀢򅌛񎠲򦙤򃅒𹣬񧵀򑀢"

f&     e# Apply bitwise AND with 1023 to each surrogate character.
b      e# Convert the string from base 1024 to integer.
Y7#    e# Push 128 as 2 ** 7.
b      e# Convert the integer to base 128.
:c     e# Cast each base-128 to an ASCII character.
~      e# Evaluate the resulting string.

चरण 2

उपरोक्त स्रोत कोड ( 98 बाइट्स ) से डिकोडिंग प्रक्रिया उपज देती है ।

"public static boolean isPowerOfTen(long input) {
  return
   ""L
  || input == ":S6>AJ,f#S*"L;
}"

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

कोड निम्नलिखित करता है:

e# Push the following string.

"public static boolean isPowerOfTen(long input) {
  return
   "

e# Push the following string and save it in S.

"L
  || input == ":S

e# Discard the first 6 characters of S. The new string begins with " input".

6>

e# Elevate 10 (A) to each exponent below 19 (J).

AJ,f#

e# Join the resulting array, using the string L as separator.

S*

e# Push the following string.

"L;
}"

आप यहूदी धर्म की तरह एक एसई साइट की उम्मीद कर सकते हैं जो लोगों की साइट के यूनिकोड समर्थन का तनाव-परीक्षण कर रही है, लेकिन यह पागल है: डी
फ़िलिप हाग्लंड

मैं उद्धरण चिह्नों के बीच के दो पात्रों को देख सकता हूं। क्या आप एक हेक्सडंप पोस्ट कर सकते हैं?
पावेल

आप वास्तव में उनमें से दो देख सकते हैं? मेरे पास ऐसा कोई भाग्य नहीं है ... वर्णों को UTF-8 के रूप में एन्कोड करते हुए, हेक्सडंप इस तरह दिखेगा। tio.run/nexus/bash#AagAV///eHhkIC1nIDH//…
डेनिस

6

जावा, 217 215 220 219 192 बाइट्स

golfed:

public static String b(){String s="public static boolean isPowerOfTen(long input) {\n  return\n    input == 1L",z="";for(int i=0;i++<18;){z+="0";s+="\n  || input == 1"+z+"L";}return s+";\n}";}

Ungolfed:

  public static String a(){
    String s = "public static boolean isPowerOfTen(long input) {\n  return\n    input == 1L", z="";
    for (int i=0; i++ < 18;) {
        z += "0";
        s += "\n  || input == 1"+z+"L";
    }
    return s + ";\n}";
  }

(पहला जवाब, वुहू)

धन्यवाद!
-2 बाइट्स: user902383
-1 बाइट: डेनहम कोट

परिवर्तन:

  • रिक्त स्थान के बजाय टैब का उपयोग किया गया
  • उत्पादन की अंतिम पंक्ति से चूक गए: 18 -> 19
  • भीतरी लूप को हटा दिया
  • प्रिंटिंग से बदलकर रिटर्निंग स्ट्रिंग

4
पाश के लिए आपके आंतरिक को कोष्ठक की आवश्यकता नहीं है
user902383

जावा 8 सिंटैक्स का उपयोग करें, कुछ अन्य सामान को भी छोटा करें: ()->{String s="public static boolean isPowerOfTen(long input) {\n\treturn input == 1L";for(int i=0,k;i++<18;){s+="\n\t|| input == 1";for(k=0;k++<i;)s+="0";s+="L";}return s+";\n}";}(180 बाइट्स) अब मुद्रण के बजाय स्ट्रिंग लौटाता है, लेकिन यह छोटा है।
एडिसन क्रम्प

1
एक और भी क्रिया जावा प्रोग्राम उत्पन्न करने के लिए एक क्रिया जावा प्रोग्राम लिखने के लिए +1।
16

इसके बजाय for(int i=1;i<19;i++)आप लिख सकते हैं for(int i=1;i++<19;)कि कौन बाइट बचाता है
डेनहम कोट

इसके अलावा, घोषित करें int i=1,k;और फिर आप लिख सकते हैं for(;i++<19;)औरfor(k=0;k++<i;)
Denham Coote

5

पॉवरशेल, 120 बाइट्स

'public static boolean isPowerOfTen(long input) {'
'  return'
"   $((0..18|%{" input == 1"+"0"*$_})-join"L`n  ||")L;`n}"

पहली दो पंक्तियाँ केवल स्ट्रिंग शाब्दिक हैं, जो आउटपुट के रूप में हैं।

तीसरी पंक्ति तीन स्थानों से शुरू होती है, और L;`n}"अंतिम युगल बाइट्स को समाप्त करने के लिए समाप्त होती है। स्क्रिप्ट ब्लॉक के अंदर का मध्य बिट से $(...)-के लिए लूपिंग द्वारा बनाया गया है और प्रत्येक पुनरावृत्ति एक स्ट्रिंग का निर्माण करता है जो कि संबंधित संख्या के शून्य से शुरू होता है । यह स्ट्रिंग्स की एक सरणी को थूक देगा। तब हम नईलाइन-पाइप को प्राप्त करने के लिए सरणी के प्रत्येक तत्व को । वह बड़ा तार स्क्रिप्ट ब्लॉक का आउटपुट है, जो मध्य और आउटपुट में स्वचालित रूप से डाला जाता है।%018input == 1-joinL`n ||

PS C:\Tools\Scripts\golfing> .\go-generate-some-java.ps1
public static boolean isPowerOfTen(long input) {
  return
    input == 1L
  || input == 10L
  || input == 100L
  || input == 1000L
  || input == 10000L
  || input == 100000L
  || input == 1000000L
  || input == 10000000L
  || input == 100000000L
  || input == 1000000000L
  || input == 10000000000L
  || input == 100000000000L
  || input == 1000000000000L
  || input == 10000000000000L
  || input == 100000000000000L
  || input == 1000000000000000L
  || input == 10000000000000000L
  || input == 100000000000000000L
  || input == 1000000000000000000L;
}

बहुत समय पहले ... :) बहुत प्रभावशाली!
माज़ी

4

पायथ, 118 106 103 बाइट्स

s[."
{Z-L¡JxÙÿ
LæÝ<­í?¢µb'¥ÜA«Ç}h¹äÚÏß"\nb*4dj"\n  || "ms[." uøs|ÀiÝ"*d\0\L)U19\;b\}

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

यह सब स्ट्रिंग हार्डकोडिंग वास्तव में बहुत सारे बाइट्स खाती है , लेकिन मैं इसके बारे में कुछ नहीं कर सकता

अद्यतन: एक पैक स्ट्रिंग का उपयोग करके 3 बाइट्स सहेजे गए। धन्यवाद @ user81655 संकेत के लिए!


आप पैक स्ट्रिंग्स का उपयोग कर सकते हैं ...
user81655

मैं Pyth पता नहीं है और मुझे यकीन है कि वहाँ पूर्ण स्ट्रिंग पैक करने के लिए कोई तरीका है नहीं कर रहा हूँ (पैकिंग कार्यक्रम हमेशा यह बदल जाएगा), लेकिन अप करने के लिए पैकिंग rऔर श्रृंखलाबद्ध nमें परिणाम यह (98 बाइट्स)।
user81655

@ user81655 धन्यवाद, पता नहीं था कि Pyth के पास यह था। :) यह केवल पहली बड़ी स्ट्रिंग थीओ को पैक करने के लिए समझ में आता है, आपके द्वारा तैयार किए गए ओवरहेड छोटे स्ट्रिंग के लिए इसके लायक नहीं है।
डेन्कर

@ user81655 मुझे इस बात की जानकारी है, लेकिन मैं 103 पात्रों की गिनती करता हूं। आप 97 तक कैसे पहुंचे?
डेनकर

उफ़, मेरी गलती, मैं उन्हें गलत गिन रहा था।
user81655

4

सी # (सीएसआई) 181 180 179 बाइट

string i=" input == 1",e="public static bool";Console.Write(e+@"ean isPowerOfTen(long input) {
  return
   "+i+string.Join(@"L
  ||"+i,e.Select((_,x)=>new string('0',x)))+@"L;
}")

इसमें केवल एक छोटी चाल शामिल है। इसे लिखने का सीधा आगे का तरीका यह होगा:

string.Join("L\n  || input == 1",Enumerable.Range(0,18).Select(x=>new string('0',x)))

पाठ के पहले 18 अक्षरों के साथ स्ट्रिंग का उपयोग करके जो मुझे किसी भी तरह की आवश्यकता है मुझे लंबे समय तक Enumerable.Range से छुटकारा मिल सकता है। यह काम करता है क्योंकि स्ट्रिंग IEnumerable लागू करता है और चयन का एक संस्करण है जो आइटम (आवश्यक नहीं) और उस अनुक्रमणिका को सौंपता है जिसे हम लंबो फ़ंक्शन के लिए चाहते हैं।


1
@WashingtonGuedes धन्यवाद
raggy

1
कृपया कुछ स्पष्टीकरण जोड़ें
Eumel

1
क्या CSI अभिव्यक्ति निकायों का समर्थन करता है? यदि ऐसा है, तो { return ... }द्वारा प्रतिस्थापित किया जा सकता है =>...
mınxomaτ

वर्तमान में कंप्यूटर पर नहीं है इसलिए मैं इसका परीक्षण नहीं कर सकता। क्या आखिरी वर्बेटिम स्ट्रिंग इसके अंदर ब्रैकेट से बच जाती है? या यह एक महान चाल है जो मुझे नहीं पता था? :)
यति

3

जावास्क्रिप्ट, 172 157 152 150 148 बाइट्स

p=>`public static boolean isPowerOfTen(long input) {
  return${[...Array(19)].map((x,i)=>`
  ${i?'||':' '} input == 1${'0'.repeat(i)}L`).join``};
}`


2
ES7 में आप ${10**i}इसके बजाय का उपयोग करके 9 बाइट्स बचा सकते हैं 1${'0'.repeat(i)}
नील

3

सी, 158 155 बाइट्स

i;main(){for(puts("public static boolean isPowerOfTen(long input) {\n  return");i<19;)printf("  %s input == 1%0.*dL%s\n",i++?"||":" ",i,0,i<18?"":";\n}");}

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


यदि आप i;main(){for(puts("public static boolean isPowerOfTen(long input) {\n return");printf(" %s input == 1%0.*dL%s\n",i++?"||":" ",i,0,i<18?"":";\n}")-37);}
प्रिंटफ

3

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

(ये जेली के कस्टम कोडपेज में बाइट्स हैं ।)

0r18⁵*;@€⁶j“¢œḤḅg^NrÞḢ⁷ẉ»“⁵®UẆƓḃÐL⁴ṖịṛFþẈ¹9}¶ ƁḋȮ¦sẒẆd€Ḟɼ¿ỌṀP^µ\f@»;;“L;¶}”

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

व्याख्या

0r18      Range [0..18]
⁵*        Take the 10^ of each number
;@€⁶      Prepend a space to each number
j“...»    Join by compressed string "L\n  || input =="
“...»;    Prepend compressed string "public static ... =="
;“L;¶}”   Append "L;\n}"

3

विम्सस्क्रिप्ट, 120 बाइट्स

साथ ही नौकरी के लिए सही उपकरण का उपयोग कर सकते हैं।

यह मानता है कि ऑटोइंडेंट आदि को सेट नहीं किया गया है। ^[और क्रमशः वर्णों और वर्णों के ^Mलिए भागने वाले वर्ण हैं।ESCCR

aमैक्रो वर्तमान पंक्ति डुप्लिकेट और नकल करने के लिए एक 0 कहते हैं। :normलाइन सब बॉयलरप्लेट और उत्पन्न करता है indent == 1Lलाइन, तो का उपयोग करता है aदूसरों को बनाने के लिए।

:let @a='yyp$i0^['
:norm ipublic static boolean isPowerOfTen(long input) {^M  return^M  || input == 1L^[18@a$a;^M}
:3s/||/ /

मामले में अनुगामी रिक्त स्थान दो नमूने पर नमूना उत्पादन टाइपोस नहीं थे, यहाँ एक 126 बाइट संस्करण है जो उन्हें शामिल करता है।

:let @a='yyp/L^Mi0^['
:norm ipublic static boolean isPowerOfTen(long input) {^M  return ^M  || input == 1L^[18@a$a;^M}   
:3s/||/ /

2

Oracle SQL 9.2, 311 बाइट्स

SELECT REPLACE(REPLACE('public static boolean isPowerOfTen(long input) {'||CHR(10)||'  return'||c||';'||'}', 'n  ||', 'n'||CHR(10)||'   '),CHR(10)||';', ';'||CHR(10)) FROM(SELECT LEVEL l,SYS_CONNECT_BY_PATH('input == '||TO_CHAR(POWER(10,LEVEL-1))||'L'||CHR(10),'  || ')c FROM DUAL CONNECT BY LEVEL<20)WHERE l=19

2

पर्ल 5 - 130 141

@s=map{'input == 1'.0 x$_."L\n  ||"}0..18;$s[$#s]=~s/\n  \|\|/;\n}/g;print"public static boolean isPowerOfTen(long input){\n  return\n    @s"

EDIT: सटीक इंडेंटेशन के लिए तय किया गया


सीमा के आसपास कोष्ठक का उपयोग करने की आवश्यकता नहीं है। परिवर्तन में सटीक इंडेंटेशन को पुन: पेश करना अच्छा होगा।
manatwork

कोष्ठक के लिए धन्यवाद कि मैं भूल गया। मैंने इसे सटीक इंडेंटेशन के लिए तय किया है।
चट्टरऑन

gप्रतिस्थापन के लिए ध्वज की कोई आवश्यकता नहीं है । जैसा कि आपके पास \nउस स्ट्रिंग में एक एकल है, आप बस इसे और इसके बाद के सभी चीजों से मेल खा सकते हैं $s[$#s]=~s/\n.+/;\n}/:। लेकिन एक joinआधारित एक अभी भी कम होगा: pastebin.com/hQ61Adt8
मैनटवर्क

धन्यवाद, लेकिन मुझे नहीं लगता कि यह अच्छा होगा यदि मैं सिर्फ आपके समाधान की नकल करता हूं और चिपकाता हूं, तो मैं इसे सिर्फ इसलिए छोड़ दूंगा क्योंकि यह मेरा अपना सर्वश्रेष्ठ प्रयास है। समय में, मैं गोल्फ में बेहतर हो
जाऊंगा

2

ईएस 6, 139 बाइट्स

_=>"0".repeat(19).replace(/./g,`
 || input == 1$\`L`).replace(`
 ||`,`public static boolean isPowerOfTen(long input) {
  return\n  `)+`;
}`

मैं इन त्रिकोण पीढ़ी के सवालों से बहुत प्यार करता हूं।


2

कोटलिन, 194 193 वर्ण

fun main(u:Array<String>){var o="public static boolean isPowerOfTen(long input) {\n\treturn"
var p:Long=1
for(k in 0..18){
o+="\n\t"
if(k>0)o+="||"
o+=" input == ${p}L"
p*=10
}
print("$o;\n}")}

इसका परीक्षण http://try.kotlinlang.org/ पर करें


प्रोग्रामिंग और कोड गोल्फ में आपका स्वागत है। पहला उत्तर अच्छा है, लेकिन कृपया एक ऑनलाइन दुभाषिया के लिए एक लिंक जोड़ें या इस कार्यक्रम को चलाने के तरीके पर एक उदाहरण जोड़ें, ताकि अन्य इसे सत्यापित कर सकें। हालांकि, यहाँ एक महान समय है! :)
डेनकर

2

रूबी, 125 119 बाइट्स

$><<'public static boolean isPowerOfTen(long input) {
  return
   '+(0..19).map{|i|" input == #{10**i}L"}*'
  ||'+';
}'

-6 बाइट्स के लिए मैनटवर्क का धन्यवाद !


बहुत सारे मूल नहीं हैं क्योंकि अधिकांश समाधान इस तरह से कर रहे हैं, लेकिन अभी भी छोटे हैं: pastebin.com/1ZGF0QTs
manatwork

2

jq, 123 वर्ण

(121 वर्ण कोड + 2 वर्ण कमांड लाइन विकल्प।)

"public static boolean isPowerOfTen(long input) {
  return
   \([range(19)|" input == 1\("0"*.//"")L"]|join("
  ||"));
}"

नमूना रन:

bash-4.3$ jq -nr '"public static boolean isPowerOfTen(long input) {
>   return
>    \([range(19)|" input == 1\("0"*.//"")L"]|join("
>   ||"));
> }"'
public static boolean isPowerOfTen(long input) {
  return
    input == 1L
  || input == 10L
  || input == 100L
  || input == 1000L
  || input == 10000L
  || input == 100000L
  || input == 1000000L
  || input == 10000000L
  || input == 100000000L
  || input == 1000000000L
  || input == 10000000000L
  || input == 100000000000L
  || input == 1000000000000L
  || input == 10000000000000L
  || input == 100000000000000L
  || input == 1000000000000000L
  || input == 10000000000000000L
  || input == 100000000000000000L
  || input == 1000000000000000000L;
}

ऑन-लाइन परीक्षण ( -rURL से गुजरना समर्थित नहीं है - रॉ आउटपुट को स्वयं देखें)


1

जावास्क्रिप्ट 175 बाइट्स

इसे नियमित रूप से करें

var s = "public static boolean isPowerOfTen(long input) {\n\treturn\n\t\tinput == 1";
for (var i = 1; i < 20; i++) {
    s += "\n\t|| input == 1";
    for (var j = 0; j < i; j++) {
        s += "0";
    }
    s += "L" ;
}
s += ";\n}";
alert(s);

बहुत छोटा। अब, कुछ जावास्क्रिप्ट जादू, जैसे कि अर्धविराम की जरूरत नहीं है, या कोई संस्करण नहीं है, आदि ।:

k="input == 1"
s="public static boolean isPowerOfTen(long input) {\n\treturn\n\t\t"+k+"L"
for(i=1;i<20;i++){s+="\n\t|| "+k
for(j=0;j<i;j++)s+="0";s+="L"}s+=";\n}"
alert(s)

क्या आप बता सकते हैं कि जादू कैसे काम करता है? :)
मार्व

3
जावास्क्रिप्ट अर्धविरामों के बारे में परवाह नहीं करता है, कम से कम तब तक जब तक कि कीवर्ड (के लिए, जबकि, var, आदि) कुछ और "छू" नहीं रहे हैं। इसके अलावा, यदि आप var कीवर्ड का उपयोग नहीं करते हैं, तो आपको वैश्विक चर मिलते हैं, जो कि अब तक की प्रोग्रामिंग भाषा में मैंने अब तक देखी सबसे खराब विशेषता है।
बैलिंट

@ Bálint। यह सबसे खराब विशेषता क्यों होगी ?
हटा दिया

@WashingtonGuedes आप जानते हैं, अधिकांश भाषाएँ आपको याद दिलाती हैं कि क्या आपने किसी फ़ंक्शन के अंदर कुछ गलत किया है। क्योंकि जावास्क्रिप्ट ऐसा लगता है कि जैसे आपने एक नया चर बनाया है, यह उस बारे में कुछ भी कहने वाला नहीं है।
Bálint

इसके अलावा, एक ही सही पर लौटने के लिए लागू होता है।
Bálint

1

पायथन (3.5) 137 136 बाइट्स

print("public static boolean isPowerOfTen(long input) {\n  return\n   ",'\n  || '.join("input == %rL"%10**i for i in range(19))+";\n}")

पुराना वर्जन

print("public static boolean isPowerOfTen(long input) {\n  return\n   ",'\n  || '.join("input == 1"+"0"*i+"L"for i in range(19))+";\n}")

१३५ पायथन print "public static boolean isPowerOfTen(long input) {\n return\n %s;\n}"%"\n || ".join("input == %r"%10L**i for i in range(19))
२.

@ एमूईओईपी आप सही कह रहे हैं,% r विन 1 बाइट्स का उपयोग और पायथन 2 print(कोष्ठक के बिना) एक और एक जीत
एरवन

0

एएनएसआई-एसक्यूएल, 252 वर्ण

WITH t as(SELECT '   'x,1 c,1 l UNION SELECT'  ||',c*10,l+1 FROM t WHERE l<19)SELECT 'public static boolean isPowerOfTen(long input) {'UNION ALL SELECT'  return 'UNION ALL SELECT x||' input == '||c||'L'||SUBSTR(';',1,l/19)FROM t UNION ALL SELECT'}   ';

Ungolfed:

WITH t as (SELECT '   ' x,1 c,1 l UNION
           SELECT '  ||',c*10,l+1 FROM t WHERE l<19)
SELECT 'public static boolean isPowerOfTen(long input) {' UNION ALL
SELECT '  return ' UNION ALL
SELECT x||' input == '||c||'L'||SUBSTR(';',1,l/19) FROM t UNION ALL
SELECT '}   ';

कोई गंभीर प्रयास नहीं है, बस ओरेकल एसक्यूएल / टी-एसक्यूएल प्रविष्टियों को देख रहा हूँ।


40 अतिरिक्त वर्णों के लिए मैं "दोहरी से" जोड़ सकता हूं और इसे "ओरेकल एसक्यूएल" प्रविष्टि बना सकता हूं।
user1361991

0

जावास्क्रिप्ट (Node.js), 156 बाइट्स

s="public static boolean isPowerOfTen(long input) {\n  return "
for(i=1;i<1e19;i*=10)s+="\n  "+(i-1?"||":" ")+" input == "+i+"L"
console.log(s+";\n}   \n")

यह i-1केवल पहले ही राउंड पर 0 (और इस तरह फाल्सी) होगा (यह सिर्फ इससे थोड़ा छोटा है i!=1

सुझावों का स्वागत है!


0

पर्ल 5, 137 बाइट्स

पिछले पर्ल उत्तर पर आधारित नहीं है, लेकिन यह किसी भी तरह कम है। मेरा मानना ​​है कि लूप के अंदर पहले "इनपुट" का ख्याल रखते हुए इसे फिर से छोटा किया जा सकता है, लेकिन मैंने अभी तक कुछ भी करने की कोशिश नहीं की (काम पर)

$i="input";for(1..18){$b.="  || $i == 1"."0"x$_."L;\n"}print"public static boolean isPowerOfTen(long $i) {\n  return\n    $i == 1L;\n$b}"

0

सीजेएम, 112 वर्ण

"public static boolean isPowerOfTen(long input) {
  return
    input == 1"19,"0"a19*.*"L
  || input == 1"*"L;
}"

0

AWK + शेल, 157 बाइट्स

echo 18|awk '{s="input == 1";printf"public static boolean isPowerOfTen(long input) {\n return\n    "s"L";for(;I<$1;I++)printf"\n  ||%sL",s=s"0";print";\n}"}'

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


यहां से गुजरने वाला तार पाइपिंग से छोटा है echo:awk '…'<<<18
manatwork

मैं यहाँ-फाइल के बारे में जानता था लेकिन यहाँ स्ट्रिंग नहीं। जानकारी के लिए धन्यवाद।
रॉबर्ट बेन्सन

0

T-SQL 289 , 277 , 250 , 249 बाइट्स

SELECT'public static boolean isPowerOfTen(long input){return '+STUFF((SELECT'||input=='+N+'L 'FROM(SELECT TOP 19 FORMAT(POWER(10.0,ROW_NUMBER()OVER(ORDER BY id)),'F0')N FROM syscolumns)A FOR XML PATH(''),TYPE).value('.','VARCHAR(MAX)'),1,2,'')+';}'

अपडेट: धन्यवाद @Bridge, मुझे कुछ और स्थान भी मिले :)

Update2: CTE को उप -27 चार्ट में बदला गया :) अद्यतन 3 : एक और स्थान धूल को काटता है @bridge :)


1
मैं बाकी कोडों को बदले बिना 7 और रिक्त स्थान (282 बाइट्स) को ट्रिम करने में सक्षम था:WITH A AS(SELECT CAST('1'AS VARCHAR(20))N UNION ALL SELECT CAST(CONCAT(N,'0')AS VARCHAR(20))FROM A WHERE LEN(N)<20)SELECT'public static boolean isPowerOfTen(long input){return '+STUFF((SELECT'|| input=='+N+'L 'FROM A FOR XML PATH(''),TYPE).value('.', 'VARCHAR(MAX)'), 1, 3, '')+';}'
पुल

1
अब मैं पीछे देखता हूं मैं अपनी मूल टिप्पणी में सभी अतिरिक्त रिक्त स्थान देख सकता हूं! मुझे एक और जगह मिल गई है जिससे आप छुटकारा पा सकते हैं - एक के तुरंत बादROW_NUMBER()
ब्रिज

0

आर, 185 बाइट्स

golfed

options(scipen=999);p=paste;cat(p("public static boolean isPowerOfTen(long input) {"," return",p(sapply(0:19,function(x)p(" input == ",10^x,"L",sep="")),collapse="\n ||"),"}",sep="\n"))

Ungolfed

options(scipen=999)
p=paste
cat(
  p("public static boolean isPowerOfTen(long input) {",
        " return",
        p(sapply(0:19,function(x)p(" input == ",10^x,"L",sep="")),collapse="\n ||"),
        "}",
        sep="\n")
)

0

पर्ल 6 (115 बाइट्स)

say "public static boolean isPowerOfTen(long input) \{
  return
   {join "L
  ||",(" input == "X~(10 X**^19))}L;
}"

Xऑपरेटर कार्टेशियन उत्पाद संचालन को सूचीबद्ध करता है, उदाहरण के लिए 10 X** ^19दस की शक्ति देता है (10 से 0 से 19 की शक्ति के रूप में ^, एक रेंज ऑपरेटर है जो 0 से मायने रखता है)। स्ट्रिंग्स में कोड ब्लॉक हो सकते हैं {(यही वजह है कि मैं इसके पहले उदाहरण से बच जाता हूं)।


0

जावा, 210/166

स्कोर इस बात पर निर्भर करता है कि किसी फ़ंक्शन से इनपुट वापस करना 'आउटपुट' की परिभाषा को पूरा करता है या नहीं।

कंसोल आउटपुट (210):

class A{public static void main(String[]z){String a=" input == 1",t="L\n  ||"+a,s="public static boolean isPowerOfTen(long input) {\n  return\n   "+a;for(int i=0;++i<19;)s+=t+="0";System.out.print(s+"L;\n}");}}

स्ट्रिंग रिटर्न (166):

String a(){String a=" input == 1",t="L\n  ||"+a,s="public static boolean isPowerOfTen(long input) {\n  return\n   "+a;for(int i=0;++i<19;)s+=t+="0";return s+"L;\n}";}

कानूनी संस्करण:

String a() {
    String a=" input == 1", t = "L\n  ||"+a,
        s = "public static boolean isPowerOfTen(long input) {\n  return\n   "+a;
    for (int i = 0; ++i < 19;)
        s += t += "0";
    return s + "L;\n}";
}

0

बैच, 230 208 206 205 बाइट्स

@echo off
echo public static boolean isPowerOfTen(long input) {
echo   return
set m=input == 1
echo    %m%L
for /l %%a in (1,1,17)do call:a
call:a ;
echo }
exit/b
:a
set m=%m%0
echo  ^|^| %m%L%1

संपादित करें: input ==अतिरिक्त अर्धविराम के साथ पंक्ति के लिए सबरूटिन को दोहराने और पुन: उपयोग करने से बचने के द्वारा 22 बाइट्स सहेजे गए । सहेजा 2 अनावश्यक रिक्त स्थान को हटाने के द्वारा 3 बाइट्स।


क्या आपको आसपास रिक्त स्थान की आवश्यकता है ==?
पावेल

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