কিছু জাভা উত্পন্ন করুন


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 এ )

যা দক্ষ এবং তাই, কিন্তু মজা টাইপ করতে না। যেহেতু আপনাকে কী-চাপগুলি করতে হবে তার সংখ্যা হ্রাস করতে চান, আপনি একটি সংক্ষিপ্ত প্রোগ্রাম বা ফাংশন (বা পদ্ধতি) লিখুন যা এই ফাংশনটিকে আপনার জন্য আউটপুট করে (বা আউটপুটে একটি স্ট্রিং প্রদান করে)। এবং যেহেতু আপনার ইউনিকোড ৮.০ এর জন্য প্রয়োজনীয় সমস্ত 120,737 কী সহ আপনার নিজস্ব নিজস্ব কাস্টম পূর্ণ-পরিসরের ইউনিকোড কীবোর্ড রয়েছে, তাই আমরা কীপ্রেসের পরিবর্তে ইউনিকোড অক্ষর গণনা করি। বা বাইটস, যদি আপনার ভাষা ইউনিকোড উত্স কোড ব্যবহার করে না।

আপনার প্রোগ্রাম বা ফাংশন যে কোনও ইনপুট আপনার স্কোরের পক্ষে গণনা করে, যেহেতু আপনাকে অবশ্যই এটি টাইপ করতে হবে।

স্পষ্টতা এবং সম্পাদনাগুলি:

  • শেষের পরে 3 টি ট্রেলিং স্পেস সরানো হয়েছে }
  • এর পরে একটি একক ট্রেলিং স্পেস সরানো হয়েছে return
  • কোনও ফাংশন / পদ্ধতি থেকে আউটপুটের স্ট্রিং ফিরিয়ে দেওয়া ঠিক

12
0==Math.log10(input)%1
সুপারজেডি ২৪

7
আপনি বলতে " আমরা ইউনিকোড অক্ষর গণনা ," কিন্তু তারপর আপনি অবিলম্বে বলুন " অথবা বাইট ।" এটা কোনটা?
ডোরকনবব

2
আপনি যাকে পছন্দ করেন, অর্থাত্ আপনাকে সবচেয়ে কম স্কোর দেয়। পাঠ্য উত্স ব্যবহার না করে এমন ভাষাগুলিকে অনুমতি দেওয়ার জন্য বাইট যুক্ত করা হয়েছে।
ফিলিপ হাগলুন্ড

1
while(input%10==0) input/=10; return input == 1;
পিএসকোকিক

4
05 এ বি 1 ই উইন্ডোজ সিপি 1252 ব্যবহার করে যা বাইট, ইউনিকোড নয়। আমি স্ট্যান্ডার্ড বিধিগুলির জন্য লক্ষ্য রাখছি, তবে আমি বলি যে আমি সব সময় ভুল।
ফিলিপ হাগলুন্ড

উত্তর:


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

কোড গল্ফ উত্তর হিসাবে ব্যবহৃত আরডিবিএমএস আমি কখনও দেখিনি ... মিষ্টি! +1
ক্রিস ক্রেফাইস

@ ক্রিসিসায়ারফাইস এসকিউএল এই সাইটে আসলে কিছুটা সাধারণ। (বা কমপক্ষে একজনের প্রত্যাশার চেয়ে কম সাধারণ))
অ্যালেক্স এ।

@AlexA। হুঁ, ভাল PCG আমার কম frequented দঃপূঃ সাইট এক, তাই আমি একটি এসকিউএল উত্তর :) দেখেননি করেছি
ক্রিস Cirefice

7

ভিম 97 কীস্ট্রোক

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

ঠিক আছে, আমি আজ ভিমে উত্পাদন করে জাভা তৈরির সাথে রোল করছি, তবে কেন এই প্রবণতাটি চালিয়ে যাবেন না!


এর সাথে প্রতিস্থাপন fLকরা $আপনাকে একটি কীস্ট্রোক বাঁচাতে পারে
লিকি নুন

এছাড়াও, তৃতীয় লাইনটি input == 1Lএকটি বাইট দ্বারা ভুল উপায়ে ...
Leaky Nun

