কোড গল্ফ পরিমাপক © 2019


20

কোড গল্ফ পরিমাপক © 2019

হেক্সডাম্পস চেহারাটির সাথে xxdএরকম কিছু দেখায়:

00000000: 666f 6f20 6261 7220 7370 616d 2065 6767  foo bar spam egg
00000010: 730a                                     s.

আপনার কাজটি হ'ল এই ফর্মের একটি হ্যাক্সডাম্পকে ব্যবহৃত বাইটের সংখ্যায় রূপান্তর করা।

নিয়মাবলী:

  • সাধারণ লুফোলগুলি নিষিদ্ধ।
  • এটি , তাই বাইট জেতে সংক্ষিপ্ততম বৈধ উত্তর।
  • আপনি পাঠ্য ( 0a) এর শেষে নতুন লাইনটি অন্তর্ভুক্ত করতে পারেন বা নাও করতে পারেন । এর অর্থ হ্যাক্সডাম্প যদি একটি নতুন লাইনে ( 0a) শেষ হয় তবে সেই ইনপুটটির এটির আউটপুট একরকম হ্রাস পেতে পারে।
  • একটি খালি ইনপুট (আক্ষরিক কিছুই নয়: খালি তালিকা / স্ট্রিং / ইত্যাদি)) অবশ্যই আউটপুট দেয়।
  • ইনপুট যে কোনও আকারে নেওয়া যেতে পারে
  • ইনপুটটি কোনও নিয়ন্ত্রণ অক্ষর ছাড়াই বৈধ ASCII হবে
  • ইনপুটটিতে অবশ্যই পুরো হেক্সডাম্প থাকতে হবে

পরীক্ষার কেস:

00000000: 4865 6c6c 6f2c 2077 6f72 6c64 2120 4865  Hello, world! He
00000010: 6c6c 6f2c 2077 6f72 6c64 210a            llo, world!.

28 বা 27 ফেরত দেয়

00000000: 0a                                       .

1 বা 0 প্রদান করে

00000000: 6368 616c 6c65 6e67 650a                 challenge.

10 বা 9 প্রদান করে

00000000: 4865 6c6c 6f2c 2077 6f72 6c64 21         Hello, world!

13 রিটার্ন


0 প্রদান করে (এটি আক্ষরিক কিছুই নয়: খালি তালিকা / স্ট্রিং / ইত্যাদি))

অ-মানক ভাষার জন্য ব্যাখ্যাগুলি ভাল লাগবে।


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

@ স্টিভিগ্রিফিন হ্যাঁ; কোন; হ্যাঁ; কারণ যদি xxdখালি স্ট্রিং খাওয়ানো হয় তবে এটি কিছুই করে না।
gadzooks02

1
@ স্টিভি গ্রিফিন আমি উত্তর দেওয়ার সময় আপনি আপনার মন্তব্য সম্পাদনা করেছেন, সুতরাং এখানে একটি সম্প্রসারণ: হ্যাঁ; না; এটি আপনি চাইলে ইনপুট হতে পারে, পুরো ডাম্প অন্তর্ভুক্ত করা হয়; শেষ উত্তর দেখুন; হ্যাঁ; কারণ যদি
এক্সএক্সডিকে

1
@ জোনাথান অ্যালান ওহ হ্যাঁ, ভাল দাগযুক্ত।
gadzooks02

1
ডানদিকে ASCIIified ডেটা অন্তর্ভুক্ত না এমন একটি হ্যাক্সডাম্প ফর্ম্যাট গণনা আকর্ষণীয় হতে পারে। প্রত্যেকে কেবলমাত্র হেক্স অংশটি কেটে নিয়ে বাকী গণনা করে চলেছে। যদি চ্যালেঞ্জ হ'ল হেক্সডাম্পের কেবল শেষ লাইনটি দেওয়া থাকে তবে এটি হেক্স নম্বর (অবস্থান) পার্স করার পাশাপাশি সেই লাইনে হেক্স সংখ্যার সংখ্যা গণনা করতে বাধ্য করবে। (যেমনটি আমি মেশিন-কোড উত্তরের জন্য objdumpবিশৃঙ্খলা বা nasmতালিকা দেখার সময় হাতে হাতে করি hand ) আমি অনুমান করি যে এটি স্যান্ডবক্সে পোস্ট করা উচিত ...
পিটার কর্ডেস

