ভারসাম্য টার্নারি রূপান্তরকারী


32

চ্যালেঞ্জ ধারণার ক্রেডিটগুলি @ অ্যান্ড্রুপিলাইজারে যান। স্যান্ডবক্সে তার মূল প্রস্তাবটি পরিত্যাগ করা হয়েছিল এবং যেহেতু তিনি বেশ কয়েক মাস ধরে এখানে সক্রিয় ছিলেন না, তাই আমি চ্যালেঞ্জটি গ্রহণ করেছি।

ভারসাম্যযুক্ত ত্রৈমাসিক একটি অ-মানক সংখ্যা সিস্টেম। এটি ত্রৈমাসিকের মতো যে আপনি বামদিকে আরও এগিয়ে যাওয়ার সাথে 3 এর গুণক দ্বারা ডিজিটগুলি মান বৃদ্ধি করে - তাই100হয়9এবং100128 হয়।

তবে, 0, 1 এবং 2 এর মান না রেখে অঙ্কগুলির মান -1, 0 এবং 1 এর মান থাকে । (আপনি এখনও কোনও পূর্ণসংখ্যার প্রকাশ করতে এটি ব্যবহার করতে পারেন))

এই চ্যালেঞ্জের জন্য, ডিজিটের অর্থ +1হিসাবে লেখা হবে +, যেমনটি লেখা -1হবে -, 0ঠিক হবে 0। ভারসাম্যযুক্ত ত্রৈমাসিকটি -অন্যান্য সংখ্যার ব্যবস্থার মতো এটিকে উপেক্ষা করতে সংখ্যার সামনে চিহ্ন ব্যবহার করে না - উদাহরণ দেখুন।

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

শীর্ষস্থানীয় শূন্যগুলি ইনপুটতে উপস্থিত থাকতে পারে তবে আউটপুটটিতে না থাকতে পারে, যদি না ইনপুট থাকে 0, সেক্ষেত্রে আউটপুটটিও হওয়া উচিত 0

উদাহরণ

এগুলি সুষম ত্রৈমাসিক থেকে দশমিক দশকে রূপান্তর; আপনাকে অন্যভাবে রূপান্তর করতে হবে।

+0- = 1*3^2 + 0*3^1 + -1*3^0 = 9 + 0 + -1 = 8
+-0+ = 1*3^3 + -1*3^2 + 0*3^1 + 1*3^0 = 27 + -9 + 0 + 1 = 19
-+++ = -1*3^3 + 1*3^2 + 1*3^1 + 1*3^0 = -27 + 9 + 3 + 1 = -14

ওহ অপেক্ষা করুন, আমি ঠিক লক্ষ্য করেছি যে ভারসাম্যপূর্ণ ডজনের উপর একটি প্রশ্ন আছে - এটি কি একটি সদৃশ?

আমি যেমন স্যান্ডবক্সে উল্লেখ করেছি, আমি মনে করি এটি স্ট্যান্ডার্ড ডাইনারি উপস্থাপনা সম্পর্কে চ্যালেঞ্জের কাছাকাছি । তবে এটি সম্ভবত কোনওটির সদৃশ নয়।
মার্টিন ইন্ডার

উত্তর:


22

পাইথন 2: 58 টি অক্ষর

n=input()
s=""
while n:s="0+-"[n%3]+s;n=-~n/3
print s or 0

শেষ থেকে সুষম ত্রৈমাসিকের অঙ্ক ডিজিট তৈরি করে। শেষের ডিজিটটি অবশিষ্টাংশ দেওয়া হয় n%3হচ্ছে -1, 0বা, +1। তারপরে আমরা শেষ অঙ্কটি সরিয়ে পাইথনের মেঝে-বিভাজন ব্যবহার করে 3 দ্বারা বিভক্ত করি n=(n+1)/3। তারপরে, সংখ্যাটি 0 না হওয়া পর্যন্ত আমরা নতুন শেষ অঙ্কের সাথে পুনরাবৃত্তভাবে এগিয়ে যাই।

খালি স্ট্রিংয়ের পরিবর্তে ইনপুট 0দেওয়ার জন্য একটি বিশেষ ক্ষেত্রে প্রয়োজন 0


চশমা এটির অনুমতি দেয় না, তবে যদি কোনও প্রোগ্রামের পরিবর্তে কোনও ফাংশন লিখতে পারে এবং 0 এর জন্য খালি স্ট্রিং আউটপুট করতে পারে তবে একটি 40 চর সমাধান সম্ভব হবে।

