সংমিশ্রণ তালায় কোডটি ক্র্যাক করুন


22

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

সমন্বয় লক

আপনি আরও জানেন যে অন্যান্য লাইনের সংখ্যার ক্রমটি দেখে সংমিশ্রণ লাইনে কী সংখ্যা থাকতে হবে (এবং সুতরাং এটি আনলক করার জন্য সংমিশ্রণটি কী) তা কার্যকর করা সম্ভব।

যদি লকের প্রতিটি লাইনের সংযুক্তি রেখার জন্য লাইন 0 থেকে শুরু করে লাইন 9-তে একটি নম্বর দেওয়া হয়, উদাহরণস্বরূপ, লাইন 4-তে সংখ্যাগুলি থাকে 5336তবে তা আনলক করার সংমিশ্রণ হবে 1992

দুর্ভাগ্যক্রমে লকগুলি ইতিমধ্যে প্যাকেজ হয়ে গেছে এবং প্রতিটি লকের আপনার দৃষ্টিভঙ্গি अस्पष्ट, সুতরাং আপনি কেবলমাত্র লকের বিভিন্ন লাইনে সংখ্যা দেখতে পাবেন।

চ্যালেঞ্জ

সংখ্যার 4 জোড়া দেওয়া হয়েছে, যেখানে পূর্ণসংখ্যার প্রথম অঙ্কটি রেখার সংখ্যাটি উপস্থাপন করে এবং দ্বিতীয় সংখ্যাটি সেই লাইনে প্রদর্শিত সংখ্যাটির প্রতিনিধিত্ব করে, লকের সাথে সংমিশ্রণটি তৈরি করে। উদাহরণস্বরূপ আপনি যদি ইনপুট করেন:

57 23 99 45

তারপরে এটি আউটপুট করা উচিত:

2101

অথবা

25 78 63 15

এবং

3174

