উপাদান-ভিত্তিক স্ট্রিংয়ের গুণ lic


28

এই চ্যালেঞ্জটি দ্বারা অনুপ্রাণিত হয়ে (শিরোনামের জন্য @ কায়ারডকোনারিংইহিং ধন্যবাদ!) আপনার কাজটি হ'ল দুটি মুদ্রণযোগ্য ASCII স্ট্রিং নেওয়া এবং নীচের নিয়মগুলির সাথে সেগুলি উপাদান অনুসারে গুণিত করুন।

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

দুটি স্ট্রিং দেওয়া হয়েছে (উদাহরণস্বরূপ splitএবং isbn) আপনি প্রথমে লম্বা লম্বা একটিটি কেটে ফেলবেন এবং তাদের ASCII কোডগুলি নির্ধারণ করুন :

split -> spli -> [115, 112, 108, 105]
isbn  -> isbn -> [105, 115,  98, 110]

পরবর্তী পদক্ষেপটি [0..94]হ'ল 32প্রতিটি কোড বিয়োগ করে পরিসরটিতে তাদের মানচিত্র করা :

[115, 112, 108, 105] -> [83, 80, 76, 73]
[105, 115,  98, 110] -> [73, 83, 66, 78]

এখন আপনি সেগুলি উপাদান-ভিত্তিক মডুলোগুলি 95(মুদ্রণযোগ্য পরিসরে থাকতে) গুন করবেন :

[83, 80, 76, 73] ⊗ [73, 83, 66, 78] -> [74, 85, 76, 89]

32পরিসীমা ফিরে পেতে যোগ করুন [32..126]:

[74, 85, 76, 89] -> [106, 117, 108, 121]

এবং চূড়ান্ত পদক্ষেপটি এএসসিআইআই অক্ষরগুলিতে তাদের আবার ম্যাপ করা:

[106, 117, 108, 121] -> "july"

বিধি

  • আপনি এমন একটি প্রোগ্রাম / ফাংশন লিখবেন যা বর্ণিত দুটি পদক্ষেপের স্টেপগুলি কার্যকর করে এবং ফলস্বরূপ স্ট্রিংটি মুদ্রণ করে বা প্রদান করে
  • ইনপুট ফর্ম্যাটটি নমনীয়: আপনি দুটি স্ট্রিং, স্ট্রিংগুলির একটি টুপল, স্ট্রিংগুলির তালিকা ইত্যাদি নিতে পারেন
  • ইনপুটটিতে এক বা দুটি খালি স্ট্রিং থাকতে পারে
  • ইনপুট মুদ্রণযোগ্য পরিসীমা অক্ষর হবে ( [32..126])
  • আউটপুটটি হয় কনসোলে মুদ্রিত হয় অথবা আপনি কোনও স্ট্রিং ফিরিয়ে দেন
  • আউটপুটটিতে ট্রেলিং হোয়াইটস্পেসের অনুমতি রয়েছে

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

"isbn", "split"                  -> "july"
"", ""                           -> ""
"", "I don't matter"             -> ""
"             ", "Me neither :(" -> "             "
"but I do!", "!!!!!!!!!"         -> "but I do!"
'quotes', '""""""'               -> 'ck_iKg'
"wood", "hungry"                 -> "yarn"
"tray", "gzip"                   -> "jazz"
"industry", "bond"               -> "drop"
"public", "toll"                 -> "fall"
"roll", "dublin"                 -> "ball"
"GX!", "GX!"                     -> "!!!"
"4 lll 4", "4 lll 4"             -> "4 lll 4"
"M>>M", "M>>M"                   -> ">MM>"

দ্রষ্টব্য : উদ্ধৃতিগুলি কেবল পঠনযোগ্যতার জন্য, 6th ষ্ঠ পরীক্ষার ক্ষেত্রে আমি 'পরিবর্তে ব্যবহার করেছি "


আপনার আউটপুটে পিছনে স্থান দেওয়ার অনুমতি আছে?
এরিক দি আউটগল্ফার