g=lambda n:n and g(-~n/3)+"0+-"[n%3]or""

n*"."andকেবলমাত্র ফাংশন ক্ষেত্রে ব্যবহার করা ভাল । আরও print s or 0ভাল কাজ করে: পি
ন্যাব

@ নাব শুভ কল s or 0। আমি চেষ্টা করেছিলাম n*"."and, কিন্তু যখন এটি ব্যর্থ হয় n<0
xnor

@ মার্টিনব্যাটনার পাইথের দীর্ঘ উত্তরটি কেবল একটি অনুকূল অ্যালগরিদম ব্যবহারের কারণে ছিল।
অপটিমাইজার

@ অপ্টিমাইজার ওয়েল, স্পষ্টতই, এবং সে কারণেই আমি পাইথন উত্তরটি উন্নত করেছিলাম যা আগে আরও ভাল অ্যালগরিদম পেয়েছিল। : P: P
মার্টিন ইন্ডার

6

সিজেম, 24 বাইট

আমি এটি স্বাধীনভাবে নিয়ে এসেছি এবং আমি মনে করি এটি সম্ভবত এটিই হ্যান্ডেল করার একমাত্র উপায়।

li{_3%"0+-"=\_g+3/}h;]W%

অ্যালগরিদমভাবে, এটি এক্সনরের উত্তরের মতো similar

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

এটি কীভাবে কাজ করে :

li{               }h                 "Read input, convert to integer and run the code block"
                                     "until stack has 0 on top";
   _3%                               "Copy and get modulus 3";
      "0+-"=                         "Take the correct character based on the above modulus";
            \_g+                     "Swap, copy and take signum of the number and add"
                                     "that to it, incrementing the number if positive,"
                                     "decrementing otherwise";
                3/                   "Integer divide by 3 and continue until 0";
                    ;]               "Pop the residual 0 and wrap everything in array";
                      W%             "Reverse to get in binary format (right handed)";

"ইতিবাচক হলে বর্ধন, নেতিবাচক হলে হ্রাস" কি কিছুটা বিট প্রয়োজন? শুধু ইনক্রিমেন্ট কেন?
isaacg

@ আইসএইচজি এটি চেষ্টা করে দেখুন;)
অপটিমাইজার

সিজেএম বিভাগের রাউন্ডিং কি আলাদা?
isaacg

@ আইস্যাকগ - গোল করা - না। সিজাম পূর্ণসংখ্যা বিভাগটি গোল হয় না। এটি মেঝে
অপ্টিমাইজার

কিন্তু মেঝে শূন্য বা -আইএনফের দিকে?
isaacg

6

জাভাস্ক্রিপ্ট (E6) 68

অনুরোধ অনুসারে একটি সম্পূর্ণ প্রোগ্রাম, পপআপের মাধ্যমে আই / ও দিয়ে। মূলটি হ'ল আর ফাংশন, 49 বাইট।

অন্যান্য পুনরাবৃত্ত সমাধানগুলি থেকে এত আলাদা নয়, আমার ধারণা। "0" এর জন্য একটি বিশেষ কেস এড়াতে স্ট্রিং এবং সংখ্যাগুলির মধ্যে স্বয়ংক্রিয় রূপান্তরটির সুবিধা নেওয়া

 alert((R=(n,d=(n%3+3)%3)=>n?R((n-d)/3+(d>1))+'0+-'[d]:'')(prompt()))

টেস্ট ফায়ারফক্স / Firebug কনসোলে, শুধু আর ফাংশন ব্যবহার করে

['0','8','19','-14','414'].map(x =>x +': '+R(x))

আউটপুট

["0: 0", "8: +0-", "19: +-0+", "-14: -+++", "414: +--0+00"]

আমি কিছু অনুপস্থিত করছি? d=(n%3+3)%3যখন d=n%3একই মূল্য ফলনের মূল বিষয়টি কী d?
আরএলএইচ

@RLH নেতিবাচক মানের জন্য নয় (জাভাস্ক্রিপ্টে নেই)। -20% 3 === -2% 3 === -2। পরিবর্তে -20 Mod 3 1 হওয়া উচিত, এবং (-20% 3 + 3)% 3 হ'ল সত্যই
edc65

6

পাইথ, 71 24 23

L?+y/hb3@"0+-"%b3bk|yQ0