উত্তর:


12

রেটিনা 0.8.2 , 8 বাইট

.{51}

.

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

.{51}

প্রতিটি লাইনের প্রথম 51 টি অক্ষর মুছুন। (রেখাগুলিতে কেবল 52 থেকে 67 টির মধ্যে অক্ষর থাকতে পারে, তাই এটি সর্বদা লাইন প্রতি একবার মেলে)

.

বাকী অ-নিউলাইন অক্ষর গণনা করুন।

খালি ইনপুটটি সমর্থন করতে না হলে 7 বাইট:

.{52}


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

.{52}

প্রতিটি লাইনের প্রথম 52 টি অক্ষর মুছুন। (রেখাগুলিতে কেবল 52 থেকে 67 টির মধ্যে অক্ষর থাকতে পারে, তাই এটি সর্বদা লাইন প্রতি একবার মেলে)


অবশিষ্ট অক্ষরের সংখ্যার চেয়ে 1 টি বেশি গণনা করুন (নিউলাইনগুলি সহ)।


সাথে 7 &`.{52}
গ্রিমি

@ গ্রিমি এটি ঠিক ... দুর্দান্ত ... আপনাকে অবশ্যই এটি নিজের উত্তর হিসাবে পোস্ট করতে হবে।
নিল

আমি এটা প্রথমে খেয়ালই করেন নি কিন্তু আসলে সেখানে ইতিমধ্যই থাকা একটি প্রায় অভিন্ন উত্তর
গ্রিমি




5

এপিএল (ডায়ালগ প্রসারিত) , 18 বাইট

পুরো প্রোগ্রাম। স্ট্রিংগুলির তালিকার জন্য অনুরোধ করা হয় (অর্থাত্ অক্ষরের তালিকাগুলির জন্য)।

2÷⍨≢∊(1↓≠⊆⊢)¨49↑¨⎕

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

 শীঘ্র

49↑¨ প্রতিটি থেকে প্রথম 49 টি অক্ষর নিন

(প্রত্যেকের জন্য নিম্নলিখিত সূক্ষ্ম ফাংশন প্রয়োগ করুন:

 যুক্তি

 অক্ষর যে রান মধ্যে কাটা

 প্যাডিং চরিত্রের চেয়ে আলাদা (স্থান)

1↓ প্রথম "শব্দ" ফেলে দিন

ε nlist (চেপ্টা)

 মিল

2÷⍨ দুই দ্বারা বিভক্ত


4

জেলি , 5 বাইট

Ẉ_51S

একটি মোনাডিক লিঙ্ক লাইনের একটি তালিকা গ্রহণ করে যা পূর্ণসংখ্যার বাইট গণনা দেয়।

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

কিভাবে?

Ẉ_51S - Link: list of lists of characters, H
Ẉ     - length of each (line in H)
  51  - literal fifty-one
 _    - subtract (vectorises)
    S - sum

আপনি লাইনের একটি তালিকা গ্রহণ করতে পারেন। এছাড়াও, আপনি কি একটি ব্যাখ্যা যুক্ত করতে যত্ন নেবেন?
gadzooks02

আহ শীতল, তাই খালি ইনপুটটি কি খালি তালিকা বা একক ফাঁকা লাইনের সাথে একটি তালিকা? (এটি পোস্টে স্পষ্ট করে দেওয়া উচিত, কারণ এটি একটি কিনারা-মামলা)
জোনাথন অ্যালান

এটি এবং খালি তালিকা / স্ট্রিং / ইত্যাদি। আমি সবেমাত্র এটি স্পষ্ট করে দিয়েছি।
gadzooks02 2

ধন্যবাদ, ব্যাখ্যা এখন খুব যোগ করা হয়েছে।
জোনাথন অ্যালান

3

সি (জিসিসি) , 64 55 বাইট

r;s[];f(l){while(*s=0,gets(s),l=strlen(s))r+=l-51;l=r;}

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

ওয়াইএসসির জন্য 9 বাইট শেভ করে!

এখানে আরনাউল্ড জাভাস্ক্রিপ্ট সমাধান দ্বারা অনুপ্রাণিত আরও ভঙ্গুর সংস্করণ যা সম্ভবত দীর্ঘ ইনপুটগুলির জন্য ব্যর্থ:

সি (জিসিসি) , 50 বাইট

s[];f(l){l=read(0,s,1<<31);l=l?l/68*16+l%68-51:0;}

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


1
59 বাইট পরিবর্তন return rকরেl=r
girobuz

2
@ জোনাথানফ্রেচ অপরিজ্ঞাত আচরণ কোড গল্ফের জন্য পুরোপুরি ভাল!
জি স্লাইপেন

1
@ ওয়াইএসসি এইচএম, তবে আমি মনে করি যে বিশ্বব্যাপী তৈরি করা এই বিধি লঙ্ঘন করে যে আপনি যদি কিছু করার জন্য কোনও ক্রিয়া সংজ্ঞায়িত করেন (এবং এটি হয় না main) তবে এটি একাধিকবার কল করা সম্ভব হবে।
জি স্লাইপেন


2
@ গিরোবুজে while()যেমন আছে তেমন বাইট রয়েছে for(;;)। এভাবে ;while()এক বাইট দীর্ঘ for(;;)
জোনাথন ফ্রেচ

3

পাইথন 3, 48 46 বাইট

lambda s:(len(s)or 51)+1-52*len(s.split('\n'))

ইনপুটটি ফাংশনে স্ট্রিং হিসাবে পাস করা হয়। ফাংশন ইনপুটটির দৈর্ঘ্য বৃদ্ধি করে (নিউলাইনগুলি সহ), তারপরে প্রতিটি লাইনের 52 টি বিয়োগ করে।

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


2
আমি যা দেখেছি তা থেকে, f=হেডারে as f =! হিসাবে সরানো যেতে পারে, কেবল ল্যাম্বডাকে কোড হিসাবে রেখে দুটি বাইট সংরক্ষণ করুন
gadzooks02

@ gadzooks02 ধন্যবাদ, সম্পাদনা করবে। f=একটা অভ্যাস আমি পাইথন বিভেদ সার্ভার থেকে কুড়ান হয়।
আইফোকলট্রান্সজি



2

05 এ বি 1 ই , 8 6 বাইট

€g51-O

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

স্ট্রিংগুলির তালিকা হিসাবে ইনপুট করুন।

€g     get lengths of each line
51-    subtract 51 from each
O      push the sum of the resulting list
       implicitly print

1
দুঃখিত, ইনপুটটিতে অবশ্যই পুরো হেক্সডাম্প থাকতে হবে। (ইতিমধ্যে প্রতিটি লাইনের শেষে আপনি অক্ষরগুলি এড়িয়ে যান)
গ্যাডজুকস02

ওহ! আমার দুরবস্থা. আমি এটি আমার স্মার্টফোনে তৈরি করেছি। হেক্স কোডগুলির পিছনে কিছু আছে তা দেখেনি। আমি একটি সংশোধন করেছি।
ডোরিয়ান

2

আইবিএম / লোটাস নোট সূত্রের ভাষা, 53 বাইট

@Sum(@Length(@Explode(@Right(@Left(i;"  ");": ")))/2)

ফর্মুলার জন্য কোনও টিআইও নেই তাই এখানে পরীক্ষার মামলার স্ক্রিনশট রয়েছে:

এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন

সূত্রটি গণিত ক্ষেত্রে রয়েছে যা "রিটার্নস" এর পরে মান সরবরাহ করে।

ব্যাখ্যা

ফর্মুলা যেভাবে কোনও লুপের প্রয়োজন ছাড়াই তালিকায় ক্রমবর্ধমানভাবে কোনও ফাংশন প্রয়োগ করবে তার এটি একটি দুর্দান্ত প্রদর্শন। সূত্রটি সম্পাদনযোগ্য ইনপুট ক্ষেত্র `i 'হিসাবে একই ফর্মের একটি গণিত ক্ষেত্রে রয়েছে।

  1. মাঝখানে শুরু। @Leftএবং @Rightএকটি স্ট্রিং ডিলিমিটার বা কয়েকটি অক্ষর ব্যবহার করার অনুমতি দিন। সুতরাং আমরা :দুটি স্পেসের প্রথম উপস্থিতির ডানদিকে এবং তারপরে বাম দিকে অনুসন্ধান করব। যেহেতু সূত্রটি নিউলাইনটিকে একটি তালিকা বিভাজক হিসাবে দেখায় এটি ইনপুটটির প্রতিটি লাইনে এটি প্রয়োগ করবে।
  2. @Explodeসূত্রটি কোনও splitফাংশনের সমতুল্য এবং স্থানের ডিফল্ট, ,বা ;। আবার এটি ক্ষেত্রের প্রতিটি লাইনে প্রয়োগ করা হয় তবে এবার ফলাফলগুলি একক তালিকায় একত্রিত হয়েছে।
  3. @Lengthতারপরে তালিকার প্রতিটি সদস্যের জন্য প্রয়োগ করা হবে। প্রতিটি ক্ষেত্রে আমরা এর রিটার্ন মান 2 দিয়ে বিভক্ত করি।
  4. @Sum পুরো তালিকা এবং ফলাফল আউটপুট।