পুনঃটুইট দুঃখিত, আমি এটি পোস্ট করার পরে যোগ।
5

আমরা কি স্ট্রিংগুলির অ্যারে নিতে পারি? abc, def -> [['a', 'b', 'c'], ['d', 'e', 'f']]
সম্পূর্ণরূপে

স্থাপিত টুইট যদিও, যদি আপনার ভাষায় স্ট্রিংগুলি অক্ষরের অ্যারে হয় এবং চরগুলি একইরকম স্ট্রিং থাকে তবে আমার ধারণা এটি বৈধ হবে।
ბიმო

স্ট্রিংগুলির তালিকা হিসাবে আমাদের কী ইনপুট নেওয়ার অনুমতি রয়েছে?
জাকারি

উত্তর:


9

এমএটিএল , 12 বাইট

c32-p95\32+c

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

ব্যাখ্যা

c      % Implicitly input cell array of 2 strings. Convert to 2-row char matrix.
       % This pads the shorter string with spaces
32-    % Subtract 32, element-wise. Each char is interpreted as its ASCII code.
       % Note that padding spaces will give 0.
p      % Product of each column. Since (padding) spaces have been mapped to 0, the
       % product effectively eliminates those colums. So the effect is the same as
       % if string length had been limited by the shorter one
95\    % Modulo 95, element-wise
32+    % Add 32, element-wise
c      % Convert to char. Implicitly display

1
স্ট্রিং দৈর্ঘ্যের পার্থক্য পরিচালনার চতুর উপায়।
Sanchises

6

জেলি , 15 12 বাইট

z⁶O_32P€‘ịØṖ

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

-3 জনাথন অ্যালানকে ধন্যবাদ ।


হোয়াইটস্পেসের পিছনে পিছনে ছিটিয়ে থাকা অপব্যবহার। ;)
ডেনিস

@ ডেনিস ভাল এটি নিয়ম আছে, কেন এটি অপব্যবহার করবেন না?
এরিক আউটগল্ফার

আমি বিশ্বাস করি আপনি মুদ্রণযোগ্য অক্ষরের জন্য niladic পরমাণু ব্যবহার করে 3 বাইট সঞ্চয় করতে পারব, ØṖসঙ্গে z⁶O_32P€‘ịØṖ- আপনি সেরা ডবল চেক চাই গাণিতিক কাজ যদিও।
জোনাথন অ্যালান

@ জোনাথান অ্যালান অবশ্যই
এরিক আউটগল্ফার


5

পাইথন 2 , 75 70 বাইট

-3 বাইট শনির পরামর্শে ডেনিসের পরামর্শকে ধন্যবাদ জানায়। -২ বাইট জাকারির পরামর্শের জন্য ধন্যবাদ।

lambda*l:''.join(chr((ord(i)-32)*(ord(j)-32)%95+32)for i,j in zip(*l))

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


2
আমার উত্তরে একই কৌশল যা প্রস্তাবিত হয়েছিল:lambda*t:''.join(chr(((ord(i)-32)*(ord(j)-32))%95+32)for i,j in zip(*t))
ডেনিস

2
এবং ((ord(i)-32)*(ord(j)-32))%95+32(ord(i)-32)*(ord(j)-32)%95+32
একইটি

o_o ডেনিসকে মারছে। +1
জাকারি

1
হ্যাঁ, সত্যই নয়, আমি ব্যবহারের পরিবর্তে কেবল একটি তালিকা বোধগম্যে পরিবর্তন করেছি map। আমি কিছুটা দেরি করেছিলাম।
সম্পূর্ণরূপে

5

হাস্কেল , 60 57 বাইট

zipWith(\a b->toEnum$f a*f b`mod`95+32)
f=(-32+).fromEnum

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

প্রথম লাইনটি একটি যুক্তিযুক্ত ফাংশন যা দুটি যুক্তি গ্রহণ করে।