ধরুন ইনপুটটি সর্বদা `25 64 72 18 আকারে 4 ইতিবাচক পূর্ণসংখ্যার হবে।

এটি , তাই বাইটের সংখ্যার মধ্যে সংক্ষিপ্ততম প্রোগ্রামগুলি।

এছাড়াও এটি আমার প্রথম প্রশ্ন, তাই কোনও প্রতিক্রিয়া প্রশংসা করা হয়।


আমি মনে করি আপনাকে ইনপুটটি পরিষ্কার করা দরকার। আপনি " 4 জোড়া পূর্ণসংখ্যার " বলেছিলেন এবং তারপরে একটি উদাহরণ দিন 57 23 99 45। এটি চার জোড়া পূর্ণসংখ্যা নয়: এটি চারটি পূর্ণসংখ্যা। এবং কিছু উত্তর তারা ধরে নিচ্ছে যে তারা এটি একটি স্ট্রিং হিসাবে পেয়েছে, অন্যরা ধরে নিচ্ছে যে এটি 4 ইন্ট হিসাবে রেডি-পার্স করা হয়েছে।
পিটার টেলর

আমি একমত নই, এটি বলেছে যে চার জোড়া পূর্ণসংখ্যার ইনপুটটির ফর্ম্যাটটি পরিষ্কার হয়ে গেছে, 57টি পূর্ণসংখ্যা 5 এবং 7, পূর্ণসংখ্যার 57 নয় My আমার প্রথম ধারণাটি ছিল যে রেখাটি 57 এবং সংমিশ্রণটি 23 ছিল
Qwerty01

1
কীভাবে "সংখ্যার জোড়া?" এটি অনেক বেশি স্পষ্ট এবং সুনির্দিষ্ট হবে (এবং শীর্ষস্থানীয়দের সাথেও কাজ করে 0)।
ফ্লফি

প্রযুক্তিগতভাবে, সঠিক শব্দটি হবে পারমিটেশন লক । বেশিরভাগ "কম্বিনেশন লকস" আসলে ক্রমুয়েশন লক হয়, কারণ অঙ্কগুলির ক্রমটি একটি পৃথক করে।
nyuszika7h

প্রযুক্তিগতভাবে হ্যাঁ এটি সঠিক, তবে আমি মনে করি না যে এটি একটি আকর্ষণীয় শিরোনাম তৈরি করে।
ররি ম্যাকপ্রেরোয়

উত্তর:


32

সিজোম, 9 8 বাইট

ea9fbAf%

কমান্ড-লাইন আর্গুমেন্ট হিসাবে অঙ্কের জোড়গুলি পড়ে। করার কোড অনলাইনে পরখ করে দেখুন , পরিবর্তন eaকরার জন্য lS/কৃত্রিম stdin থেকে পড়তে।

উদাহরণ রান

$ cjam <(echo ea9fbAf%) 57 23 99 45; echo
2101
$ cjam <(echo ea9fbAf%) 25 78 63 15; echo
3174

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

অঙ্ক চরিত্র কোড হয় 48 + D । সুতরাং, দ্বি-অঙ্কের স্ট্রিং xy বিবেচনা করে একটি বেস 9 সংখ্যাটি 9 * (48 + x) + (48 + y) = 10 * (48 + x) + y - x ≡ y - x (মড 10) লাভ করে

ea       " Push the array of command-line arguments.                                      ";
  9fb    " Mapped base 9 conversion; replace each string 'xy' with (9 * ord(x) + ord(y)). ";
     Af% " Take the results modulo 10.                                                    ";

দাম্মি, আপনি আর কাউকে জিততে পারবেন না, না? : পি
অপ্টিমাইজার 21

আমি মনে করি না এর চেয়ে আমরা আরও ভাল সিজেমের উত্তর
পাবো

1
সেখানে কি ঘটেছে?
যুদ্ধ

1
@ ডিজিটালট্রামা: অবশ্যই, এগিয়ে যান স্ট্রিংটি "99"আসলে অ্যারে হিসাবে ব্যাখ্যা করা [57 57]হয় b; "xy"9bহিসাবে বাস্তবায়ন করা হয় 9 * ord(x) + ord(y)। আমার উত্তরে এটি যুক্ত করা উচিত।
ডেনিস

4
10,000 টি মুছে ফেলা সম্ভব ASCII- র সম্ভাব্য সমাধানগুলিকে সীমাবদ্ধ রাখলে সবেমাত্র সমস্ত 2-চরিত্রের প্রোগ্রাম covers েকে দেয়
ডেনিস

13

সিজেম, 13 12 11 টি অক্ষর

ব্যবহারকারী 23013 কে ধন্যবাদ, এটি এখন 11 টি অক্ষরে নেমে এসেছে :)

4{Ar:--A%}*

ব্যাখ্যা:

4{       }*     "Run the code block 4 times";
   r            "Read the next input token (whitespace separated)";
    :-          "Subtract 2nd number from the first treating r as a 2 numbered string";
  A   -         "Subtract the result of above from 10";
       A%       "Take modulus of 10 and store it on stack";

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

আমি জানি এটি আরও গল্ফ করা যেতে পারে। তবে সিজেমে এটি আমার প্রথম আসল প্রচেষ্টা এবং আমি অভিজ্ঞতার দ্বারা সীমাবদ্ধ আছি :)


বিকল্পভাবে, অন্যান্য পদ্ধতিতে 1 অতিরিক্ত অক্ষরে একই জিনিসটি করা:

l~]{_A/-A%}/     // My previous solution

অথবা

4{ri_A/-A%}*     // As pointed out by Ingo

অথবা

ea{i_A/-A%}/     // If input is passed through command line

আমি এই জন্য অপেক্ষা করছিলাম। ঠিক আছে, পরের সপ্তাহে ...
সোহম চৌধুরী

প্রথম তিনটি অক্ষর বিকল্পভাবে হতে পারে l~]। আমি মনে করি ইনপুট পার্সিংয়ের চেয়ে কম তিনটি দিয়েই সম্ভব হওয়া উচিত তবে আমি এর আগে কখনও সিজেএম ব্যবহার করি নি: /
ইনগো বার্ক

4{ri_A/-A%}*এক বাইট খাটো।
ইনগো বার্ক

1
আহ, বা আপনি আমার আগের মন্তব্যটি থেকে কী করেছেন। ভাল এখন দুটি 12 বাইট সমাধান আছে! :)
ইনগো বার্ক

3
বা 4{Ar:--A%}*
jimmy23013

6

গল্ফস্ক্রিপ্ট (14 13 )

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

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

~]{.10:^/-^%}/

একই সংখ্যক বাইটের জন্য আপনি করতে পারেন

~]{.10/- 10%}/

গল্ফস্ক্রিপ্টে 10 মান সহ কোনও পূর্বনির্ধারিত পরিবর্তনশীল?
অপ্টিমাইজার

দুর্ভাগ্যক্রমে, না। খুব খারাপ, কারণ ইতিমধ্যে স্ট্যাকের ইনপুটটি রাখা সিজেএমের চেয়ে সুবিধা হবে।
ইনগো বার্ক

হ্যাঁ, এটি সিজেমে 10 টি অক্ষর (স্ট্যাকের ইনপুট সহ) বা গল্ফস্ক্রিপ্টে 11 (পূর্বনির্ধারিত ভেরিয়েবল সহ) হতে পারে
অপ্টিমাইজার

গল্ফস্ক্রিপ্টে আমারও 12 টি থাকতে পারে কেবল যদি আমাকে জায়গাটি না ছেড়ে দিত - 10
ইনগো বার্ক

1
হি, এমনকি সংক্ষিপ্ত ভাষাতেও তাদের সংক্ষিপ্ত কমগুলি রয়েছে: পি
অপ্টিমাইজার

6

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

ডেনিসের চতুর বেস 9 ট্রিকটি ধার করা :

9i[?A%nd]dxxxx

ইনপুট পূর্ণসংখ্যা এসটিডিআইএন থেকে প্রতি লাইনে একটি করে পড়ুন।

ব্যাখ্যা:

9i                # Set input radix to 9
  [     ]         # push a macro, defined thus:
   ?              #   read number from STDIN and push
    A             #   push literal 10
     %            #   calculate number mod 10
      n           #   print, with no newline
       d          #   duplicate macro
         d        # duplicate macro
          xxxx    # execute the macro 4 times    

আউটপুট:

$ for i in 57 23 99 45; do echo $i; done | dc ./combolock.dc
2101$ 
$ for i in 25 78 63 15; do echo $i; done | dc ./combolock.dc
3174$ 
$ 

পূর্ববর্তী উত্তর, 18 বাইট:

কারণ আমি ভেবেছিলাম আমি এর সাথে "গল্ফিং" ভাষার আরও কাছে যেতে পারি (তবে হয়নি):

[A?A~--A%n]dddxxxx

1
আপনি একটি বাইট সংরক্ষণ করতে পারেন:9i[?A%nd]dxxxx
ডেনিস

@ ডেনিস - ফ্যান্টাস্টিক! এখন আমি গল্ফস্ক্রিপ্ট এবং এপিএল সহ ঘাড় এবং ঘাড়!
ডিজিটাল ট্রমা

6

সি 64 63 56 বা 61

যদি ইনপুটটি ফাইল থেকে পাইপ করা যায়

main(a){while(scanf("%d",&a)>0)putchar(48+(a-a/10)%10);}

যদি ইনপুটটি স্টিডিনে টাইপ করা উচিত

i;main(a){for(;i++-4;putchar(48+(a-a/10)%10))scanf("%d",&a);}

একটি লুপে চারটি সংখ্যা পড়ে এবং তারপরে প্রতিটি মানটি থেকে প্রথম অঙ্কটি বিয়োগ করে ফলাফলটি 10 ​​টি মুদ্রণ করে প্রক্রিয়া করে।

নীচে বিভিন্ন মন্তব্যে এবং প্রিন্টফের পরিবর্তে পুটচার ব্যবহার করে সঞ্চয়গুলি ধন্যবাদ


কুল। আপনি নির্বাণ দ্বারা একটি কমা সংরক্ষণ করতে পারবেন scanfবাহিরে for()ভালোa,i;main(){for(;i++-4;printf("%d",(a-a/10)%10))scanf("%d",&a);}
শ্রেনী নদী সেন্ট

আপনি পারা এছাড়াও ব্যবহার করে 2 বাইট সংরক্ষণ a*.9পরিবর্তেa-a/10
Rev

পছন্দ করুন লুপের জন্য সমস্ত কিছু রাখার দিকে মনোনিবেশ করেছি যা আমি এটি মিস করেছি
অ্যালকিমিস্ট

1
@ এসিডশাউট দুঃখিত - এটি কাজ করে না। উদাহরণস্বরূপ * 78 * .9 = .2০.২, যখন = 78 - /10/10/১০ = .১. এছাড়াও .9 ব্যবহার করা যুক্তিটিকে দ্বিগুণে উন্নীত করে যাতে আমি মোড নিতে পারি না।
অ্যালকিমিস্ট

আপনি একটি whileলুপ ব্যবহার করে এবং তার aযুক্তি হিসাবে ঘোষণা করে কয়েকটি বাইট সংরক্ষণ করতে পারেন main:main(a){while(scanf("%d",&a)>0)printf("%d",(a-a/10)%10);}
ডেনিস

5

পাইথন 3, 64

সহজবোধ্য।

print(''.join([(i-i//10)%10 for i in map(int,input().split())]))

এর [2, 1, 0, 1]পরিবর্তে ( 46 ) বলুন, আমাকে মুদ্রণ করার অনুমতি দেওয়া থাকলে এটি সংক্ষিপ্ত হতে পারে :

print([i%10-i//10 for i in map(int,input().split())])

আপনি str((i-i//10)%10)দ্বিতীয়টি ব্যবহার না করে সরাসরি গ্রহণ করে কিছু সংরক্ষণ করতে পারেন map()। আমি আমার জন্যও জেনারেটর দিয়ে শুরু করেছি, তবে দেখতে পেলাম যে একটি আসল forলুপটি খাটো হয়ে গেছে।
ডিএলকস

হ্যাঁ, তার জন্য ধন্যবাদ!
সোহম চৌধুরী

আপনি তালিকা-বোধগম্য ব্যবহার করছেন কেন? 2 অক্ষর সংরক্ষণ করতে genexps ব্যবহার করুন: print(''.join((i-i//10)%10for i in map(int,input().split())))। শূণ্যস্থান আউটপুটে allowd এছাড়াও আপনি এড়াতে পারেন joinএবং ব্যবহার tuple-unpacking: print(*((i-i//10)%10for i in map(int,input().split())))
বাকুরিউ

আমি আপনি ঠিক অনুমান.
সোহম চৌধুরী

4

সি, 92

#define a(n) ,(10+v[n][1]-*v[n])%10
main(int c,char**v){printf("%d%d%d%d"a(1)a(2)a(3)a(4));}

কমান্ডলাইন থেকে ইনপুট। দ্বিতীয় থেকে প্রতিটি আর্গুমেন্টের প্রথম এএসসিআইআই কোড বিয়োগ করে, 10 যোগ করে এবং মডিউল 10 নেয়।

আমি মনে করি এটি প্রথমবারের মতো আমি printfচারটি দিয়ে একটি লিখেছিলাম %এবং কোনও কমা নেই (কমাটি এতে রয়েছে #define.)


#define f scanf("%c%c ",&a,&b);putchar(48+(9*a+b)%10)এরপরে a,b;main(){f;f;f;f;}18 বাইট কম হবে।
ডেনিস

@ ডেনিস এটি একটি দুর্দান্ত উন্নতি, তবে এটি মূলত একটি সম্পূর্ণ ভিন্ন প্রোগ্রাম। আমি মনে করি কেউ যদি এটি পোস্ট করে তবে তা আপনি হওয়া উচিত, আমি নয়। আমি নিশ্চিত না যে স্থানটি scanfপ্রয়োজনীয় কিনা, scanfকেবলমাত্র একটি বিভাজক হিসাবে শ্বেত স্পেস পার্স করার কথা রয়েছে given অ্যালকিমিস্টের সিতে আরও ভাল ধারণা রয়েছে তবে দেখে মনে হচ্ছে আপনি ইতিমধ্যে আপনার সিজাম উত্তরের সাহায্যে এটি জিতেছেন।
স্তর নদী সেন্ট

হ্যা, আমি ঠাহর শুরু যে স্থান পর a(n)বাদ দেওয়া যেতে পারে, তবে আমি লক্ষ্য করেছি যে নির্বাণ printf("%d%,...)আপনার ম্যাক্রো প্রায় কয়েক বাইট বাঁচাতে হবে এবং পরিশেষে আমি একটু আসক্ত ... পেয়েছিলাম - স্থান প্রয়োজন হয় যেহেতু %cএকটি অক্ষর লেখা আছে, কোনো অক্ষর, তাই দ্বিতীয় রান এটি 32 সংরক্ষণ করবে a। - সি দিয়ে সিজেমকে প্রহার করা শক্ত প্রমাণ হওয়া উচিত। printf()আমার উত্তর হিসাবে ইতিমধ্যে দীর্ঘ ...
ডেনিস

4

জাভা - 203 বাইট

শুধু কারণ রয়েছে একটি জাভা এন্ট্রি হতে, আমি এই কোড একটি সুযোগ (প্রথম জমা কখনও) golfing দিতে একটি চমৎকার সুযোগ দেখেছি।

class M{public static void main(String[] a){String r="";for(int i=0;i<4;i++){int l=Byte.valueOf(a[i].substring(1));int f=Byte.valueOf(a[i].substring(0,1));r+=(l-f<0)?l-f+10:l-f;}System.out.print(r);}}

যদি কিছু উন্নতির সুযোগ থাকে তবে আমি তাদের সম্পর্কে জানতে পেরে আনন্দিত ;-)


আপনি [টিপস] সন্ধান করতে এবং আপনাকে শুরু করতে গল্ফিং সম্পর্কে বিভিন্ন টিপস পেতে পারেন :)
অপ্টিমাইজার

শীতল ধন্যবাদ! কিছু টিপস চেক করা আমাকে 13 বাইট শেভ করতে সহায়তা করেছে :)
স্যান্ডার

3

লুয়া - 46 টি অক্ষর

while''do a,b=io.read(1,1,1)print((b-a)%10)end

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

আমি কীভাবে এটি চালাচ্ছি:


1
আপনি উদাহরণ ডেটা ইনপুট / আউটপুট সরবরাহ করতে পারেন, এটি আইডিয়োনে
ররি ম্যাকপারলয়ের

@ হ্যারি 12345 আহ, সে সম্পর্কে দুঃখিত। অ্যানার্কি গল্ফ আমার স্ট্যান্ডিনপুট কীভাবে প্রয়োগ করব সে সম্পর্কে আমার মন স্থির করছে। আমি সম্ভবত এটি আরও ভাল কোড করতে পারে, কিন্তু মেহ, লুয়া ভয়ঙ্কর। আমি প্রোগ্রাম চালানো আমার একটি উদাহরণ পোস্ট।
AndoDaan

3

জাভাস্ক্রিপ্ট ES6 - 53 43 বাইট

f=n=>n.replace(/.. ?/g,a=>(1+a[1]-a[0])%10)

মোটামুটি সোজা ফাংশন, সংখ্যাগুলি পেতে রেজেক্স ব্যবহার করে। Http://jsfiddle.net/efc93986/1/ এ এটি ব্যবহার করে দেখুন । যদি ফাংশনগুলি অনুমোদিত না হয় তবে 52 বাইটে একটি স্ট্যান্ডেলোন প্রোগ্রাম:

alert(prompt().replace(/.. ?/g,a=>(1+a[1]-a[0])%10))

যেহেতু ইএস 6 বর্তমানে কেবল ফায়ারফক্সে কাজ করে, নিম্নলিখিত কোডটি যে কোনও আধুনিক ব্রাউজারে 70 বাইটে কাজ করে:

alert(prompt().replace(/.. ?/g,function(a){return(1+a[1]-a[0])%10}))

আমি তোমার ভালবাসি 1+
নিল

1
প্রশ্নটি বৈধ ইনপুট ধরে নিতে বলেছে, সুতরাং আপনি ...?পরিবর্তে ব্যবহার করতে পারেন /\d+ ?। প্রত্যাবর্তনের পরে স্থান বাদ দেওয়া যেতে পারে। এছাড়াও, যেহেতু কোনও নির্দিষ্ট আই / ও নির্দিষ্ট করা হয়নি, আপনার কোনও ফাংশন ব্যবহার করতে সক্ষম হওয়া উচিত।
ডেনিস

1
a-a[0]পরিবর্তে 1+a[1]-a[0]পাশাপাশি কাজ করা উচিত।
ডেনিস

2

পাইথন 2 - 33 বাইট

for i in input():print(i-i/10)%10

কমা-সীমাবদ্ধ ব্যবহারকারী ইনপুট গ্রহণ করে। উদাহরণস্বরূপ ইনপুট:

29,26, 31, 88

আউটপুট:

7
4
8
0

যদি উদাহরণটির সাথে হুবহু মিলে আউটপুট প্রয়োজন হয় তবে এটি অনেক দীর্ঘ। 47 বাইট:

print"%d"*4%tuple((i-i/10)%10 for i in input())

input()আমার পাইথন 2 দোভাষীতে কাজ করে না।
সোহম চৌধুরী

@ সোহমচৌধুরী আপনি কমা ব্যবহার করেছেন?
feersum

2
ওহ, না, আমি না। এটা এখন কাজ করে. পার্শ্ব নোটে, আমি মনে করি আপনাকে স্পেস অনুযায়ী স্থান-সীমিত ইনপুট নিতে হবে take
সোহম চৌধুরী

3
আমি সম্মত, ইনপুটটি স্পেস ডি-লিমিটেড হওয়া উচিত
ররি ম্যাকপেরলয়ে

2

এপিএল, ১৪

10|{--/⍎¨⍕⍵}¨⎕

ব্যাখ্যা
পর্দা থেকে ইনপুট লাগে। স্পেস-বিভাজিত মানগুলি অ্যারে হিসাবে পার্স করা হয়।
{...}¨প্রতিটি সংখ্যার জন্য, এটি ফাংশন এ খাওয়ান।
⍎¨⍕⍵আর্গুমেন্ট গ্রহণ করে, এর অঙ্কগুলির একটি অ্যারে তৈরি করে।
--/একক বিয়োগ দশকে গণনা করে।
10|Mod 10।


1
এটি 14 টি অক্ষর হতে পারে তবে এটি 24 বাইট
ইনগো বার্ক


তবে কোড গল্ফের জন্য আমরা ইউটিএফ -8 তে গণনা করি, কিছু বিশেষ অক্ষর নয়। এটি কেবল একটি ফাঁকফোকর হবে এবং খুব সহজেই আপত্তিজনকভাবে ব্যবহার করা যেতে পারে।
ইনগো বার্ক

1
@ ইনগোবার্ক মেটা কোডেগডগল্ফ.স্ট্যাককেক্সচেঞ্জ / এএ / 61 61১ / 72 72২২ অনুসারে উত্তরগুলি অন্য কোনও এনপিডিতে এনপিড করা যাবে যদি না অপেরা অন্যথায় বলে থাকে এপিএল অক্ষরগুলির জন্য সত্যই একটি আইবিএম কোডপেজ রয়েছে যা একক-বাইট ম্যাপিং, যা ইউনিকোড 3.0.০ এর আগে ডায়ালগ ব্যবহার করত। আপনি যদি ইউনিকোডে জোর দিয়ে থাকেন, তবে আমি যদি এমন কোনও নতুন ভাষা উদ্ভাবন করি যা ইউনিকোডবিহীন অক্ষর ব্যবহার করে? কীভাবে আপনি এটির জন্য বাইট গণনা করবেন?
টুইনাইট

আমি শপথ করতে পারতাম ডিফল্টটি ছিল ইউটিএফ -8। 14 বাইট হয়, তারপর।
ইনগো বার্ক

2

জে - 20 15

অ-ক্রিয়া ফর্ম (ফাংশন সংজ্ঞার পরিবর্তে বিবৃতি হিসাবে) এটি 5 টি অক্ষর খাটো:

10|-~/|:10#.inv

ক্রিয়া ফর্ম যা একটি সুন্দর ট্রেন :

10|[:-~/[:|:10#.inv]

উদাহরণস্বরূপ ইনপুটগুলিতে ব্যবহৃত এই ক্রিয়াটি:

   10|-~/|:10#.inv 57 23 99 45
2 1 0 1
   10|-~/|:10#.inv 25 78 63 15
3 1 7 4

rotd =: 10|[:-~/[:|:10#.inv] NB. verb form

   rotd 25 78 63 15
3 1 7 4
   rotd 57 23 99 45
2 1 0 1

2

হাস্কেল 60 58

main=interact$show.map((\x->mod(x-x`div`10)10).read).words

একক চরিত্রের অঙ্কগুলি, হাস্কেল গল্ফিংয়ের একটি বাস্তব নেমেসিস।


2

পার্ল: 38 40

print abs($_-int$_/10)%10for split" ",<>

আউটপুট:

% perl code.pl
57 23 99 45
2101

25 78 63 15                                     
3174

1
1. অ্যান্ডস্কোরগুলি মার্কডাউন সিনট্যাক্স, সুতরাং আপনার কোডটি কিছুটা গণ্ডগোল পেয়েছে। এটি রোধ করতে, চারটি স্পেস সহ ইনডেন্ট কোড। 2. absপ্রয়োজনীয় নয়; x - x/10নেতিবাচক হতে পারে না। ৩. আপনি যদি -040peস্থান-সীমিত ইনপুটটির পুনরাবৃত্তি করতে পতাকাগুলি (সাধারণত 5 বাইট হিসাবে গণনা করা) ব্যবহার করেন তবে আপনি নিজের কোডটি সংক্ষিপ্ত করতে পারবেন $_=($_-int$_/10)%10। ৪. আপনি যদি কমান্ড-লাইন পতাকাগুলি এড়াতে পছন্দ করেন তবে আপনি $/=$;কলটি সেট করে এবং মুছে ফেলে কিছু বাইট সংরক্ষণ করতে পারেন split
ডেনিস

1

রুবি, 35 বাইট

$*.map{|n|a,b=n.bytes;$><<(b-a)%10}

ব্যাখ্যা

কমান্ড লাইন আর্গুমেন্ট হিসাবে ইনপুট নেওয়া হয়। String#bytesএকটি পূর্ণসংখ্যার অ্যারে (ASCII অক্ষর কোডগুলি) প্রদান করে। কেবলমাত্র সর্বশেষ এবং প্রথম অক্ষর কোডের মধ্যে পার্থক্যটি গুরুত্বপূর্ণ, ইন্টিজরা নিজেরাই নয়।


1

সি # ও লিনকপ্যাড: 104

Util.ReadLine<string>("").Split(' ').Select(s =>(s[1]-s[0])).Aggregate("",(r,a)=>r+(a<0?10+a:a)).Dump();

1

সি ++ 118

int main()
{
int a,b,c;
for(int i=0; i<4; i++)
{
cin>>a;
b=a/10;
a=a%10;
c=a-b;
if(c<0)c+=10;
cout<<c;
}
}

1. অন্যান্য সংকলক সম্পর্কে নিশ্চিত না, তবে জিসিসির প্রয়োজন হয় #include<iostream>এবং তার std::আগে cinএবং আগে cout। ২. আপনি বাদ দিলে আপনার শর্তসাপেক্ষের প্রয়োজন নেই a=a%10। ৩. আপনার ভেরিয়েবলগুলি bএবং c, লাইনফিডগুলি এবং (কয়েকটি পরিবর্তনের সাথে) লুপের চারপাশে বন্ধনী প্রয়োজন নেই।
ডেনিস

1
@ সানডি: দয়া করে কোড সংশোধনকারী সম্পাদনাগুলি অনুমোদন করবেন না। এই বিশেষ ক্ষেত্রে, সম্পাদনা উত্তরটি অবৈধ করেছে। এটি প্রথম লাইনটিও সরিয়ে ফেলল, যা সমস্ত উত্তরে উপস্থিত থাকা উচিত।
ডেনিস

1
(সিসি @ টিউনপ্রোঙ্ক)
ডেনিস

@ ডেনিস এই সাইটে সাধারণত উত্তরগুলি প্রিপ্রসেসর লাইন অন্তর্ভুক্ত করে না। আমি লাইন বাদ দেওয়া #include<iostream>এবংusing namespace std;
bacchusbeale

আমি জানি সেখানে সাধারণত বাইট গণনা অন্তর্ভুক্ত থাকে না তবে আমি মনে করি তাদের উত্তরটিতে উপস্থিত থাকা উচিত।
ডেনিস

1

পিএইচপি - 90 টি অক্ষর

ভেবেছিলাম আমি কোড গল্ফকে চেষ্টা করব তাই এখানেই আমার প্রথম প্রচেষ্টা - সম্ভবত আরও গল্ফ করা যেতে পারে।

<?php $a=array(57,23,99,45);foreach($a as$b){echo abs(substr($b,0,1)-substr($b,1,1)%10);}

58 টি অক্ষর (ইসমাইল মিগুয়েলের সৌজন্যে)

for($i=0,$a=$_GET[n];$i<8;)echo abs($a[$i++]-$a[$i++]);

অ্যাক্সেস ফাইল ব্যবহার করে

file.php?n=57239945

এই কোডটি ব্যবহার করে দেখুন: <? for($i=0;$i<4;)echo abs($_GET[n][$i]%10);যা 44 টি চর দীর্ঘ। ব্যবহার করে একটি ব্রাউজার থেকে অ্যাক্সেস file.php?n[]=xx&n[]=yy&n[]=xy&n[]=yx। (অরক্ষিত কোড)
ইসমাইল মিগুয়েল

ব্যবহার সম্পর্কে ভাল ধারণা $_GETতবে এটি 57% 10 প্রদর্শন করে এবং আমার প্রয়োজন (5-7)% 10
ররি ম্যাকপ্রেরোয়

এই এক চেষ্টা করুন: <? for($i=0,$a=$_GET[n];$i<4;++$i)echo abs($a[$i][0]-$a[$i++][1]%10);। দুঃখের বিষয়, এটি 65 বাইট দীর্ঘ। ( $iসর্বশেষে বৃদ্ধিটি ভুলে গেছেন ) অথবা আপনি 61 বাইট দীর্ঘ <? for($i=0;$i<8;)echo abs($_GET[n][$i++]-$_GET[n][$i++]%10);হওয়ায় ব্রাউজারটি ব্যবহার করে চেষ্টা করতে এবং অ্যাক্সেস করতে পারেন file.php?n[]=x&n[]=y&n[]=x&n[]=y&n[]=x&n[]=y&n[]=x&n[]=y
ইসমাইল মিগুয়েল

হ্যাঁ দ্বিতীয়টি কাজ করে, কিছু করা দরকার $_GET['n']। আমার উত্তর সম্পাদনা করেছেন।
ররি ম্যাকপেরলরোয়

ভাল, এটি প্রয়োজন হয় না। এটি কেবল একটি সতর্কতা জারি করে। এই ওয়েবসাইটের জন্য এটি ঠিক আছে। কিন্তু এই এক চেষ্টা করুন: <? for($i=0,$a=$_GET[n];$i<8;)echo abs($a[$i++]-$a[$i++]);%10অনর্থক এবং আপনার ডিভাইসে এক কেবল ভাল দেখায়। এছাড়াও, আপনি এটি ব্যবহার করে অ্যাক্সেস করতে পারেন file.php?n[]=xyxyxyxy। এই দ্রবণটি 58 ​​বাইট দীর্ঘ।
ইসমাইল মিগুয়েল

0

পাইথন 3, 60

for x in input().split():print(-eval('-'.join(x))%10,end='')

নির্দিষ্ট হিসাবে নির্দিষ্ট ইনপুট এবং আউটপুট, যদিও এটি কোনও অনুবর্তনযোগ্য নতুন লাইন মুদ্রণ করে না। দুটি আকর্ষণীয় কৌশল এখানে রয়েছে: 1) দুটি কলকে int()একটি কল দিয়ে প্রতিস্থাপন করা eval()এবং 2) পাওয়ার জন্য ব্যবহার join()করা a-b, তারপরে এটি b-aপ্রয়োজনীয় হিসাবে উপেক্ষা করা । ভাগ্যক্রমে পাইথনের মডুলো অপারেটর ইতিবাচক মান দেয় এমনকি প্রথম যুক্তিটি নেতিবাচক হলেও!


কেন এই নিম্নমানের ছিল? এটি পুরোপুরি সূক্ষ্ম কাজ করে। (বিটিডব্লিউ, eval('-'.join(x))কৌশলটি উজ্জ্বল))
ফ্লোরকোয়াক

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