আউটপুট “ফিট” নম্বর


21

"ফিট নম্বর"

সংক্ষেপে স্যামের একটি "উজ্জ্বল" ধারণা রয়েছে! তুমি কি সাহায্য করতে পারো?


এখানে স্যামের কম্প্রেশন স্কিমের একটি পুনর্নির্মাণ। প্রথমে 2 ^ 16 এর চেয়ে কঠোরভাবে ছোট কোনও প্রাকৃতিক সংখ্যার 10 ভিত্তিতে উপস্থাপন করুন এবং কোনও অগ্রণী শূন্য ছাড়াই এটি বাইনারি স্ট্রিং হিসাবে লিখুন।

1 -> 1
9 -> 1001
15 -> 1111
13 -> 1101
16 -> 10000
17 -> 10001
65535 -> 1111111111111111

এখন এক বা একাধিক শূন্যের যে কোনও গ্রুপকে একক শূন্যের সাথে প্রতিস্থাপন করুন। এটি হ'ল কারণ এই সংখ্যাটি ঝোঁক পেয়েছে। আপনার বাইনারি স্ট্রিং এখন এটির মতো দেখাবে।

1 -> 1 -> 1
9 -> 1001 -> 101
15 -> 1111 -> 1111
13 -> 1101 -> 1101
16 -> 10000 -> 10
17 -> 10001 -> 101
65535 -> 11111111111111111 -> 1111111111111111

এখন আপনি বাইনারি স্ট্রিংটিকে বেস 10 এর উপস্থাপনে ফিরে রূপান্তর করুন এবং এটি যে কোনও গ্রহণযোগ্য বিন্যাসে আউটপুট করুন। আপনার পরীক্ষার কেসগুলি এখানে। প্রথম পূর্ণসংখ্যা একটি ইনপুট উপস্থাপন করে এবং শেষ পূর্ণসংখ্যা একটি আউটপুট উপস্থাপন করে। মনে রাখবেন যে কিছু নম্বর পরিবর্তন হয় না এবং সুতরাং "ফিট" বলা যেতে পারে

1 -> 1 -> 1 -> 1
9 -> 1001 -> 101 -> 5
15 -> 1111 -> 1111 -> 15
13 -> 1101 -> 1101 -> 13
16 -> 10000 -> 10 -> 2
17 -> 10001 -> 101 -> 5
65535 -> 111111111111111111 -> 111111111111111111 -> 65535
65000 -> 1111110111101000 -> 11111101111010 -> 16250


আপনি যে কোনও ভাষা ব্যবহার করতে পারেন, তবে দয়া করে নোট করুন যে স্যাম স্ট্যান্ডার্ড লুফোলগুলি ঘৃণা করে। এটি কোড গল্ফ তাই কোডটি "সংক্ষেপিত" সংখ্যার জন্য জায়গা তৈরি করার জন্য যতটা সম্ভব সংক্ষিপ্ত হতে পারে।
দ্রষ্টব্য: এটি কোনও গ্রহণযোগ্য সংক্ষেপণ স্কিম নয়। এটি ব্যবহার করার সাথে সাথে আপনাকে বরখাস্ত করা হবে।
উদ্ধৃতি-প্রয়োজনীয়: আমি এই ধারণার জন্য কৃতিত্ব গ্রহণ করি না। এটি @ কনর ও ব্রায়নের ব্লগ থেকে এসেছে এখানে ফিট সংখ্যার এই ওইআইএস দেখুন। https://oeis.org/A090078


1
@ কনর এর কমিক ব্লগ থেকে: লিঙ্ক
Rɪᴋᴇʀ


আমিই কমিকটি লিখেছি। <s> আমিও 35% প্রতিনিধি রয়্যালটি আশা করি </ s>;)
কনর ও'ব্রায়েন

দয়া করে দয়া করে বিষয়টি ব্যাখ্যা করবেন?
রোহান ঝুনঝুনওয়ালা

1
16 সমান 8 কেন? 16 হওয়া উচিত নয় 10000?
এডিট হয়েছে

উত্তর:


10

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

b00¬:C

ব্যাখ্যা

b        # convert input to binary
 00¬:    # replace 00 with 0 while possible
     C   # convert to int

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

আদনানকে ধন্যবাদ 2 বাইট সংরক্ষণ করা


আপনি „00'0দ্বারা প্রতিস্থাপন করতে পারেন 00¬:)।
আদনান