এটি অ্যালগরিদমের একটি সরাসরি এগিয়ে বাস্তবায়ন: zipWithউভয় স্ট্রিং গ্রহণ করে এবং অক্ষরের জোড়গুলিতে প্রদত্ত ফাংশন প্রয়োগ করে। এটি ছাঁটাই পরিচালনা করে এবং খালি স্ট্রিংয়ের জন্যও কাজ করে। fromEnumএবং toEnumহ'ল বিকল্পগুলি ordএবং chrঅক্ষর এবং তাদের ASCII মানগুলির মধ্যে স্যুইচ করার জন্য যা দীর্ঘ আমদানির প্রয়োজন হয় না।

সম্পাদনা করুন: -3 বাইট ব্রুস ফোর্টের ধন্যবাদ।


আপনি এই বন্ধনীগুলি 3টানা -32এবং সংরক্ষণ করে বাইটগুলি সংরক্ষণ করতে পারেন , এখানে দেখুন
18

5

সি ++, 331 291 282 270 268 বাইট, সংস্করণ 2 = 178 176 150 148 বাইট

মূল সংস্করণ :

#include<string>
#include<algorithm>
#define L length()
#define S std::string
S m(S a,S b){S c;int m=a.L<b.L?a.L:b.L;auto l=[m](S&s){s=s.substr(0,m);std::for_each(s.begin(),s.end(),[](char&c){c-=32;});};l(a);l(b);for(int i=0;i<m;++i){c+=a[i]*b[i]%95+32;}return c;}

ব্রুস ফোর্টের -40 বাইট ধন্যবাদ
-39 বাইট জ্যাকারিকে ধন্যবাদ

সংস্করণ 2, অন্যান্য লোকদের উত্তর দ্বারা অনুপ্রাণিত

#include<string>
#define L length()
using S=std::string;S m(S a,S b){S c;for(int i=0;i<(a.L<b.L?a.L:b.L);++i)c+=(a[i]-32)*(b[i]-32)%95+32;return c;}

যদি প্রথম সংস্করণটি ল্যাম্বডা ব্যবহার করে, কারণ এটি আমি সি ++ ১১ ম এসডি :: অ্যাসিঙ্ক ফাংশনটি পরীক্ষা করতে চেয়েছিলাম যে আমি আগেই শিখেছি, তাই আমি এটি কোনও কারণ ছাড়াই রেখেছি ...

আরও পঠনযোগ্য সংস্করণ:

#include<iostream>
#include<string>
#include<algorithm>

using namespace std;

#define L length()
#define S string

//Function code for the original version
S m(S a,S b) {
    S c;
    int m = a.L < b.L ? a.L : b.L;

    auto l=[m](S&s){
        s = s.substr(0, m);
        for_each(s.begin(),s.end(),[](char&c){
            c -= 32;
        });
    };
    l(a);
    l(b);
    for(int i=0;i<m;++i) {
        c += a[i] * b[i] % 95 + 32;
    }
    return c;
}

//Code for the version 2
S m2(S a,S b) {
    S c;
    for(int i = 0; i < (a.L < b.L ? a.L : b.L); ++i) {
        c += (a[i] - 32) * (b[i] - 32) % 95 + 32;
    }
    return c;
}

int main() {
    string a, b, c;
    getline(cin, a);
    getline(cin, b);
    c = m(a, b);
    cout << c;
}

1
পিপিসিজিতে আপনাকে স্বাগতম!
মার্টিন ইন্ডার

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

এছাড়াও আমি নিশ্চিত যে আপনি ঠিক একটি ফাংশন জমা দিতে পারেন, এই মত ।
10

আপনি কি এখানে স্পেসগুলি সরাতে পারবেন না: #include <string>=> #include<string>এবং #include <algorithm>=> #include<algorithm>?
জাকারি

এছাড়াও আপনার সমতুল্য ম্যাক্রো তৈরি করতে stringএবং সেই অনুযায়ী এটি ব্যবহার করতে সক্ষম হওয়া উচিত ।
জাকারি

3

ডায়ালগ এপিএল, 36 34 33 25 24 বাইট

{⎕UCS 32+95|×⌿32-⎕UCS↑⍵}