সুতরাং সর্বশেষে xপরিবর্তন করা উচিত r<sp>এবং তারপরে কী-স্ট্রোকের সংখ্যাটি অপরিবর্তিত থাকবে
Leaky Nun


7

সিজেম, 52 অক্ষর

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

এটি অনলাইন চেষ্টা করুন!

ধাপ 1

ইউনিকোড অক্ষর U + 10000 থেকে U + 10FFFF ব্যবহার করে, আমরা একক অক্ষরে 20 বিটগুলি এনকোড করতে পারি। CJam 16 বিট অক্ষর অভ্যন্তরীণভাবে ব্যবহার করে, তাই প্রতিটি এক এক জোড়া হিসাবে এনকোডেড হবে surrogates , U- + + DBFF করার U + এ D800 থেকে সীমার মধ্যে এক, ইউ + + DFFF করার U + এ DC00 থেকে সীমার মধ্যে এক করে।

1023 এর সাথে প্রতিটি সারোগেটের বিটওয়াইস এবং গ্রহণ করে আমরা 10 টি বিটগুলি এনকোড করে প্রাপ্ত করি। আমরা ফলাফলটি অ্যারেটি 1024 থেকে বেস 128 তে রূপান্তর করতে পারি ইউনিকোড অক্ষরের একটি নির্বিচার স্ট্রিংটিকে বিএমপির বাইরে একটি এএসসিআইআই স্ট্রিংয়ে ডিকোড করতে dec

কোড নিম্নলিখিতটি করে:

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.

ধাপ ২

উপরের থেকে ডিকোডিং প্রক্রিয়াটি নিম্নলিখিত উত্স কোডটি ( 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;
}"

আপনি আশা করতে পারেন যে ইহুদিবাদের মতো কোনও এসই সাইটটি সাইটের ইউনিকোড সমর্থনকে স্ট্রেস-টেস্ট করে তবে এটি পাগল: ডি
ফিলিপ হাগলুন্ড

আমি উদ্ধৃতি চিহ্নগুলির মধ্যে দুটি অক্ষর দেখতে পাচ্ছি। আপনি কি হেক্সডাম্প পোস্ট করতে পারেন?
পাভেল

আপনি কি তাদের দুটি দেখতে পাচ্ছেন? আমার তেমন কোনও ভাগ্য নেই ... ইউটিএফ -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 বাইট: ব্যবহারকারী 902383
-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।
সাইয়েস

পরিবর্তে 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;)
ডেনহাম কোট

5

পাওয়ারশেল, 120 বাইট

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

প্রথম দুটি লাইন হ'ল স্ট্রিং লিটারাল, যা আউটপুট হিসাবে হয়।

তৃতীয় লাইনটি তিনটি স্পেস দিয়ে শুরু হয় এবং শেষ L;`n}"দম্পতি বাইটগুলি শেষ করে শেষ হয়। স্ক্রিপ্ট ব্লকের মাঝের বিটটি $(...)লুপিং %থেকে প্রতিটি লৌকিক দ্বারা নির্মিত 0হয় 18এবং প্রতিটি পুনরাবৃত্তি একটি স্ট্রিং তৈরি করে যা input == 1শূন্যের সাথে সম্পর্কিত সংখ্যার সাথে মিলিত হয়। এটি স্ট্রিংগুলির একটি অ্যারেরকে ছিটিয়ে দেবে। আমরা তারপরে -joinঅ্যারের প্রতিটি উপাদান L`n ||দিয়ে নিউলাইন-পাইপগুলি অর্জন করি। সেই বড় স্ট্রিংটি হ'ল স্ক্রিপ্ট ব্লকের আউটপুট, যা স্বয়ংক্রিয়ভাবে মাঝখানে এবং আউটপুটে sertedোকানো হয়।

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;
}

অনেক দিন আগে ... :) খুব চিত্তাকর্ষক!
mazzy

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 বাইট সংরক্ষণ করা হয়েছে। ইঙ্গিতটির জন্য @ ব্যবহারকারী 81655 ধন্যবাদ!


আপনি প্যাকযুক্ত স্ট্রিংগুলি ব্যবহার করতে পারেন ...
ব্যবহারকারীর ১165৫৫