@ আদনান সুন্দর! ভেবে দেখিনি।
এমিগনা

আমি কেন জানি না কেন আমি তাদের স্পষ্টভাবে স্ট্রিং হিসাবে ঠেলে দিয়েছি ...
এমিগিনা

হ্যাঁ, এটি কিছুটা বিপরীত, তবে এটি কাজ করে :)।
আদনান

এটি দেখতে যেমন এটি জিততে চলেছে: ডি, আমি গ্রহণ করার আগে এটিকে আরও কিছুটা সময় দেব, যাতে আরও বেশি লোক অংশ নিতে পারে।
রোহান ঝুনঝুনওয়ালা

13

বাশ + জিএনইউ ইউটিলিটিস, 27

dc -e2o?p|tr -s 0|dc -e2i?p

এসটিডিআইএন থেকে ইনপুট পড়ুন।


নিস! আমি কখনই ব্যবহার করি নি dc:)
মাস্টার_এক্স

4
ডিসি man পৃষ্ঠা কিছু golfing ভাষার জন্য ডক্স মত অনেক পড়ে।
জর্ডান

7

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

n=>+`0b${n.toString(2).replace(/0+/g,0)}`

7

জেলিফিশ , 20 বাইট

p
d
# S
,1
*
\dbi
 2

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

ব্যাখ্যা

  • i ইনপুট হয়।
  • b এটি বাইনারি রূপান্তর করে (অঙ্কের তালিকা)
  • \dআর্গুমেন্ট সহ 2এবং dঅঙ্কের তালিকাটি সংখ্যা তালিকার প্রতিটি দৈর্ঘ্য -2 স্ট্রিংয়ের ক্ষেত্রে (সংখ্যায় বাইনারি অঙ্কগুলি) প্রয়োগ করে।
  • * ফলাফলগুলির সংকেত নেয়: 00 0 তে যায়, সমস্ত কিছু 1 তে।
  • ,1 একটি 1 টি শেষ পর্যন্ত ট্যাক করে, তাই শেষ সংখ্যাটি হারাবে না।
  • # Sbiউপরের গণনা করা তালিকায় যে 1 টি সংখ্যা রয়েছে সেগুলি থেকে নির্বাচন করুন: যারা 00 এর বাম অংশ নয়।
  • dসংখ্যায় ফিরে আসে এবং pফলাফল মুদ্রণ করে।

6

পাইথন 2, 36 বাইট

f=lambda n:n and f(n/2)<<(n%4>0)|n%2

কোনও বেস রূপান্তর অন্তর্নির্মিত বা স্ট্রিং ক্রিয়াকলাপ ছাড়াই সরাসরি পুনরাবৃত্তিযোগ্য বাস্তবায়ন। কম গল্ফড:

f=lambda n:n and[f(n/2),n%2+2*f(n/2)][n%4>0]

যখন n4 এর একাধিক হয়, তখন এটি বাইনারিতে 2 এর মধ্যে শেষ হয়, সুতরাং আমরা একটি 2 কে তল দ্বারা ভাগ করে কাটা করি, নইলে, আমরা বিভক্ত nহয়ে যাই (n%2) + 2*(n/2), শেষ বাইনারি n%2অঙ্কটি একা রেখে যাই , এবং অন্যান্য অঙ্কগুলিতে পুনরাবৃত্তি করি n/2


n%2অপ্রয়োজনীয় না ?
xsot

@ xsot আপনার অর্থ কী তা নিশ্চিত নয়। করা |nভুল ফলাফল দেয়।
xnor

আমি বলতে চাচ্ছি আপনি সমগ্র প্রতিস্থাপন করতে পারেন (n%4>0)|n%2সঙ্গে (n%4>0)
xsot

@xsot প্রাধান্য যেমন যায় (f(n/2)<<(n%4>0)) | n%2
xnor

আহ, আমার তখন খারাপ। আমি ভেবেছিলাম স্থানান্তরটির সবচেয়ে কম প্রাধান্য রয়েছে।
এক্সসট

5

বাশ (সেড + বিসি), 60 55 43 বাইট