এটি অনলাইনে ব্যবহার করে দেখুন (ট্রাইএপিএল)!

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

ইনপুট হ'ল স্ট্রিংগুলির একটি তালিকা এবং এতে শ্বেত স্পেস রয়েছে।

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

{⎕UCS 32+95|×⌿32-⎕UCS↑⍵}
                     ↑⍵ - the input as a 2d array
                 ⎕UCS   - codepoints
              32-       - subtract 32
            ×⌿          - element wise product reduction ([a,b]=>a×b)
         95|            - Modulo 95
      32+               - Add 32
 ⎕UCS                   - Unicode characters

আমি এর ইন্টারফেসটি পাই নি tryapl.org, সুতরাং যারা চেষ্টা করতে চান তাদের জন্য এখানে একটি টিআইও রয়েছে।
18

সেখানে আমি দুজনকে সেখানে রেখেছি।
জাকারি

3

এফশার্প 275 বাইট

let f (p : string, q : string) =     
let l = if p.Length < q.Length then p.Length else q.Length
p.Substring(0,l).ToCharArray() |> Array.mapi (fun i x -> (((int(x) - 32) * (int(q.[i]) - 32)) % 95) + 32) |> Array.map (fun x -> char(x).ToString()) |> Array.fold(+) ""

পিপিসিজিতে আপনাকে স্বাগতম!
মার্টিন ইন্ডার






2

সি # (.নেট কোর) , 100 96 95 বাইট

(l,n)=>{for(int i=0;i<l.Length&i<n.Length;)Console.Write((char)((l[i]-32)*(n[i++]-32)%95+32));}

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

-4 বাইটস @ জ্যাচারকে ধন্যবাদ ý

বর্ধিত স্থানান্তরিত করে -1 বাইট

একটি ল্যাম্বডা ব্যবহার করে এবং অক্ষরগুলি মূলত অন্তর্নিহিত হয় এই বিষয়টি অবমাননা করে।


আপনি ব্যবহার করতে পারেন (l[i]-32)*(n[i]-32)%95+32?
জাকারি

কেন হ্যাঁ, আমি পারি। ধন্যবাদ!
জেকলেম

1
আপনার পুরোপুরি যোগ্যতা অর্জন করতে হবে Consoleএবং বাইট সংরক্ষণের জন্য আপনি তরকারী ব্যবহার করতে পারেন। একটি কম্পাইল Action<string, Action<string>>মত l=>n=>এবং কল মত("word")("string")
TheLethalCoder

2

গণিত, 114 বাইট