আমি Pyth জানি না এবং আমি নিশ্চিত সেখানে পূর্ণ স্ট্রিং প্যাক করার কোন রাস্তা আছে কিনা নই (প্যাকিং প্রোগ্রাম সবসময় এটা পরিবর্তন হবে) কিন্তু বোঁচকা আপ rএবং concatenating nফলাফল এই (98 বাইট)।
ব্যবহারকারী 81655

@ user81655 ধন্যবাদ, পাইথের জানা ছিল না এটি ছিল th :) এটি কেবল প্রথম বড় স্ট্রিংটি প্যাক করার জন্য অর্থবোধ করে, আপনি যে ওভারহেডটি ফর্মটি আনপ্যাকিং করেন তা ছোট স্ট্রিংয়ের জন্য উপযুক্ত নয়।
ডেনকার

@ ব্যবহারকারী81655 আমি এটি সম্পর্কে অবগত, তবে আমি 103 টি অক্ষর গণনা করি। আপনি কিভাবে 97 পেয়েছেন?
ডেনকার

উফফফফ, আমার ভুল, আমি তাদের ভুল গণনা করছিলাম।
ব্যবহারকারী81655

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 টি অক্ষরের সাথে স্ট্রিংটি ব্যবহার করে যা আমার যাই হোক না কেন আমি লম্বা এনুম্যারেবল থেকে মুক্তি পেতে পারি an এটি কাজ করে কারণ স্ট্রিংটি আইমনামেবল প্রয়োগ করে এবং সেখানে সিলেক্টের একটি সংস্করণ রয়েছে যা আইটেমটি (প্রয়োজনীয় নয়) এবং সূচকটি যা আমরা ল্যাম্বদা ফাংশনে দেখতে চাই তা হ্যান্ডস করে।


1
@ ওয়াশিংটনগুয়েডস ধন্যবাদ
রাগি

1
কিছু ব্যাখ্যা যুক্ত করুন
Eumel

1
সিএসআই কি অভিব্যক্তি সংস্থাগুলি সমর্থন করে? যদি তা হয় { return ... }তবে এর মাধ্যমে প্রতিস্থাপন করা যেতে পারে =>...
mxnxomaτ

বর্তমানে কম্পিউটারে নেই তাই আমি এটি পরীক্ষা করতে পারছি না। শেষ ভারব্যাটিম স্ট্রিংটি কি এর ভিতরে বন্ধনীটি ছেড়ে যায়? নাকি এটি এমন দুর্দান্ত কৌশল যা আমি জানতাম না? :)
ইয়াতসি

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 এ আপনি 9 টি বাইটের ${10**i}পরিবর্তে ব্যবহার করে সঞ্চয় করতে পারবেন 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পলায়নের অক্ষর ESCএবংCR যথাক্রমে অক্ষরগুলির ।

aম্যাক্রো বর্তমান লাইন সদৃশ এবং অনুলিপির 0 যোগ করে। :normলাইন সব boilerplate, এবং উত্পন্ন 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

ওরাকল এসকিউএল 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"

সম্পাদনা: সঠিক ইনডেন্টেশন নির্দিষ্ট করা হয়েছে


ব্যাপ্তির চারপাশে প্রথম বন্ধনী ব্যবহার করার দরকার নেই। পরিবর্তনে সঠিক ইন্ডেন্টেশনটি পুনরায় উত্পাদন করতে ভাল লাগবে।
manatwork

আমি ভুলে যাওয়া প্রথম বন্ধনী জন্য ধন্যবাদ। আমি ঠিক ইন্ডেন্টেশনটি স্থির করেছি।
চ্যাটারঅন

gপ্রতিস্থাপনের জন্য পতাকাটির দরকার নেই । এছাড়াও হিসাবে আপনি একটি একক আছে \nযে স্ট্রিং, তবে আপনি এটিকে কেবল মেলাতে পারে এবং এটি পরে সবকিছু: $s[$#s]=~s/\n.+/;\n}/। তবে একটি join
ভিত্তিযুক্তটি আরও

আপনাকে ধন্যবাদ, তবে আমি মনে করি না যে আমি আপনার সমাধানটি কেবল অনুলিপি করে পেস্ট করেছি তবে এটি ভাল লাগবে, তাই আমি এটি কেবল নিজের সেরা প্রচেষ্টা হিসাবে ছেড়ে দেব। সময়মতো, আমি গল্ফিংয়ে আরও ভাল হয়ে যাব :-)
চ্যাটারঅন