1
আপনার কি কোনও দোভাষীর লিঙ্ক আছে (হয় অনলাইন বা ডাউনলোড)?
gadzooks02

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

1
বিটিডাব্লু, আপনি যদি এই সাইটে লোটাস নোটগুলি সন্ধান করেন তবে আপনি দেখতে পাবেন যে আমি একমাত্র লোক যে এই ভাষায় গল্ফ দেওয়ার চেষ্টা করার মতো যথেষ্ট বোকা :-)
এলপিড্রো

1

জাভাস্ক্রিপ্ট (ES6), 34 বাইট

s=>(n=s.length)&&(n/68<<4)+n%68-51

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

মন্তব্য

s =>                // s = input string
  (n = s.length) && // n = length of s; return 0 right away if n = 0 (special case)
  (n / 68 << 4) +   // otherwise compute the number of full lines and multiply it by 16
  n % 68 - 51       // add the length of the last line minus 51





0

Zsh , 36 বাইট

Zsh এর ডিফল্ট পতাকা সহ:

for l (${(f)1})((c+=$#l-52))
<<<$[c]

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

${(f)1}নিউলাইনগুলিতে বিভক্ত $1হয় এবং খালি লাইন ফেলে দেয়। $[ arithmetic expansion ]খালি মামলা, যখন লুপ কখনো সেট করে বিরুদ্ধে রক্ষীদের $c

Zsh , 28 বাইট

সাথে -o extendedglob:

<<<${#${(F)${(f)1}#?(#c52)}}

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

(f)নিউলাইনগুলিতে বিভক্ত করুন, ${ #?(#c52)}শীর্ষস্থানীয় 52 টি অক্ষর সরান, (F)নিউলাইনগুলিতে যোগ দিন যাতে তালিকার পরিবর্তে, ${# }গণনা অক্ষরের পরিবর্তে গণনাটি চরিত্রগত হয়।


0

asm2bf , 135 বাইট

গল্ফ সংস্করণ:

lbl 3
mov r2,51
lbl 1
in_ r1
dec r2
jz_ r1,4
jnz r2,1
lbl 2
in_ r1
jz_ r1,4
sub r1,10
jz_ r1,3
inc r3
jmp 2
lbl 4
out r3

মন্তব্য করা সংস্করণ:

lbl 3               ; Main loop - the kinda entry point

    mov r2, 51      ; Loop 51 times.
    lbl 1           ; Loop start.
        in_ r1      ; Read character
        dec r2      ; Decrement the loop accumulator.
        jz_ r1, 4   ; If zero was read, end.
        jnz r2, 1   ; If we still loop, loop again.

    lbl 2           ; Second loop, accumulating the result.
        in_ r1      ; Read a character.
        jz_ r1, 4   ; If character is zero, end the loop and print result.
        sub r1, 10  ; Decrement r1 by 10 for next check.
        jz_ r1, 3   ; If the character - 10 (the newline) is zero, jump to 3
        inc r3      ; Increment character read amount.
        jmp 2
lbl 4
    out r3          ; Print out the result as an ASCII character.
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.