(a=Min@StringLength[x={##}];FromCharacterCode[Mod[Times@@(#-32&/@ToCharacterCode/@(StringTake[#,a]&/@x)),95]+32])&


ইনপুট

[ "পাবলিক", "টোল"]


অনলাইনে চেষ্টা করার কোনও উপায় আছে কি?
ბიმო


"8 চর" কি?
J42161217

বিভ্রান্তির জন্য দুঃখিত! "ধন্যবাদ!" বার্তাটি ঠিক এইভাবে পোস্ট করতে খুব ছোট হত, এটির জন্য আরও 8 টি অক্ষর দরকার ছিল।
ბიმო

3
ঠিক আছে ....................................
J42161217

2

স্ট্যাকড , 52 বাইট

[,:$#'"!MIN$take"![CS#.toarr]"!32-prod 95%32+#:''#`]

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

ফাংশন যা স্ট্যাক থেকে দুটি আর্গুমেন্ট নেয়।

ব্যাখ্যা

[,:$#'"!MIN$take"![CS#.toarr]"!32-prod 95%32+#:''#`]

প্রথম অংশটি দেখুন, ধরে নেওয়া যাক শীর্ষ দুটি আইটেম হ'ল 'split'এবং 'isbn':

,:$#'"!MIN$take"!      stack:                      ('split' 'isbn')
,                      pair top two:               (('split' 'isbn'))
 :                     duplicate:                  (('split' 'isbn') ('split' 'isbn'))
  $#'                  length function literal:    (('split' 'isbn') ('split' 'isbn') $#')
    "!                 execute on each:            (('split' 'isbn') (5 4))
      MIN              obtain the minimum:         (('split' 'isbn') 4)
         $take         "take" function literal:    (('split' 'isbn') 4 $take)
                       (e.g. `'asdf' 2 take` is `'as'`)
              "!       vectorized binary each:     (('spli' 'isbn'))

এই অংশটি ফসলের কাজ করে।

তারপর:

[CS#.toarr]"!     stack: (('spli' 'isbn'))
[         ]"!     perform the inside on each string
                  string `'spli'`:
 CS               convert to a character string:    $'spli'
   #.             vectorized "ord":                 (115 112 108 105)
     toarr        convert to array:                 (115 112 108 105)
                  (needed for empty string, since `$'' #.` == `$''` not `()`

তারপরে, শেষ অংশ:

32-prod 95%32+#:''#`  stack: (((115 112 108 105) (105 115  98 110)))
32-                   subtract 32 from each character code:   (((83 80 76 73) (73 83 66 78)))
   prod               reduce multiplication over the array:   ((6059 6640 5016 5694))
        95%           modulus 95:                             ((74 85 76 89))
           32+        add 32:                                 ((106 117 108 121))
              #:      convert to characters:                  (('j' 'u' 'l' 'y'))
                ''#`  join:                                   ('july')

2

আর , 88 বাইট

function(r,s,u=utf8ToInt)intToUtf8((((u(r)-32)*(u(s)-32))%%95+32)[0:min(nchar(c(r,s)))])

বেনামে ফাংশন; দুটি স্ট্রিং হিসাবে ইনপুট লাগে; তৃতীয় যুক্তি হ'ল এটি একটি লাইন ফাংশন তা নিশ্চিত করা এবং কিছু বাইট সংরক্ষণ করা।

নীচের টিআইও লিঙ্কটি প্রথম ইনপুটটির সাথে নামযুক্ত এন্ট্রি সহ একটি অ্যারে প্রদান করে।

সমস্ত পরীক্ষার কেস চেষ্টা করে দেখুন!




2

05 এ বি 1 ই , 16 15 বাইট

.BÇ32-`*₃%32+çJ

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

-1 Emigna জন্য ইশারা push কর্মের 95


                 # ['hi', 'you']
.B               # [['hi ', 'you']]
  Ç              # [[[104, 105, 32], [121, 111, 117]]]
   32-           # [[[72, 73, 0], [89, 79, 85]]]
      `          # [[72, 73, 0], [89, 79, 85]]
       *         # [[6408, 5767, 0]]
        ₃%       # [[43, 67, 0]]
          32+    # [[75, 99, 32]]
             ç   # [['K', 'c', ' ']]
              J  # ['Kc ']

.BÇ32-`*95%žQsèJ

অন্য একটি।


একটি বাইট সংরক্ষণ করে। খালি স্ট্রিং ইনপুট সম্পর্কে খুব খারাপ। অন্যথায় øআরও কিছু বাঁচাতে হবে।
এমিগিনা

2

জাভা 8, 127 115 97 95 বাইট

a->b->{for(int i=0;i<a.length&i<b.length;System.out.printf("%c",(a[i]-32)*(b[i++]-32)%95+32));}

ব্যাখ্যা:

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

a->b->{                       // Method with 2 char-array parameters and no return-type
  for(int i=0;                //  Index-integer, starting at 0
      i<a.length&i<b.length;  //  Loop over both arrays up to the smallest of the two
    System.out.printf("%c",   //   Print, as character:
      (a[i]-32)               //    Current char of `a` minus 32
      *(b[i++]-32)            //    multiplied with current char of `b` minus 32
      %95                     //    Take modulo-95 of that multiplied result
      +32));}                 //    And add 32 again

1

সি #, 166 বাইট

using System.Linq;s=>t=>{int e=s.Length,n=t.Length,l=e>n?n:e;return string.Concat(s.Substring(0,l).Select((c,i)=>(char)((((c-32)*(t.Substring(0,l)[i]-32))%95)+32)));}

আমি নিশ্চিত যে অনেক গল্ফ করার দরকার আছে তবে আমার এখনই সময় নেই।

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

সম্পূর্ণ / ফর্ম্যাট সংস্করণ:

using System;
using System.Linq;

class P
{
    static void Main()
    {
        Func<string, Func<string, string>> f = s => t =>
        {
            int e = s.Length, n = t.Length, l = e > n ? n : e;

            return string.Concat(s.Substring(0, l).Select((c, i) => (char)((((c - 32) * (t.Substring(0, l)[i] - 32)) % 95) + 32)));
        };

        Console.WriteLine(string.Concat(f("split")("isbn")));

        Console.ReadLine();
    }
}

আমার মনে হয় (((c-32)*(t.Substring(0,l)[i]-32))%95)+32)হতে পারে ((c-32)*(t.Substring(0,l)[i]-32)%95+32)(সেখানে
প্যারেনগুলি খারাপ করে ফেলেছে


1

জাপট , 24 বাইট

¬íVq)®®©c -HÃ×u95 +H dÃq

\u0000প্রথম ইনপুট যখন দ্বিতীয়টির চেয়ে দীর্ঘ হয় তখন ট্রিলিং নাল-চরগুলি ( ) সহ একটি স্ট্রিং ফেরত দেয় ।

এটি অনলাইন চেষ্টা করুন! সাথে-Qনাল-চরগুলি সহ ফর্ম্যাট করা আউটপুট দেখানোর পতাকা সহ।

আমার ডাব্লুআইপি কোডপেন ব্যবহার করে সমস্ত পরীক্ষার কেস চালান


1

পাইথন 2 , 95 73 বাইট

  • ধন্যবাদ 4 জ্যাচারকে 4 বাইটের জন্য: অবাঞ্ছিত বন্ধনীগুলি সরানো হয়েছে
lambda x,y:''.join(chr((ord(i)-32)*(ord(j)-32)%95+32)for i,j in zip(x,y))

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


3
সদয় দয়ালু ... অপারেশন ক্রম ব্যবহার করতে শিখুন! (((ord(x[i])-32)*(ord(y[i])-32))%95)+32=>(ord(x[i])-32)*(ord(y[i])-32)%95+32
জাকারি

1

কাঠকয়লা , 30 বাইট

F⌊⟦LθLη⟧℅⁺³²﹪×⁻³²℅§θι⁻³²℅§ηι⁹⁵

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। আমি আসলে ক্যালকুলেশনটি লিখেছিলাম (32 - ord(q)) * (32 - ord(h))কারণ এটি ক্রমাগত সংখ্যাসূচক অক্ষরগুলি এড়িয়ে যায় তবে আমার ধারণা আমি কেবল (ord(q) - ord(" ")) * (ord(h) - ord(" "))পরিবর্তে লিখতে পারতাম ।


1

পার্ল 5 , 95 বাইট

@a=<>=~/(.)/g;@b=<>=~/(.)/g;$#a=$#b if@a>@b;print chr 32+(-32+ord$_)*(-32+ord$b[$i++])%95 for@a

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

ব্যাখ্যা:

@a=<>=~/(.)/g;@b=<>=~/(.)/g;  # Split the strings into 2 arrays
$#a=$#b if@a>@b;              # Truncate the first if longer than the second
print chr 32+(-32+ord$_)*(-32+ord$b[$i++])%95 for@a  # Multiply each character

1
আমি মনে করি আপনি ছোট স্ট্রিংয়ের দৈর্ঘ্যে ফলাফলটি সঠিকভাবে কাটাচ্ছেন না (দেখুন এখানে )।
দাদা

তুমি ঠিক বলছো. এটি অনেকগুলি বাইটের ব্যয়ে স্থির করে
Xcali

1

পিপ , 19 বাইট

(PA$* *(PA@?Zg)%95)

কমান্ড-লাইন আর্গুমেন্ট হিসাবে স্ট্রিং নেয়। এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

(PA$* *(PA@?Zg)%95)
                     g is list of args; PA is string of all printable ASCII characters
            Zg       Zip items of g together: result is list of pairs of characters
        PA@?         Find index of each character in PA
       (      )      (Parentheses to get correct operator precedence)
   $* *              Map (fold on *) to the list: multiplies each pair of numbers
               %95   Take list items mod 95
(PA               )  Use those numbers to index into PA again
                     Print the resulting list of chars, concatenated together (implicit)

1

ফ্যাক্টর , 45

[ [ [ 32 - ] bi@ * 95 mod 32 + ] "" 2map-as ]

এটি একটি উদ্ধৃতি (ল্যাম্বদা), call এটি স্ট্যাকের দুটি স্ট্রিং সহ নতুন স্ট্রিংটি ছেড়ে দেয়।

একটি শব্দ হিসাবে:

: s* ( s1 s2 -- ps ) [ [ 32 - ] bi@ * 95 mod 32 + ] "" 2map-as ;

"M>>M" "M>>M" s*      ! => ">MM>"
dup s*                ! => "M>>M"
dup s*                ! => ">MM>"
...

1

কে (ওকে) , 26 বাইট

সমাধান:

`c$32+95!*/-32+(&/#:'x)$x:

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

উদাহরণ:

`c$32+95!*/-32+(&/#:'x)$x:("split";"isbn")
"july"

ব্যাখ্যা:

মূল্যায়ন ডান থেকে বামে সঞ্চালিত হয়:

`c$32+95!*/-32+(&/#:'x)$x: / the solution
                        x: / assign input to variable x
                       $   / pad right to length on left
               (  #:'x)    / count each x (return length of each char list in list)
                &/         / min-over, get the minimum of these counts
           -32+            / subtract 32, this automagically converts chars -> ints
         */                / multiply-over, product of the two lists
      95!                  / modulo 95
   32+                     / add 32 back again
`c$                        / convert to character array

0

পিএইচপি, 112 বাইট

for($i=0;$i<min(strlen($a=$argv[1]),strlen($b=$argv[2]));$i++)echo chr((ord($a[$i])-32)*(ord($b[$i])-32)%95+32);

109 বাইট: for($i=0;$i<strlen($a=$argv[1])&&$i<strlen($b=$argv[2]);)echo chr((ord($a[$i])-32)*(ord($b[$i++])-32)%95+32); এছাড়াও, আমি সম্পূর্ণরূপে নিশ্চিত যদি প্রতিস্থাপন নই &&সঙ্গে &শক্তি এছাড়াও পিএইচপি সম্ভব হবে, এর অন্য বাইট দ্বারা এটি হ্রাস 108
কেভিন ক্রুইজসেন

0

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

জাভাস্ক্রিপ্ট এবং দীর্ঘ ক্রিয়াকলাপের নামগুলির অভিশাপ ...

তরঙ্গাকরণ এবং একটি অবৈধ অবস্থানের সাথে কল করা হলে charCodeAtফিরে আসে এই সত্যটি ব্যবহার করে NaN। আউটপুটে পিছনে নাল থাকতে পারে।

a=>b=>a.replace(/./g,(c,i)=>String.fromCharCode((z=x=>x.charCodeAt(i)-32)(a)*z(b)%95+32))

পরীক্ষা

var f=
a=>b=>a.replace(/./g,(c,i)=>String.fromCharCode((z=x=>x.charCodeAt(i)-32)(a)*z(b)%95+32))

q=x=>'['+x+']'

;[["isbn", "split"],["", ""],["", "I don't matter"],["             ", "Me neither :("],
["but I do!", "!!!!!!!!!"],['quotes', '""""""'],["wood", "hungry"],["tray", "gzip"],
["industry", "bond"],["public", "toll"],["roll", "dublin"],["GX!", "GX!"],
["4 lll 4", "4 lll 4"],["M>>M", "M>>M"]]
.forEach(([a,b])=>console.log(q(a)+' x '+q(b)+' --> '+q(f(a)(b))))

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