নম্বর এনক্রিপ্ট!


12

সমস্যাটি:

দু'জন শত্রু গোপন এজেন্ট যোগাযোগের একটি দুর্দান্ত পদ্ধতি (আপনার জন্য) তৈরি করেছে!

এনক্রিপশন প্রক্রিয়া কীভাবে কাজ করে তা এখানে:

1) প্রতিটি অক্ষরের ascii সমতুল্য নিন। (কোনও স্থান, সংখ্যা বা যতিচিহ্ন প্রেরণ করা হয় না)

2) বার্তায় প্রতিটি অক্ষরের জন্য, এর সমতুল্য সমতুল্য এবং তার পরে বর্ণ (যদি এটি বিদ্যমান থাকে, তবে এটি 0 হিসাবে বিবেচনা করা উচিত), গুণিত হয় (এই পণ্যটি অ্যারে / তালিকায় সংরক্ষণ করা হয়) এবং সংক্ষিপ্তসার (এই সংখ্যাটিও একটি ভিন্ন তালিকায় সঞ্চিত)

3) দুটি তালিকা (যোগফল এবং পণ্যগুলির) একসাথে যোগ করা হয়েছে (অঙ্কের তালিকা, তারপরে গুণকের তালিকা, একই অ্যারেতে) এবং সংক্রমণিত।

এই প্রক্রিয়াটি বিপরীত করতে আপনাকে এই ক্ষুদ্রতম প্রোগ্রামটি লিখতে হবে এবং এই ফর্ম্যাটে পাঠানো বার্তাগুলি ডিক্রিপ্ট করতে হবে!

উদাহরণস্বরূপ ইনপুট এবং আউটপুট জোড়া:

[173, 209, 216, 219, 198, 198, 225, 222, 208, 100, 7272, 10908, 11664, 11988, 9657, 9657, 12654, 12312, 10800, 0] -> “HelloWorld”
[131, 133, 164, 195, 197, 99, 4290, 4422, 6499, 9506, 9702, 0] -> “ABCabc”

এটি , তাই বাইটের মধ্যে ক্ষুদ্রতম সমাধানটি জিততে পারে।

ত্রুটি বার্তাগুলি অনুমোদিত।

আপনার প্রোগ্রামটি তালিকা / 1-মাত্রিক অ্যারে বা কমা-বিভাজিত স্ট্রিং দেওয়া যেতে পারে, যদি আপনি আপনার জমাটিতে উল্লেখ করেন। ডিফল্ট হ'ল একটি অ্যারে / তালিকা।


1
কেন সেখানে বহুগুণের তালিকা রয়েছে? শুধু পরিমাণগুলি যথেষ্ট তথ্য।
orlp

1
@ অরলপ আরও গল্ফিং সুযোগের অনুমতি দিতে পারে? :)
জোনাথন অ্যালান

1
@ অরপ ওহ না, আপনি মজা নষ্ট করেছেন!
এরিক আউটগল্ফার

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

@orlp শুধু গুণকগুলি যথেষ্ট নয়, তাই না?
ericw31415

উত্তর:


5

কান্ড , 7 6 বাইট

mcĠ≠←½

এটি অনলাইন চেষ্টা করুন! ডকুমেন্টেশন অনুযায়ী নেতৃস্থানীয় mপ্রয়োজন হবে না, কিন্তু বর্তমানে একটি বাগ আছে বলে মনে হচ্ছে।

সম্পাদনা করুন: -1 বাইট Zgarb ধন্যবাদ!

ব্যাখ্যা:

     ½ -- split input list into half
    ←  -- take first list
  Ġ≠   -- subtract each list element from the previous one
mc     -- convert list of code points to string