@ Xnor এর 40 অক্ষর পুনরাবৃত্তি ফাংশনের উপর ভিত্তি করে এটি একটি পুনরাবৃত্ত সমাধান। yমোড 3 সূচকটি ব্যবহার করে শেষ অঙ্কটি সন্ধান করে ইনপুটটির বার্নড টেনারি তৈরি করে এবং তারপরে ফ্লোর্ড ডিভিশন ব্যবহার করে বাকি সংখ্যাগুলি (এন + 1) / 3 এর জন্য ভারসাম্য ত্রৈমাসির সমান হয় তা ব্যবহার করে। তারপরে, এটি ফাংশনটিকে কল করে ফলাফলটি ফেরত পাঠায় অথবা 0 ইনপুট হলে 0 বলে।

এখানে চেষ্টা করুন।


অনলাইন পাইথ দোভাষী আছে?

আছে, আমি এটি পোস্টে যুক্ত করব।
isaacg

আপনার লিঙ্কটি নষ্ট হয়ে গেছে। আমি পুনরুদ্ধার এটি অনলাইন চেষ্টা করুন! , যা আপনি এখন থেকে ব্যবহার করবেন যখনই আপনার কোনও কিছুর জন্য দোভাষী প্রয়োজন। যাইহোক, আপনার কোডটি কাজ করে না বলে মনে হচ্ছে, আমার জন্য এটি কেবল ইনপুটটি ফিরিয়ে দেয়।
পাভেল

@ পাভেল এটি দু'বছর আগে কাজ করেছিল, যখন আমি এটি লিখেছিলাম। বর্তমান অনলাইন পাইথ ইন্টারপ্রেটারটি হল পাইথ.হেরোকুঅ্যাপ ডটকম আপনি যদি উপরের কোডটি চালাতে চান তবে আপনি অনুবাদককে পিছনে থেকে github.com/isaacg1/pyth থেকে পরীক্ষা করে দেখতে পারেন , যার পুরো ভাষার সংস্করণ নিয়ন্ত্রিত ইতিহাস রয়েছে।
isaacg

3

গণিত - 157 154 146 128

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