echo $[2#`bc<<<obase=2\;$1|sed s/00\*/0/g`]

সম্পাদনা:

  1. পরিবর্তিত sed -E 's/0+হয়েছে sed 's/00*এবং ইকো এবং পাইপ পরিবর্তিত হয়ে বিসিতে মানটি পাস করত <<<
  2. @ ডিজিটাল ট্রমা দ্বারা উজ্জ্বল পরামর্শ!

উদাহরণ:

$ bash script.sh 65000
16250
$ bash script.sh 15
15
$ bash script.sh 9
5

1
সেড + বিসি আমার প্রথম চিন্তা ছিল। echo "obase=2;$1"|bc|sed 's/00*/0/g;s/^/ibase=2;/'|bc2 বাইট সংক্ষিপ্ত
রিলি

1
আপনার সুবিধাজনক পাইপ এবং বেরিয়ে ব্যবহার করুন: echo $[2#`bc<<<obase=2\;$1|sed s/00\*/0/g`]। তবে dcএবং tr এটিকে আরও খাটো করুন
ডিজিটাল ট্রমা

1
@ ডিজিটালট্রামা: ধন্যবাদ, দারুণ! @ রিলে: দুর্দান্ত ধারণা, এটি এর চেয়ে খানিকটা ছোট হবে:bc<<<"obase=2;$1"|sed 's/00*/0/g;s/^/ibase=2;/'|bc
মাস্টার_এক্স

আপনি যদি tr -s 0সেডের পরিবর্তে ব্যবহার করেন তবে আপনি 36 বাইটে নামতে পারেন
রাইলি

@ রিলে: সত্য, তবে ডিজিটাল ট্রমা এটি ইতিমধ্যে অন্যান্য
ব্যাশের

4

পার্ল 6 ,  31  27 বাইট

{:2(.base(2).subst(:g,/0+/,0))}
{:2(.base(2)~~{S:g/0+/0/})}

ব্যাখ্যা:

-> $_ {
  # convert from base 2
  :2(

    # convert to base 2
    $_.base(2)

    # substitute
    .subst(
      :global,
      / 0+ /,  # all substrings made of 0s
      '0'      # with one 0
    )
  )
}

উদাহরণ:

my &fit-compress = {:2(.base(2)~~{S:g/0+/0/})}
say fit-compress 1;     # 1
say fit-compress 9;     # 5
say fit-compress 15;    # 15
say fit-compress 13;    # 13
say fit-compress 16;    # 2
say fit-compress 17;    # 5
say fit-compress 65535; # 65535
say fit-compress 65000; # 16250

# number created with 「:2( [~] <0 1>.roll: 256 )」
say fit-compress 80794946326210692074631955353531749442835289622757526957697718534769445507500
# 4240335298301026395935723255481812004519990428936918

4

এমএটিএল, 11 9 8 বাইট

BFFOZtXB

এই সংস্করণটি কেবল ম্যাটল্যাবেই কাজ করে যেহেতু strrepম্যাটল্যাবে লজিক্যাল ইনপুটগুলি পরিচালনা করতে পারে। এখানে এমন একটি সংস্করণ রয়েছে যা অষ্টাভে (9 বাইট) কাজ করবে (এবং এভাবে অনলাইন অনুবাদক) যা সুস্পষ্টভাবে লজিক্যাল ইনপুটগুলিকে টাইপ করে double

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

ব্যাখ্যা

    % Implicitly grab input
B   % Convert decimal to binary
FF  % Create the array [0 0]
O   % Number literal
Zt  % Replaces all [0 0] with [0] (will replace any number of 0's with 0)
XB  % Convert binary to decimal
    % Implicitly display

4

পাইথন 3, 55 , 50 বাইট।

Sp3000 ধন্যবাদ 4 বাইট সংরক্ষণ করা।

খুব সোজা সমাধান।

import re
f=lambda x:eval(re.sub('0+','0',bin(x)))

4
আপনি 0bকেবল এবং evalপরিবর্তে রাখতে পারেন ?
Sp3000

@ Sp3000 অবশ্যই পারবেন! পরামর্শের জন্য ধন্যবাদ!
মরগান থ্রাপ

বেনামে ল্যাম্বডাস অনুমোদিত; আপনি এটি ব্যবহার করে 48 বাইটে সঙ্কুচিত করতে পারেনlambda x:eval(re.sub('0+','0',bin(x))) <insert newline here> import re
মিলকিওয়াই 90

3

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

n=>'0b'+n.toString(2).replace(/0+/g,0)-0

1
আমি ভয় পাচ্ছি এটি একটি স্নিপেট। চ্যালেঞ্জের বিবরণ অন্যথায় না বললে সমাধানগুলি পুরো প্রোগ্রাম বা ফাংশন হিসাবে প্রত্যাশিত।
manatwork

আমি ফাংশনটি ব্যবহার করতে না চাইলে জাভাস্ক্রিপ্টে "পূর্ণ প্রোগ্রাম" হওয়ার কী দরকার? দয়া করে উপদেশ দাও.
সাইচোই

Node.js সঙ্গে উদাহরণস্বরূপ: console.log(+('0b'+parseInt(process.argv[1]).toString(2).replace(/0+/g,0)))
manatwork

অন্য প্রসঙ্গ. আপনার কোড ব্লকটিতে @ মাস্টার_এক্সের মতো একই সমস্যা রয়েছে। এটি কি কারণ কয়েকটি জনপ্রিয় শেল কনফিগার স্ক্রিপ্টগুলি টার্মিনালকে দূষিত করছে? নাকি এসই এর দোষ?
সাইচোই

1
সংক্ষিপ্ততম স্থিরতাটি আগে থেকেই পরিশোধ করা হবে N=>যা এটি একটি বৈধ ফাংশন জমা দেবে।
মার্টিন এন্ডার

3

আসলে, 14 বাইট (প্রতিদ্বন্দ্বী)

├`'0;;+(Æ`Y2@¿

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

এই জমাটি প্রতিদ্বন্দ্বিতামূলক নয় কারণ Æএই চ্যালেঞ্জ পোস্ট হওয়ার পরে একটি বাগফিক্স তৈরি হয়েছিল।

ব্যাখ্যা:

├`'0;;+(Æ`Y2@¿
├               bin(input) (automatically discards leading zeroes)
 `'0;;+(Æ`Y     call this function until the output stops changing:
  '0;;+           push "0", "00"
       (Æ         replace "00" with "0" in binary string
           2@¿  convert from binary to decimal

তারপরে একটি প্রতিযোগিতামূলক সংস্করণ পোস্ট করুন!
Leaky নুন



2

পিএইচপি, 53 51 বাইট

<?=bindec(preg_replace("/0+/",0,decbin($argv[1])));

কনসোল থেকে একটি আর্গুমেন্ট নেয়।

ধন্যবাদ:

@ মানটওয়ার্ক "0" কে 0 দিয়ে প্রতিস্থাপন করুন


1
বেশিরভাগ ক্ষেত্রে "0"এবং 0একই ভাবে পরিচালনা করা হয়।
manatwork

@ মান্যাটওয়ার্ক ধন্যবাদ এটি আমার নিজের দেখা উচিত ছিল একটি সুন্দর স্পষ্ট।
জেরোইন

2

পার্ল, 38 + 1 ( -p) = 39 বাইট

$_=oct"0b".sprintf("%b",$_)=~s/0+/0/gr

প্রয়োজন -pচালানোর জন্য পতাকা (আমি যোগ -lসেটির উপরে ফ্ল্যাগ লাগাতে আরো পাঠযোগ্য করতে, কিন্তু এটা অন্যথায় প্রয়োজন না):

perl -plE '$_=oct"0b".sprintf("%b",$_)=~s/0+/0/gr' <<< "1
9
15
13
16
17
65535
65000"

কোড সম্পর্কে বলার জন্য অনেক বেশি দ্রষ্টব্য: এটি সংখ্যাটিকে বাইনারি ( sprintf"%b") এ রূপান্তর করে , তারপরে শূন্যগুলির ব্লকগুলি কেবল একটি শূন্য দ্বারা প্রতিস্থাপন করে এবং ফলাফলকে দশমিক ( oct"0b".) এ রূপান্তর করে ।


2

সি #, 112 91 বাইট

int x(int x)=>Convert.ToInt32(Rege‌​x.Replace(Convert.ToS‌​tring(x,2),"0+","0"),2);

-8 বাইটস টুকুএক্সএক্সকে ধন্যবাদ


int f(int x){var a=Regex.Replace(Convert.ToString(x,2),"0+","0");return Convert.ToInt32(a,2);}- রেজেক্স ব্যবহার করে 94 বাইট। আমি প্রচুর সি # সমাধানগুলিতে অন্তর্ভুক্ত না দেখেছি System.Text.RegularExpressionsসম্ভবত এটিও এখানে অনুমোদিত ...?
Yytsi

int f(int x){return Convert.ToInt32(Regex.Replace(Convert.ToString(x,2),"0+","0"),2);}86 বাইট।
ইয়াতসি

আপনি কীভাবে বাইটগুলি গণনা করছেন তা আমি জানি না, আমি এই মোটেরেফ.ইন
ডাউনরেপ_নেশন

আমি সেই পৃষ্ঠাটিও ব্যবহার করি, তবে এটি কার্যকর হবে না, তাই আমি একটি ভিন্ন পৃষ্ঠা ব্যবহার করেছি। আপনার প্রয়োজনীয় সি # সংস্করণও উল্লেখ করা উচিত।
ইয়াতসি

mothereff.in/byte-counter আপনার বর্তমান সমাধানের জন্য 79 বাইট গণনা করে। সমাধানটি আমাকে হাতে টাইপ করতে হয়েছিল, অন্যথায় এটি আমাকে 91 প্রদান করবে
ইয়াতসি

2

জাভা, 75

int f(Integer x){return x.valueOf(x.toString(x,2).replaceAll("0+","0"),2);}

পরীক্ষা প্রোগ্রাম:

public class Fit {
    int f(Integer x){return x.valueOf(x.toString(x,2).replaceAll("0+","0"),2);}

    public static void main(final String... args) {
        final Fit x = new Fit();
        System.out.println(x.f(65000));
    }
}

জাভা 8 লামদা x-> ব্লাহে রূপান্তর করুন; কম বাইটের জন্য
রোহান ঝুনঝুনওয়ালা

int f (পূর্ণসংখ্যা x) {ফিরতি x.parseInt (x.toString (x, 2) .replaceAll ("0 +", "0")); couple কয়েকটি কম বাইটের জন্য
রোহান ঝুনঝুনওয়ালা

@ রোহানঝুনঝুনওয়ালা এটি ভুল, এটি বেস 2 ব্যবহার করা প্রয়োজন, ল্যাম্বডা সম্পর্কে, আমি মনে করি যে প্রকারের নির্দিষ্টকরণ ছাড়াই এটি অসম্পূর্ণ।
aditsu

ওহ ঠিক আছে, অন্যান্য জাভা উত্তরগুলি একই কৌশলটি ব্যবহার করে
রোহান ঝুনঝুনওয়ালা



1

পাওয়ারশেল ভি 2 +, 69 বাইট

[convert]::ToInt32(([convert]::ToString($args[0],2)-replace'0+',0),2)

( পাওয়ারশেলের বাইনারি / এ রূপান্তর করার একটি ছোট উপায় )

ইনপুট নেয় $args[0] , [convert]::ToString(int,base)ইনপুট পূর্ণসংখ্যাকে বাইনারি বেস স্ট্রিংয়ে রূপান্তর করতে .NET অন্তর্নির্মিত ব্যবহার করে । -replaceএক বা একাধিক-শূন্যের কোনও রান সরিয়ে নেওয়ার জন্য এটি ফিল্টার হয়েছে 0[convert]::ToInt32(string,base)বাইনারিটিকে একটি পূর্ণসংখ্যার দিকে ফিরিয়ে আনার জন্য সেই ফলাফলটি স্ট্রিংটিকে অন্য দিক দিয়ে ফিরে পাঠানো হয় । সেই পূর্ণসংখ্যাটি পাইপলাইনে রেখে গেছে এবং আউটপুট অন্তর্ভুক্ত।

পরীক্ষার মামলা

PS C:\Tools\Scripts\golfing> 1,9,15,13,16,17,65535,65000|%{"$_ -> " +(.\output-fit-number.ps1 $_)}
1 -> 1
9 -> 5
15 -> 15
13 -> 13
16 -> 2
17 -> 5
65535 -> 65535
65000 -> 16250

1

রেফারেন্স বাস্তবায়ন ইন SILOS এ "কেবল" 417 বাইট

Golfed

readIO :
i + 1
I = i
z = 1 
n = 32
b = n
z = 1
n = b
lbla
n - 1
GOSUB p
j = i
j - p
if j b
if z c
z = 1
GOTO e
lblc
b - 1
if n a
GOTO f
lblb
z = 0
A = a
A + 1000
set A 1
i - p
lble
a + 1
if n a
lblf
q = 1000
e = q
e + b
i = 0
lbl>
d = q
d - e
if d ?
n = b
n - i
GOSUB p
g = get q
g * p
o + g
i + 1
q + 1
GOTO >
lbl?
o / 2
printInt o
GOTO z
funcp
p = 1
Z = n
lblQ
if Z C
GOTO D
lblC
Z - 1
p * 2
GOTO Q
lblD
return
lblz

এখানে রেফারেন্স বাস্তবায়ন সম্পূর্ণরূপে ungolfed। বোনাস বৈশিষ্ট্য হিসাবে এটি একটি উত্তর আসতে প্রয়োজনীয় পদক্ষেপগুলি আউটপুট করে।

/**
*Reference Implementation in the high quality S.I.L.O.S language.
*/
readIO Enter a number to "compress"
//some declarations
i + 1
I = i
z = 1 
//the above is a flag which shows whether or not a zero was last outputted
n = 32
b = n
//maximum number of input bits
printLine Original Binary



lblbinLoop
n - 1
GOSUB pow
j = I
j - p
if j printOne
if z ENDLOOP
print 0
GOTO ENDLOOP
lblprintOne
z = 0
print 1
I - p
lblENDLOOP
if n binLoop




printLine  
printLine Binary "Compressed"


z = 1
n = b


lbltopA
n - 1
GOSUB pow
j = i
j - p
if j printAOne
if z DontPrint
z = 1
print 0
GOTO ENDLOOPA
lblDontPrint
b - 1
if n topA
GOTO endOfBin
lblprintAOne
z = 0
print 1
A = a
A + 1000
set A 1
i - p
lblENDLOOPA
a + 1
if n topA

lblendOfBin

printLine  
printLine -----------
printLine Base 10 Output
print Out Bits:
printInt b

q = 1000
e = q
e + b
i = 0
lblOutputDec
d = q
d - e
if d DONE
n = b
n - i
GOSUB pow
g = get q
g * p
o + g
i + 1
q + 1
GOTO OutputDec
lblDONE
printLine
printLine ---------
o / 2
printInt o

GOTO funcs
//function declarations must be wrapped in gotoes to avoid the interpreter from complaining (breaking)

/**
*This will store the nth power of two in the "p" variable
*/
funcpow
p = 1
Z = n
lbltop
if Z continue
GOTO end
lblcontinue
Z - 1
p * 2
GOTO top
lblend
return

lblfuncs

অনুরোধ করে প্রতিস্থাপনটি মোছা হয়েছে। এটি পুনরুদ্ধার করতে সম্পাদনা ইতিহাসটি নির্দ্বিধায় মনে করুন, অন্যথায় যান কোনও অনুবাদকের জন্য এই রেপোতে

65000 এর জন্য নমুনা আউটপুট

Enter a number to "compress"
65000
Original Binary
1111110111101000 
Binary "Compressed"
11111101111010 
-----------
Base 10 Output
Out Bits:14
---------
16250

4
রেফারেন্স বাস্তবায়ন চ্যালেঞ্জের সংস্থায় হওয়া উচিত, উত্তর হিসাবে নয়, কারণ তারা নিরপেক্ষ এবং এইভাবে গুরুতর প্রতিযোগী নয়।
মেগো

ঠিক আছে, আমি এটি গল্ফ করব।
রোহান ঝুনঝুনওয়ালা

আমি এই @ মেগো দিয়ে চ্যালেঞ্জের সংঘটিত হতে চাই না
রোহান ঝুনঝুনওয়ালা

@ টিমিডি এক সেকেন্ড আমি এখন এটি গল্ফ করে যাচ্ছি
রোহান ঝুনঝুনওয়ালা

@ মেগো আমি এখন এটি গল্ফ করেছি
রোহান ঝুনঝুনওয়ালা


1

রেটিনা , 30 বাইট

.+
$*1;
+`(1+)\1
$1;
1;
1
;+
0

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

এবং এখানে আমি ভেবেছিলাম রেটিনা প্রথম উত্তরগুলির মধ্যে থাকবে ...


@ আরন্দোমরা আমি স্পষ্টতার জন্য ওপি প্রশ্ন জিজ্ঞাসা করছি
লিকি নুন

রেটিনা কি বাইনারি থেকে দশমিক রূপান্তর বা বাইনারি থেকে অ্যানারি রূপান্তর করতে সক্ষম? রেটিনা বাদ না দেওয়ার জন্য আমি একজনকে বাদ দিই
রোহান ঝুনঝুনওয়ালা

@ রোহানঝুনঝুনওয়ালা: হ্যাঁ, এটি
বিজনেস ক্যাট

এই রূপান্তরটি কি অ্যানারি বা দশমিক রূপান্তর করা সম্ভব? আদর্শভাবে আমি দশমিক দেখতে চাই, তবে আমি তা গ্রহণ করব।
রোহান ঝুনঝুনওয়ালা

1

জাভা, 152 143 138 বাইট

interface C{static void main(String[]b){Integer i=0;System.out.print(i.parseInt(i.toString(i.parseInt(b[0]),2).replaceAll("0+","0"),2));}}
  • @ রোহানঝুনঝুনওয়ালাকে 9 বাইট কম ধন্যবাদ আমি এটিকে মূল এবং এর মতো একটি সম্পূর্ণ কার্যকরী প্রোগ্রাম হিসাবে রাখতে পছন্দ করি। তবে অবশ্যই এটি অন্যথায় গল্ফ করা যেতে পারে।
  • 5 বাইট কম @ লিকিউন এর পরামর্শের জন্য ধন্যবাদ।

1
শ্রেণি এ {পাবলিক স্ট্যাটিক শূন্য মূল (স্ট্রিং [] ক) {পূর্ণসংখ্যা i; System.out.print (i.parseInt (i.toBinaryString (i.parseInt (a [0]))। প্রতিস্থাপনআল ("0+", " 0 "), 2)) saving saving 8 বাইট সংরক্ষণের জন্য
রোহান ঝুনঝুনওয়ালা

আরও বেশি সঞ্চয় এবং শ্রেণীর সংজ্ঞা এবং আপনার সেটটি সরিয়ে রাখার জন্য এটিকে একটি ল্যাম্বডা এক্সপ্রেশনে মোড়ানো।
রোহান ঝুনঝুনওয়ালা

@RohanJhunjhunwala: আহ! Integer i;অংশ সহজ এবং চমত্কার!
মাস্টার_এক্স

1
এটি কাজ করে তবে বেশিরভাগ বুদ্ধিমান আইডিইতে একটি সতর্কতা (ত্রুটির বিপরীতে) তৈরি করতে পারে। জিনিসটি হ'ল, আপনি সর্বদা অ স্থির প্রসঙ্গ থেকে স্থিতিশীল পদ্ধতিগুলি কল করতে পারেন, তবে আপনি কোনও স্থির প্রসঙ্গ থেকে কোনও অ-স্থিতিশীল পদ্ধতিতে কল করতে পারবেন না। এই কৌশলটি ব্যবহার করার সময় প্রযোজনীয় কোডে দৃ strongly়ভাবে নিরুৎসাহিত করা হয়, এটি আইনী জাভা।
রোহান ঝুনঝুনওয়ালা

1
কোডগলফ.স্ট্যাকেক্সেঞ্জাওয়েজ / প্রশ্নস / 676767১/২ জাভা ভাষার "বৈশিষ্ট্যগুলি" কম পরিচিত হওয়ার সাথে পরিচিত হওয়ার জন্য একটি ভাল পঠন।
রোহান ঝুনঝুনওয়ালা

1

ডায়ালগ এপিএল , 19 বাইট

{2⊥⍵/⍨~0 0⍷⍵}2∘⊥⍣¯1

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

এই ফাংশনটি আসলে দুটি ফাংশনের একটি "শীর্ষ", প্রথম ফাংশনটি হ'ল:

2∘⊥⍣¯1বিপরীত binary- এর থেকে -decimal রূপান্তর, অর্থাত binary- থেকে -decimal রূপান্তর
দুই 2 আবদ্ধ হয় করতে -to দশমিক
পুনরাবৃত্তি অপারেশন নেতিবাচক এক সময় ¯1(অর্থাত একবার কিন্তু উল্টানো)

দ্বিতীয় ফাংশনে, উপরের বাইনারি ফলাফল দ্বারা প্রতিনিধিত্ব করা হয় :

{2⊥⍵/⍨~0 0⍷⍵}
0 0⍷⍵বুলিয়ান যেখানে {0, 0 ⍵ এর জন্য oo
~বুলিয়ান অবহেলা শুরু হয় , তাই এখন আমাদের কাছে সর্বত্র but তবে শূন্য রানের অ-প্রথম শূন্যগুলিতে
⍵/⍨filter ফিল্টার করতে ব্যবহার করুন, সুতরাং এটি আমাদের অযাচিত শূন্যগুলি
2⊥বাইনারি-থেকে-দশমিক রূপান্তরিত করে


1

টিএসকিউএল, 143 বাইট

বাইনারি থেকে এবং বাইনারি রূপান্তর করতে বিল্ড ইনগুলি ব্যবহার করছেন না।

Golfed:

DECLARE @i INT=65000

,@ CHAR(99)=''WHILE @i>0SELECT @=REPLACE(LEFT(@i%2,1)+@,'00',0),@i/=2WHILE @>''SELECT @i+=LEFT(@,1)*POWER(2,LEN(@)-1),@=STUFF(@,1,1,'')PRINT @i

Ungolfed:

DECLARE @i INT=65000

,@ CHAR(99)=''
WHILE @i>0
  SELECT @=REPLACE(LEFT(@i%2,1)+@,'00',0),@i/=2

WHILE @>''
  SELECT @i+=LEFT(@,1)*POWER(2,LEN(@)-1),@=STUFF(@,1,1,'')

PRINT @i

বেহালা


বিল্ট ইনগুলি ব্যবহার না করার জন্য +1। আমার সিলোস উত্তর (রেফারেন্স বাস্তবায়ন) একই কাজ করে, তবে লোকেরা এটিকে গুরুতর প্রতিযোগী বলে ভাবেনি বলে এটিকে নিম্নমান দেওয়া হয়েছিল। নতুন লাইনটি কি তাৎপর্যপূর্ণ?
রোহান ঝুনঝুনওয়ালা

@ রোহানঝুনঝুনওয়ালা নতুন লাইনটি গুরুত্বপূর্ণ নয়। ইনপুট ভেরিয়েবল সংজ্ঞায়িত হয়ে একটি মূল্য নির্ধারিত হওয়ার পরে আমি কোডের অক্ষর গণনা করছি।
t-clausen.dk

ঠিক আছে অর্থে -
রোহান ঝুনঝুনওয়ালা

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

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

1

সিজেম, 16

q~2b1+0a%0a*);2b

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

রেজেেক্সের অভাবে এটি বেশ দীর্ঘ।

ব্যাখ্যা:

q~     read and evaluate the input number
2b     convert to base 2 (array of 1s and 0s)
1+     append a 1 to deal with trailing zeros
0a%    split by [0], dropping empty pieces; only chunks of 1s are left
0a*    join by [0]
);     discard the 1 we appended before
2b     convert back from base 2

1

জাভা, 64 বাইট

i->{return i.parseInt(i.toString(i,2).replaceAll("0+","0"),2);};

পরীক্ষা প্রোগ্রাম

public static void main(String[] args) {
    Function<Integer, Integer> function = i -> {
        return i.parseInt(i.toString(i, 2).replaceAll("0+", "0"), 2);
    };

    System.out.println(function.apply(1)); // 1
    System.out.println(function.apply(9)); // 5
    System.out.println(function.apply(15)); // 15
    System.out.println(function.apply(13)); // 13
    System.out.println(function.apply(16)); // 2
    System.out.println(function.apply(17)); // 5
    System.out.println(function.apply(65535)); // 65535
}

1

সিজেম , 23 বাইট

ri2be`{_:g:>{:g}&}%e~2b

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

ব্যাখ্যা

ri          e# Read input as an integer
2b          e# Convert to binary
e`          e# Run-length encoding. Gives a nested (2D) array with run-lengths 
            e# and binary digits
{           e# This block is mapped over the outer array, i.e. is applied to
            e# each inner array
   _        e#   Duplicate the inner array
  :g        e#   Signum of each element of inner array
  :>        e#   This gives true if second element (digit) is false and first
            e#   element (run-length) is not zero. If so, we need to set that
            e#   run-length to 1
  {:g}&     e#   If that's the case, apply signum to original copy of inner
            e#   array, to make run-length 1
}%          e# End block which is mapped over the outer array
e~          e# Run-length decoding
2b          e# Convert from binary. Implicitly display

1

রুবি, 37 35 বাইট

ম্যানটওয়ার্কের জন্য দুটি বাইট সংরক্ষণ করা হয়েছে।

->a{a.to_s(2).gsub(/0+/,?0).to_i 2}

নিষ্পাপ পদ্ধতির। (:


সম্পর্কিত "0", sepp2k টিপ এর দ্বিতীয় পয়েন্ট দেখুন । সম্পর্কিত .to_i(2), যেখানে কোনও প্যারামিটারের মালিকানা রয়েছে সেখানে কোনও অস্পষ্টতা নেই, বন্ধনীগুলি alচ্ছিক।
manatwork

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