আমার মনে হয় `-হতে পারে cপ্রকৃতপক্ষে আচরণটি বাগের মতো দেখায়।
Zgarb

@ জাগারব এটি অসম বাস্তবায়নের জন্য ব্যবহারিক উপায়। এটি কোথাও নথিভুক্ত করা হয়?
লাইকনি

এটি হুস্ক উইকির শব্দার্থক পৃষ্ঠায়
জগারব 11

1
দেখে মনে হচ্ছে আপনি নিজের ব্যাখ্যা বদলেছেন, তবে আসল কোড স্নিপেট নিজেই নয়। :)
আইফোনিক্স

@ আইফোনিক্স ধন্যবাদ, আমি এটিকে সংশোধন করেছি।
লাইকনি

8

ব্রেনফাক , by 66 বাইট

,[>>>+<[-<+>>-<]<[->+<],]>[<<,>>[-<+>]<-]<<<[>[-<->>+<]<<]>.>>[.>]

ইনপুট হ'ল এনক্রিপ্টড স্ট্রিং। অসীম আকারের কোষ এবং EF এ 0 ধরে নেয়।

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

,[>>>+<[-<+>>-<]<[->+<],] Gets input and the number of characters divided by 2
>[<<,>>[-<+>]<-]<<< Remove the second half of the string (the multiplication part)
[>[-<->>+<]<<] Subtract each character from the previous one, while keeping a copy of the previous one.
>.>>[.>] Print the characters

5

হাস্কেল , 45 35 বাইট

map toEnum.scanr1(-).fst.span(<245)

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

ব্যাখ্যা

  • fst.span(<245)245 এর চেয়ে কম ছোটদের তালিকার শুরু থেকে সমস্ত সংখ্যার সাথে নেওয়া হয় Those কেবলমাত্র যোগফলের অংশ থেকে সংখ্যাগুলি, কারণ সর্বাধিক সম্ভাব্য সংমিশ্রণটি z + z = 122 + 122 = 244, এবং সবচেয়ে ছোট সম্ভাব্য পণ্য A * A = 65 * 65 = 4225
  • scanr1(-)তালিকার শেষ মানটি নেয় এবং এটি প্রাথমিক সংগ্রহকারী হিসাবে ব্যবহার করে। তারপরে তালিকার প্রতিটি উপাদান সামনে থেকে বর্তমান সংগ্রহকারীর দ্বারা বিয়োগ করা হয়, এবং ফলাফলটি পরবর্তী সংযোজক হিসাবে ব্যবহৃত হয় এবং একটি তালিকায় যুক্ত হয়।
  • map toEnum স্ট্রিংটি পুনরায় তৈরি করতে তালিকার প্রতিটি নম্বরকে সংশ্লিষ্ট চরিত্রের সাথে প্রতিস্থাপন করে।

3

জেলি , 9 বাইট

œs2ḢUạ\ỌU

এটি অনলাইন চেষ্টা করুন! অথবা উভয় পরীক্ষার কেস পরীক্ষা করুন।

বিকল্প।

ব্যাখ্যা

Ḣs2ḢUạ \ ỌU || পুরো প্রোগ্রাম।

2 এস 2 || দুটি অংশে বিভক্ত করুন, প্রথমটি প্রয়োজনে দীর্ঘতর হওয়ার সাথে।
   Ḣ || মাথা পেতে (প্রথম উপাদান)।
    ইউ || বিপরীত।
     । \ || সংযোজন দ্বারা সংযোজনকে হ্রাস করুন।
       Ọ || কোড পয়েন্ট থেকে অক্ষরে রূপান্তর করুন।
        ইউ || এবং আবার বিপরীত।



2

জেলি , 11 বাইট

œs2Ḣḅ-$ÐƤAỌ

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

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

কিভাবে?

œs2Ḣḅ-$ÐƤAỌ - Link: list of integers     e.g. [210,211,201,101,10989,11100,10100,0]
  2         - literal two                     2
œs          - split into equal parts          [[210,211,201,101],[10989,11100,10100,0]]
   Ḣ        - head                            [210,211,201,101]
       ÐƤ   - for postfixes:                  [210,211,201,101],[211,201,101],[201,101],[101]
      $     -   last two links as a monad:
     -      -     literal minus one           -1
    ḅ       -     convert from base           -99              ,111          ,-100      ,101
         A  - absolute value (vectorises)     [99,111,100,101]
          Ọ - convert to ordinal (vectorises) "code"

1

পাইট , 60 বাইট

←ĐĐŁ₂⁻⦋⇹ĐŁřĐŁ₂>*ž0`ŕĐĐŁ⁻⦋3ȘĐ4Ș3Ș4Ș÷⇹ĐŁřĐŁ<*žĐŁ⁻łŕ⇹Đ3Ș⇹÷Á↔áƇǰ

পূর্ণসংখ্যার একটি তালিকা নেয় এবং একটি অক্ষরের স্ট্রিং প্রদান করে।

ব্যাখ্যা:

←ĐĐŁ₂⁻⦋⇹          Gets the ASCII code of the last character
ĐŁřĐŁ₂>*ž         Gets the list of products and removes the 0 from the end of the list
0`ŕ ...  ł        Loops (0 is there so that the length can be removed from the stack)
ĐĐŁ⁻⦋              Gets the last product
3ȘĐ4Ș3Ș4Ș÷        Divides by the last ASCII code obtained
⇹ĐŁřĐŁ<*ž         Removes the last element from the array
ĐŁ⁻ł              Gets the length of the array - 1 (if 0, then exit loop - the last entry still has to be processed)
ŕ⇹Đ3Ș⇹÷           Divides the remaining product by the last ASCII code obtained           
Á↔á               Converts to array of ints
Ƈǰ                Converts to string of ASCII characters

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


1

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

a=>String.fromCharCode(...eval(`for(a.splice(i=a.length/2);--i;a[i-1]-=a[i])a`))


1

ভিবি স্ক্রিপ্ট - 74 71 বাইট

(আমি ..৪ থেকে reduce১ এ হ্রাস করতে সক্ষম হয়েছি, যখন ডু লুপের পরিবর্তে উইন্ড ব্যবহার করে)

ইনপুটটি অ্যারে a () এ রয়েছে, আউটপুটটি স্ট্রিং d এ

d="":p=0:n=(UBound(a)+1)/2:While n>0:n=n-1:t=a(n)-p:d=Chr(t)&d:p=t:Wend

ব্যাখ্যা

d=""          '// initialize the output string
p=0          '// initialize the ansii of following char (working back from last char)
n=(Ubound(a)+1)/2 '// the index of the last summed pair + 1 (base 0)
While n>0    '// begin loop working back from last summed pair
n=n-1        '// move back 1 char
t=a(n)-p     '// calculate the ansii by subtracting the ansii of following char
d=Chr(t)&d   '// prepend the char to output
p=t          '// this char becomes the following char for next
Wend         '// repeat etc.

উপরের কোডটি একটি ফাংশন হিসাবে মোড়ানো নিয়ে আমি এটি একটি ভিজস্ক্রিপ্ট ফাইলে পরীক্ষা করেছি:

dim s
Dim arr()
s = Split("173, 209, 216, 219, 198, 198, 225, 222, 208, 100, 7272, 10908, 11664, 11988, 9657, 9657, 12654, 12312, 10800, 0", ",")
ReDim arr(UBound(s))
Dim x 
For x = 0 To UBound(s)
    arr(x) = cint(s(x))
Next 

msgbox "=" & d(arr)



Private Function d(a())
d="":p=0:n=(UBound(a)+1)/2:While n>0:n=n-1:t=a(n)-p:d=Chr(t)&d:p=t:Wend
End Function

1

পরিষ্কার , 96 81 78 77 বাইট

zeroনাল চরিত্র।
উত্স ফাইলটিতে আক্ষরিক শূন্যতা সম্পর্কে ক্লিন এতটা পিক না হলে আমি অন্য একটি বাইট সংরক্ষণ করতে পারতাম।

import StdEnv
f=init o foldr(\a t=[toChar a-t!!0:t])[zero]o takeWhile((>)245)

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


বেনামে ফাংশনগুলি সাধারণভাবে গ্রহণযোগ্য, তাই আপনি চাইলে এটিকে বাদ দিতে পারেন f=
লাইকনি

@ লাইকোনি এই ক্ষেত্রে এর বৈধতা সম্পর্কে আমি নিশ্চিত নই, কারণ এটির জন্য ইনলাইন ব্যবহার করার জন্য বন্ধনী প্রয়োজন, এবং f=এটি সবচেয়ে স্বল্পতম কাজ, তাই ন্যূনতম অনুরোধ যাইহোক দুটি যোগ করুন।
0urous




0

পার্ল 6 ,  43 39  35 বাইট

{[~] [R,](produce *R-*,[R,] .[^*/2])».chr}

এটা পরীক্ষা করো

{[~] [R,]([\[&(*R-*)]] [R,] .[^*/2])».chr}

এটি পরীক্ষা করুন (উপরের মতো একই করুন)

{[~] [R,]([\R[&(*R-*)]] .[^*/2])».chr}

এটা পরীক্ষা করো

{[R~] [\R[&(*R-*)]](.[^*/2])».chr}

এটা পরীক্ষা করো

ব্যাখ্যা:

{[R~] [\R[&(*R-*)]](.[^*/2])».chr}

{                                }      # block lambda with parameter `$_`

      [\R[&(*R-*)]](.[^*/2])            # turn sums back into ordinals (reversed)

                    .[^*/2]             # first half of `$_` (implicit method call)
            *R-*                        # lambda, reverse of *-*
         [&(    )]                      # use it as an infix operator
                                        # (same as R- except left associative)
        R                               # reverse arguments and associativity
                                        # (same as - except right associative)
      [\          ](       )            # produce values `[\+] 1,2,3` => `(1,3,6)`
                                        # uses associativity to determine direction
                                        # `[\**] 1,2,3` => `(3,8,1)`

                            ».chr       # call `.chr` method on all values
                                        # (possibly concurrently)

 [R~]                                   # concatenate in reverse
                                        # (shorter than `join '', reverse …`)

0

05 এ বি 1 ই , 9 বাইট

2ä¬Å«-}çJ

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

ব্যাখ্যা

2ä        # Split input list in two (equal if possible) parts.
  ¬       # Push head(a).
   Å«-}   # Cumulative reduce the list by subtraction (from the right).
       ç  # Convert each integer in the list to its corresponding ASCII char.
        J # Join list together to string.

Jতোর দরকার নেই
শেগি

@ শেগজি çযদিও বর্ণের তালিকাটিকে স্পষ্টভাবে স্ট্রিংয়ে রূপান্তরিত করে না। যদি আমি সমস্যাটি সঠিকভাবে বুঝতে পারি তবে প্রোগ্রামটির অক্ষরের একটি তালিকা নয়, একটি স্ট্রিং আউটপুট করা দরকার।
উইসোয়া


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