f=(s="";n=#;i=Ceiling@Log[3,Abs@#]~Max~0;While[i>=0,s=s<>Which[n>=(1+3^i)/2,n-=3^i;"+",n>-(1+3^i)/2,"0",1>0,n+=3^i;"-"];i--];s)&

এবং সুগমতার জন্য ইন্ডেন্টেশন সহ:

f = (s = ""; n = #; i = Ceiling@Log[3, Abs@#]~Max~0;
 While[i >= 0, 
  s = s<>Which[
   n >= (1 + 3^i)/2, n -= 3^i; "+",
   n > -(1 + 3^i)/2, "0", 
   1 > 0, n += 3^i; "-"
  ];
 i--];
s)&

ব্যবহার:

f[414]

আউটপুট:

+--0+00

চরিত্রের সংখ্যা হ্রাস করার জন্য মার্টিন বাটনারকে অনেক ধন্যবাদ।


3

গণিত, 54 অক্ষর

এক্সনরের পুনরাবৃত্তির অনুরূপ

ইউনিকোড প্রতীক প্রতিস্থাপন করতে ব্যবহৃত হয় Floor, Part,!=

If[(t=⌊(#+1)/3⌋)≠0,#0@t,""]<>{"0","+","-"}〚#~Mod~3+1〛&

আউটপুট

fসংক্ষিপ্তসার হিসাবে সংরক্ষণ করা এবং ইউনিকোড ছাড়া লিখিত আপনি যদি দেখতে পারেন না

f=If[(t=Floor[(#+1)/3])!=0,#0@t,""]<>{"0","+","-"}[[#~Mod~3+1]]&
f /@ {8, 19, -14, 414} // Column

+0-
+-0+
-+++
+--0+00

3

জিএনইউ সেড, 236 বাইট

/^0/bV
:
s/\b9/;8/
s/\b8/;7/
s/\b7/;6/
s/\b6/;5/
s/\b5/;4/
s/\b4/;3/
s/\b3/;2/
s/\b2/;1/
s/\b1/;0/
s/\b0//
/[^;-]/s/;/&&&&&&&&&&/g
t
y/;/1/
:V
s/111/3/g
s/3\b/3:/
s/311/33!/
s/31/3+/
y/3/1/
tV
s/1/+/
y/1:/!0/
/-/{s/-//
y/+!/!+/
}
y/!/-/

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

ব্যাখ্যা

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

চূড়ান্ত আউটপুট আগে, তিন ডিজিট -, 0এবং +দ্বারা প্রতিনিধিত্ব করা হয় !, :এবং +যথাক্রমে।

একটি আকর্ষণীয় ফলাফলের জন্য, আমরা শুরু করি -48, যা আনারিতে রূপান্তরিত হয়েছে ( -অক্ষত সহ)। প্রথম (ডান-সর্বাধিক) ট্রিট গণনা করতে, আমাদের 48 ÷ 3 এর অবশিষ্ট গণনা করতে হবে। আমরা 111s এর পরিবর্তে এটি করতে পারি 3:

-111111111111111111111111111111111111111111111111 │ s/111/3/g
# => -3333333333333333

48 ÷ 3 এর কোনও অবশিষ্ট নেই, সুতরাং কোনও 1গুলি নেই , এবং আমরা জানি আমাদের প্রথম ট্রিট :(0 এর জন্য), তাই আমরা এটি প্রতিস্থাপন করব:

-3333333333333333 │ s/3\b/3:/
# => -3333333333333333:

এখন আমাদের "আমাদের স্থান" রয়েছে, তাই আমরা জানি 3যে বাকিগুলি ত্রিশ স্থানটি উপস্থাপন করে। গণিতকে কাজ করে রাখতে আমাদের এগুলিকে 3 দিয়ে ভাগ করতে হবে, অর্থাত্ এগুলি এর সাথে প্রতিস্থাপন করতে হবে 1:

-3333333333333333: │ y/3/1/
# => -1111111111111111:

আসুন আমাদের গণিতটি ডাবল-চেক করুন: আমাদের 1111111111111111ত্রিশ জায়গায় 16 টি (অ্যানারি ) এবং এক জায়গায় শূন্য ( :) রয়েছে। এটি 3✕16 + 1✕0 = 48. এখন পর্যন্ত খুব ভাল।

এখন আমরা আবার শুরু। 111এর সাথে 3এস প্রতিস্থাপন করুন :

-1111111111111111: │ s/111/3/g
# => -333331:

এবার আমাদের বাকী অংশটি রয়েছে 1, সুতরাং আমরা +তিনটি জায়গায় রেখে বাকি 3গুলি এর সাথে প্রতিস্থাপন করব 1:

-333331: │ s/31/3+/; y/3/1/
# => -11111+:

স্যানিটি পরীক্ষার সময়: আমাদের 11111নাইনদের জায়গায় একটি 5 (অ্যানারি ), +ত্রিশ জায়গায় 1 ( ) এবং এক জায়গায় 0 ( :) রয়েছে: 9✕5 + 3✕1 + 1✕0 = 48. দুর্দান্ত! আবার আমরা 111এর সাথে 3এসগুলি প্রতিস্থাপন করব :

-11111+: │ s/111/3/g
# => -311+:

এবার আমাদের বাকী অংশটি (2 11)। এটি দুটি ট্রিট ( +!) নেয় , যার অর্থ আমাদের একটি বহন রয়েছে। দশমিক গাণিতিকের মতো, এর অর্থ আমরা ডানদিকের সংখ্যাটি নিয়েছি এবং বাকীটি কলামে বামে যুক্ত করব। আমাদের সিস্টেমে, এর অর্থ আমরা !নাইন স্থান রেখেছি এবং এর বামে আরও তিনটি যুক্ত করব, তারপরে 27 এর সমস্ত স্থানের প্রতিনিধিত্ব করতে সমস্ত 3গুলি এর সাথে প্রতিস্থাপন করুন 1:

-311+: │ s/311/33!/; y/3/1/
# => -11!+:

এখন আমাদের কাছে কোনও 3s অবশিষ্ট নেই, তাই আমরা বাকী যেকোন অখণ্ডিত অঙ্কগুলি তাদের সংশ্লিষ্ট ট্রিটগুলির সাথে প্রতিস্থাপন করতে পারি। দুটি ( 11) হ'ল +!:

-11!+: │ s/11/+!/
# => -+!!+:

আসল কোডে এটি দুটি ধাপে করা হয় s/1/+/এবং y/1:/!0/বাইটগুলি সংরক্ষণ করতে। দ্বিতীয় পদক্ষেপটি :s এর সাথে প্রতিস্থাপন করে 0, তাই এটি আসলে এটি করে:

-11!+: │ s/1/+/; y/1:/+0/
# => -+!!+0

এখন আমরা আমাদের নেতিবাচক নম্বর আছে কিনা তা পরীক্ষা করে দেখি। আমরা করি, সুতরাং আমাদের চিহ্নটি থেকে মুক্তি দিতে হবে এবং তারপরে প্রতিটি ট্রিট উল্টাতে হবে:

-+!!+0 │ /-/ { s/-//; y/+!/!+/; }
# => !++!0

অবশেষে, আমরা !এস এর সাথে -এস প্রতিস্থাপন করব :

!++!0 │ y/!/-/
# => -++-0

এটাই!


2

স্ট্যাক্স , 17 বাইট

ë1·âΓM¿├>Ö≥Er☺à┤3

এটি চালান এবং এটি ডিবাগ করুন

এখন পর্যন্ত সংক্ষিপ্ত উত্তর, তবে কিছু গল্ফ ভাষা খুব সহজেই পিটানো উচিত। অ্যালগরিদম @ xnor এর পাইথন উত্তরের মতো।

এএসসিআইআই সমতুল্য:

z{"0+-";3%@+,^3/~;wr

1

জাভাস্ক্রিপ্ট 108 102 (ES6, কোনও পুনরাবৃত্ত কল নেই)

t=a=>{v="";if(0==a)v="0";else for(a=(N=0>a)?-a:a;a;)v="0+-"[r=(a%3+3)%3]+v,2==r&&++a,a=a/3|0;return v}

108 এ আসল প্রবেশ

t=a=>{v="";if(0==a)v="0";else for(a=(N=0>a)?-a:a;a;)v=(N?"0-+":"0+-")[r=a%3]+v,2==r&&++a,a/=3,a|=0;return v}

@ এডসি 65 এর উত্তরের মতো অভিনব নয় ... আমি এটিকে আরও কমাতে যে কোনও সহায়তার প্রশংসা করব ...


1

ক্লোজার, 242 বাইট

#(clojure.string/join""(map{1"+"0"0"-1"-"}(loop[x(vec(map read-string(clojure.string/split(Integer/toString % 3)#"")))](let[y(.indexOf x 2)](if(< y 0)x(let[z(assoc x y -1)](recur(if(= y 0)(vec(cons 1 z))(assoc z(dec y)(inc(x(dec y))))))))))))

এটি কি এখন পর্যন্ত দীর্ঘতম ক্লোজার জবাব?

অসম্পূর্ণ (মন্তব্য সহ):

(use '[clojure.string :only (split join)]);' (Stupid highlighter)
; Import functions

(defn ternary [n]
  (join ""
  ; Joins it all together
    (map {1 "+" 0 "0" -1 "-"}
    ; Converts 1 to +, 0 to 0, -1 to -
      (loop [x (vec (map read-string (split (Integer/toString n 3) #"")))]
      ; The above line converts a base 10 number into base 3,
      ; and splits the digits into a list (8 -> [2 2])
        (let [y (.indexOf x 2)]
        ; The first occurrence of 2 in the list, if there is no 2,
        ; the .indexOf function returns -1
          (if (< y 0) x
          ; Is there a 2? If not, then output the list to
          ; the map and join functions above.
            (let [z (assoc x y -1)]
            ; Converts where the 2 is to a -1 ([2 2] -> [-1 2])
              (recur
                (if (= y 0) (vec (cons 1 z))
                  ; If 2 is at the 0th place (e.g. [2 2]),
                  ; prepend a 1 (e.g. [-1 2] -> [1 -1 2])
                  (assoc z (dec y) (inc (x (dec y)))))))))))))
                  ; Else increment the previous index
                  ; (e.g. [1 -1 2] -> [1 0 -1])

1

8 ম , 179 171 অক্ষর

এখানে এটি 8 তম মধ্যে একটি সম্পূর্ণ প্রোগ্রাম যা দশমিক স্বাক্ষরিত পূর্ণসংখ্যাকে ইনপুট হিসাবে গ্রহণ করে এবং এটিকে ভারসাম্যপূর্ণ ত্রৈমাসিকীতে রূপান্তর করে

 
: f "" swap repeat dup 3 n:mod ["0","+","-"] swap caseof rot swap s:+ swap dup n:sgn n:+ 3 n:/mod nip while drop s:rev ;
"? " con:print 16 null con:accept >n
f cr . cr
 

পরীক্ষা

 
? 414
+--0+00
 

প্রোগ্রামটি প্রথমবার রূপান্তর করতে কোনও সংখ্যার জন্য অনুরোধ করে (প্রয়োজনীয় হিসাবে)। তারপরে, fনিম্নোক্ত লাইনের মতো আরও সংখ্যায় রূপান্তর করার জন্য শব্দটি প্রার্থনা করা সম্ভব :

 
[ 8 , 19 , -14 , ] ( nip dup . space f . cr ) a:each drop 
 

আউটপুট

 
8 +0-
19 +-0+
-14 -+++
 

কোড ব্যাখ্যা

 
"? " con:print 16 null con:accept >n
 

এটি ইনপুট হ্যান্ডলিংয়ের কোড। কোডটির মূলটি শব্দের ভিতরে রয়েছে fগল্ফ কোর্স থেকে দূরে আমি শব্দটির >btপরিবর্তে ব্যবহার করতাম f। এখানে এটি f(মন্তব্য সহ) এর একটি অদম্য সংস্করণ :

 
: f \ n -- s
    ""   \ used for the first symbol concatenation
    swap \ put number on TOS to be used by loop
    repeat
        dup 
        3 n:mod      \ return the remainder of the division by 3
        [ "0" , "+" , "-" , ] 
        swap caseof  \ use remainder to take proper symbol
        rot          \ put previous symbol on TOS 
        swap         \ this is required because "" should come first
        s:+          \ concatenate symbols
        swap         \ put number on TOS 
        dup
        n:sgn n:+    \ add 1 if positive or add -1 if negative
        3 n:/mod nip \ put quotient only on TOS
    while drop
    s:rev            \ reverse the result on TOS
;
 

0

জাভা, 327 269 ​​টি অক্ষর

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

import java.util.*;class a{public static void main(String[] h){int i=Integer.parseInt(new Scanner(System.in).nextLine());String r="";while(i!=0){if(i%3==2||i%3==-1){r="-"+r;}else if(i%3==1||i%3==-2){r="+"+r;}else{r="0"+r;}i=i<0?(i-1)/3:(i+1)/3;}System.out.println(r);}}

এটি এখানে চেষ্টা করুন: http://ideone.com/fxlBBb

সম্পাদনা

এর BufferedReaderদ্বারা প্রতিস্থাপন করা হয়েছে Scanner, আমাকে throwsধারাটি সরিয়ে দেওয়ার অনুমতি দিয়েছিল , তবে আমদানি (+2 অক্ষর) পরিবর্তন করতে হয়েছিল। Integerদ্বারা প্রতিস্থাপন int। দুর্ভাগ্যবশত, প্রোগ্রাম যদি সেখানে নেই কম্পাইল করা হবে না String[] hmain


1
আপনি নিজের একটি Scannerপরিবর্তে কয়েকটি বাইট সংরক্ষণ করতে সক্ষম হতে পারেন BufferedReader। এছাড়াও, String[] hএবং throws java.lang.Exceptionসম্ভবত প্রয়োজনীয় নয় এবং আপনি এর intপরিবর্তে আরও কয়েকটি বাইট সংরক্ষণ করতে পারেন Integer

0

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

v=>[...v].map(x=>t=3*t+((+x!=+x)?(x+1)-0:0),t=0)&&t

অক্ষরের মধ্য দিয়ে লুপ করুন। প্রথমে পূর্বের মোট বার 3 টি গুণান, তারপরে যদি isNaN (অক্ষর) সত্য হয় তবে স্ট্রিং (অক্ষর + "1") কে একটি সংখ্যায় রূপান্তর করুন এবং এটি যুক্ত করুন, অন্যথায় শূন্য করুন।




0

এপিএল (এনএআরএস), 26 টি অক্ষর, 52 বাইট

{+/(3*¯1+⍳≢⍵)ׯ2+⌽'-0+'⍳⍵}

পরীক্ষা:

  h←{+/(3*¯1+⍳≢⍵)ׯ2+⌽'-0+'⍳⍵}
  h '+0-'
8
  h '+-0+'
19
  h '-+++'
¯14
  h ,'-'
¯1
  h ,'0'
0
  h ,'+'
1

এটি ব্যবহার করা সম্ভব হলে এটি কম হতে পারে তবে এটি নিষিদ্ধ ...

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