2

ES6, 139 বাইট

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

আমি এই ত্রিভুজ প্রজন্মের প্রশ্নগুলিকে ভালবাসি।


2

Kotlin, 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://ry.kotlinlang.org/ এ পরীক্ষা করুন


প্রোগ্রামিং ধাঁধা এবং কোড গল্ফ স্বাগতম। প্রথমে উত্তম উত্তর, তবে দয়া করে কোনও অনলাইন দোভাষীকে একটি লিঙ্ক যুক্ত করুন বা কীভাবে এই প্রোগ্রামটি চালানো যায় সে সম্পর্কে একটি উদাহরণ যুক্ত করুন, যাতে অন্যরা এটি যাচাই করতে পারে। তবে, এখানে একটি দুর্দান্ত সময় কাটান! :)
ডেনকার

2

রুবি, 125 119 বাইট

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

-6 বাইট জন্য manatwork ধন্যবাদ !


বেশিরভাগ সমাধানগুলি এইভাবে করছে বলে খুব বেশি আসল নয়, তবে আরও খাটো: পেস্টবিন.
com/

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;
}

অন-লাইন পরীক্ষা ( -rইউআরএল মাধ্যমে পাস করা সমর্থিত নয় - কাঁচা আউটপুট নিজেই দেখুন)


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 ইত্যাদি) অন্য কিছু "স্পর্শ" না করে। এছাড়াও, যদি আপনি ভ্যার কীওয়ার্ডটি ব্যবহার না করেন তবে আপনি বিশ্বব্যাপী ভেরিয়েবল পাবেন যা এখন পর্যন্ত একটি প্রোগ্রামিং ভাষায় আমি দেখা সবচেয়ে খারাপ বৈশিষ্ট্য।
বিলিন্ট

@ 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}")

পাইথন ২.7 সহ ১৩৫: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 টি অতিরিক্ত অক্ষরের জন্য আমি "দ্বৈত থেকে" যুক্ত করতে এবং এটি একটি "ওরাকল এসকিউএল" এন্ট্রি করতে পারি।
ব্যবহারকারী 1361991

0

জাভাস্ক্রিপ্ট (নোড.জেএস), 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 বাইট

পূর্ববর্তী পার্ল উত্তরের উপর ভিত্তি করে নয়, তবে এটি কোনওভাবেই খাটো। আমি বিশ্বাস করি লুপের অভ্যন্তরে প্রথম "ইনপুট" এর যত্ন নিয়ে আবার এটি সংক্ষিপ্ত করা যেতে পারে, তবে আমি এখনও কিছু চেষ্টা করি নি (কাজের atm)

$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

সিজেম, ১১২ টি চর

"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}"}'

প্রশ্নটি আপনাকে টাইপ করতে হবে এমন সমস্ত কিছু গণনা করতে বলেছে। বস যখন অনিবার্যভাবে তাঁর মন পরিবর্তন করেন তখন এই পাওয়ারওয়ার্সফটেন পদ্ধতিতে কয়টি লাইন স্থাপন করা হবে তা নির্বাচন করতে সক্ষম হওয়ার যুক্ত বোনাস রয়েছে।


এখানে স্ট্রিং পাস করা echoawk '…'<<<18
পাইপিংয়ের

আমি এখানে ফাইল সম্পর্কে জানতাম তবে এখানে স্ট্রিং নয়। তথ্যের জন্য ধন্যবাদ।
রবার্ট বেনসন

0

টি-এসকিউএল 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,'')+';}'

আপডেট: ধন্যবাদ @ ব্রিজ, আমি আরও কয়েকটি স্পেস পেয়েছি :)

আপডেট 2: সিটিই সাব-কেয়ারিতে পরিবর্তিত হয়েছে -২ cha অক্ষর :) আপডেট3: অন্য একটি স্থান ধুলায় কাটছে @ ব্রিজ :)


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 বাইট।


আপনার চারপাশে ফাঁকা জায়গা দরকার ==?
পাভেল

@ পাভেল এটি কোড নয়; এটি আউটপুট অংশ।
ডেনিস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.