বর্ণমালা সাইফারটি এনকোড করুন


24

একটি স্ট্রিং দেওয়া হয়েছে যাতে কেবল ছোট হাতের অক্ষর থাকে, সেই স্ট্রিংটিকে বর্ণমালা সিফার দিয়ে এনকড করুন।

বর্ণমালা সাইফার দিয়ে এনকোড করতে (আমি উদাহরণটি ব্যবহার করব hello):

  1. প্রথমে বর্ণমালার ( a= 1, b= 2, ইত্যাদি) অবস্থানের উপর নির্ভর করে স্ট্রিংয়ের প্রতিটি বর্ণকে একটি সংখ্যায় রূপান্তর করুন উদাহরণ:8 5 12 12 15
  2. প্রতিটি সংখ্যাকে দুটি অক্ষরে 0এস দিয়ে প্যাড করুন । উদাহরণ:08 05 12 12 15
  3. যোগ দিন। উদাহরণ:0805121215

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

helloworld -> 08051212152315181204
codegolf -> 0315040507151206
alphabetcipher -> 0112160801020520030916080518
johncena -> 1015081403051401

মনে রাখবেন, এটি , তাই কয়েকটি সংখ্যক বাইট বিজয়ী কোড।


উত্তর:


23

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

কোড:

Ç4+€¦J

ব্যাখ্যা:

প্রথমত, আমরা স্ট্রিংটিকে তাদের ASCII মানগুলিতে রূপান্তর করি। codegolfহবে:

[99, 111, 100, 101, 103, 111, 108, 102]

বর্ণমালার সূচকগুলি পেতে, আপনি বিয়োগ 96:

[3, 15, 4, 5, 7, 15, 12, 6]

জিরো দিয়ে প্যাড 100করতে প্রতিটি উপাদানকে যুক্ত করুন এবং প্রতিটি ইনটেলের প্রথম অক্ষরটি সরিয়ে দিন। উপরের উদাহরণের জন্য, +100হবে:

[103, 115, 104, 105, 107, 115, 112, 106]

এবং প্রত্যেকের প্রথম চরিত্র অপসারণের দিকে পরিচালিত করবে:

[03, 15, 04, 05, 07, 15, 12, 06] 

আমরা উভয় পদক্ষেপ উপরের ( -96এবং +100) অংশটিকে কেবলমাত্র একত্রে করতে পারি +4। কোডের জন্য:

Ç       # Convert to an array of ASCII code points
 4+     # Add four to each element in the array
   €¦   # Remove the first character of each element
     J  # Join to a single string

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



@ কারাসোকম্পুটিং কোনও স্ট্রিং, তালিকা ইত্যাদির প্রথম উপাদানটি সরিয়ে দেয়
আদনান

জিনিয়াসের বাইরে ...
ম্যাজিক অক্টোপাস উরন


8

পাইথ, 11 10 বাইট

FNwpt`+4CN

চেষ্টা করে দেখুন! পাইথে আমার প্রথম যেতে

FNwpt`+4CN
FNw         # For N in w (w is input, N will be single char)
   p        # Print without newline
        CN  # Int with code point `N`
      +4CN  # Add 4 to int with code point N
     `+4CN  # representation of above (basically to string)
    t`+4CN  # Tail (All but first character)

পাইথন সমতুল্য:

for N in input():
    print(repr(ord(N) + 4)[1:], end='')

আপনার প্রথম পাইথ প্রোগ্রামে ভাল কাজ!
হাইপারনিউট্রিনো

7

সি, 55 43 বাইট

f(char*c){for(;*c;)printf("%02d",*c++-96);}

ideone


1
printf("%02d",*c++-96);}আমি ভুল না হলে সংক্ষিপ্ত এবং বৈধ।
দাদা


6

জেলি , 9 7 বাইট

O+4ṾḊ$€

TryItOnline

কিভাবে?

O+4ṾḊ$€ - Main link: s                                e.g. hello
O       - cast to ordinals                            e.g. [ 104,  101,  108,  108,  111]
 +4     - add 4                                       e.g. [  108,  109,  112,  112,  115]
     $€ - last two links as a monad for €ach
   Ṿ    -    uneval, effectively converts to strings  e.g. ["108","109","112","112","115"]
    Ḋ   -    dequeue, remove the leading '1'          e.g. [ "08", "09", "12", "12", "15"]
        - implicit print                              e.g. "0809121215"

আমি O+4DḊ€FṾ€একই গণনা নিয়ে হাজির হয়েছি , সম্ভবত গল্ফযোগ্য
ইটিএইচ প্রডাকশনগুলি

@ ইথ প্রডাকশনগুলি O+4Ṿ€Ḋ€2 বাইট সংরক্ষণ করে।
ডেনিস

@ ডেনিস আমি ঠিক (ইশ) করলাম ...
জোনাথন অ্যালান

4

হাস্কেল, চল্লিশ বার 30 28 বাইট

(>>=tail.show.(+4).fromEnum)

আদনানের উত্তর+4 থেকে অ্যাপ্রোচ ব্যবহার করা 14 বাইট সাশ্রয় করে।

আইডিয়নে চেষ্টা করে দেখুন। ব্যবহার:

> (>>=tail.show.(+4).fromEnum)"codegolf"
"0315040507151206"

দুই বাইট বন্ধ xnor ধন্যবাদ । পুরনো সংস্করণ:

f a=['0'|a<'k']++(show$fromEnum a-96)
(f=<<)

আপনার দ্বিতীয় পেরেন্সের দরকার নেই।
xnor

3

পার্ল, 29 বাইট

28 বাইট কোড + -nপতাকা।

printf"%02s",-96+ord for/./g

সাথে চালান:

perl -ne 'printf"%02s",-96+ord for/./g' <<< "helloworld"

3

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

f=s=>s&&(s.charCodeAt()+4+f(s.slice(1))).slice(1)

পুনরাবৃত্তি 3 বাইটের চেয়ে সংক্ষিপ্ত আকারে পরিণত হয়েছিল .replace:

s=>s.replace(/./g,s=>(s.charCodeAt()+4+"").slice(1))

parseInt(s,36)প্রতিটি পদ্ধতির জন্য কিছুটা লম্বা, কারণ আপনাকে এতে পরিবর্তন 4করতে হবে 91:

s=>s.replace(/./g,s=>(parseInt(s,36)+91+"").slice(1))
f=s=>s&&(parseInt(s[0],36)+91+f(s.slice(1))).slice(1)

3

জাপট, 10 বাইট

¡4+Xc)s s1

সম্ভবত এর চেয়ে কম আর পাবেন না ...

এটি অনলাইন পরীক্ষা!

ব্যাখ্যা

¡           // Map each char X in the input by this function:
 4+Xc)      //   Take 4 + the char code of X.
      s s1  //   Convert to a string, then remove the first char.
            // Implicit: output last expression

3

জাভা 7,60 বাইট

void f(char[]s){for(int i:s)System.out.printf("%02d",i-96);} 

এই উত্তরটি বৈধ হতে পারে না কারণ এটি একটি এর char[]পরিবর্তে লাগে String
হাইপারনিউটারিনো


নিবন্ধন করুন সুস্পষ্ট করার জন্য ধন্যবাদ. এই উত্তরে আমার উপকার আছে।
হাইপারনিউটারিনো


3

হেক্সাগনি , 33 বাইট

10}{'a({=!{{\.@29$\,<.-":!\>Oct\%

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

মিমি .. হেক্সাগনটিতে কয়েকটি নম্বর পেয়েছে তাই আমি আজকের তারিখটি রেখেছি।

অপস দ্বারা প্রতিস্থাপিত তারিখ সহ প্রসারিত ফর্ম

   1 0 } {
  ' a ( { =
 ! { { \ . @
. . $ \ , < .
 - " : ! \ >
  . . . \ %
   . . . .
  1. সূচনা a 10 এবং মেমোরি পয়েন্টারটি অন্য কোথাও সরান ...
  2. $আয়না এড়িয়ে যায় এবং ,একটি বাইট পড়ে।<শাখা:
  3. স্ট্রিংয়ের শেষ হলে ( -1যা ইতিবাচক নয়) এটি যায় goes@ প্রোগ্রামে গিয়ে শেষ করে।
  4. অন্যথায় এটি বিয়োগ করে 95(হ্রাস a), এবং তারপরে আমরা মুদ্রণ result / 10(পূর্ণসংখ্যা বিভাগ) এবং result % 10এবং আবার লুপ করব।

2

ভিম, 60 টি কিস্ট্রোক

:s/./\=char2nr(submatch(0))-96."\r"/g
:%s/\<\d\n/0&
V{gJ

একটি প্রায় সম্পূর্ণরূপে Regex ভিত্তিক সমাধান। যথারীতি, ইভাল রেজিস্টারটি ব্যবহার করা এটি অশ্লীলভাবে দীর্ঘ করে দেয়।



2

পাওয়ারশেল v2 +, 44 বাইট

-join([char[]]$args[0]|%{"{0:D2}"-f($_%32)})

ইনপুট নেয় $args[0], এটিকে charঅ্যারে হিসাবে কাস্ট করে , একটি লুপে ফিড দেয়। প্রতিটি পুনরাবৃত্তি, আমরা বর্তমান অক্ষর $_মডুলো গ্রহণ করি 32, যা স্পষ্টভাবে ASCII মান হিসাবে কাস্ট করে। সুবিধার্থে ;-), এই লাইনগুলি তাই a = 1, b = 2, ইত্যাদি। যা -format অপারেটরে খাওয়ানো হয় , স্ট্রিংয়ের উপর অপারেটিং করে "{0:D2}", যা একটি দুই ডিজিটের ন্যূনতম নির্দিষ্ট করে (যেমন, এটি প্রয়োজনে একটি শীর্ষস্থানীয় শূন্য প্রেন্ডেন্ড করে)। অঙ্কগুলির এই স্ট্রিংগুলি পেরেনগুলিতে এমপ্ল্যাপুলেটেড হয়, -joinএক সাথে একটি স্ট্রিং এড করা হয় এবং পাইপলাইনে রেখে দেওয়া হয়। অন্তর্ভুক্ত মাধ্যমে আউটপুট Write-Outputপ্রোগ্রাম উপসংহারে ঘটে।

PS C:\Tools\Scripts\golfing> .\encode-alphabet-cipher.ps1 'hello'
0805121215

PS C:\Tools\Scripts\golfing> .\encode-alphabet-cipher.ps1 'helloworld'
08051212152315181204

PS C:\Tools\Scripts\golfing> .\encode-alphabet-cipher.ps1 'codegolf'
0315040507151206

PS C:\Tools\Scripts\golfing> .\encode-alphabet-cipher.ps1 'johncena'
1015081403051401

2

পার্ল, 24 বাইট

এর জন্য +1 অন্তর্ভুক্ত -p

এসটিডিনে ইনপুট দিন:

encode.pl <<< hello

encode.pl

#!/usr/bin/perl -p
s/./substr 4+ord$&,1/eg

সুন্দরভাবে সম্পন্ন. আমি মনে করি আপনি সম্ভবত 4+ord$&পরিবর্তে বোঝানো হয়েছে5+ord$& ;-) এর
দাদা

@ দাদা রাইট, আবার পরীক্ষিত সংস্করণের পরিবর্তে আমার স্নিপেট বাফারের সংস্করণটি আটকান
টন হসপেল

এটা হয়! :) আমি কি আপনাকে কোনও সম্পর্কযুক্ত প্রশ্ন জিজ্ঞাসা করতে পারি? এই প্রশ্নের 8 বাইট পার্ল সমাধান কী আপনার কোনও ধারণা আছে (ইনপুটটি বিপরীত করুন) (অরাজকতায়)?
দাদা

@ দাদা আমি বললাম খাঁটি পার্লে এটি অসম্ভব, তাই আমি আশা করি এটি পাশের স্বয়ংক্রিয় সিস্টেমটির কিছুটা অপব্যবহার। উদাহরণস্বরূপ যদি ইনপুট এসটিডিএন থেকে আসে তবে আপনি করতে পারেনexec rev
টন হসপেল

ঠিক আছে, যে বোঝার জন্য, ধন্যবাদ! যেহেতু আমি এটি খুঁজে পেতে খুব কঠিন সময় কাটাচ্ছিলামprint5 বাইট<> আমার বেশ কষ্ট হচ্ছিল, 2 টি আরও বেশি, তাই আমি ভাবছিলাম যে 1 বাইট বিল্টইনটি আমি শুনেছিলাম না তার বিপরীতে কি ছিল!
দাদা

2

DASH , 27 বাইট

@><""(->@rstr["."""]+4#0)#0

ব্যবহারের উদাহরণ:

(@><""(->@rstr["."""]+4#0)#0)"helloworld"

ব্যাখ্যা

@ (                         #. take input through a lambda
  join "" (                 #. join with newlines the following:
    (map                    #. result of mapping
      @ (                   #. this lambda
        rstr ["." ; ""] (     #. replace first char w/ empty string:
          + 4 #0               #. mapped item's codepoint + 4
        )
      )
    ) #0                    #. over the argument
  )
)

2

ব্যাচ, 256 239 237 বাইট

@echo off
set/ps=
set r=
set a=abcdefghijklmnopqrstuvwxyz
:g
set c=%a%
for /l %%i in (101,1,126)do call:l %%i
set s=%s:~1%
if not "%s%"=="" goto g
echo %r%
exit/b
:l
set i=%1
if %c:~,1%==%s:~,1% set r=%r%%i:~1%
set c=%c:~1%

STDIN এ ইনপুট নেয়।


2

আইবিএম পিসি ডস 8088 বিধানসভা, 33 28 27 বাইট

জমায়েত বাইনারি:

00000000: be82 00ac 2c60 7812 d40a 0530 3092 86f2  ....,`x....00...
00000010: b402 cd21 86f2 cd21 ebe9 c3              ...!...!...

unassembled:

BE 0082     MOV  SI, 82H        ; point SI to command line string 
        CH_LOOP: 
AC          LODSB               ; load next char into AL
2C 60       SUB  AL, 'a'-1      ; convert ASCII to a=1,b=2...z=26 
78 12       JS   DONE           ; if char is terminator or not valid, exit
D4 0A       AAM                 ; convert binary to BCD 
05 3030     ADD  AX, '00'       ; convert BCD to ASCII 
92          XCHG DX, AX         ; save AX to DX for display 
86 F2       XCHG DH, DL         ; reverse bytes 
B4 02       MOV  AH, 2          ; DOS display char function 
CD 21       INT  21H            ; write first digit 
86 F2       XCHG DH, DL         ; reverse bytes back 
CD 21       INT  21H            ; write second digit 
EB E9       JMP  CH_LOOP        ; restart loop 
        DONE: 
C3          RET                 ; return to DOS

স্বতন্ত্র পিসি ডস কার্যকর। কমান্ড লাইন থেকে কনসোল আউটপুট ইনপুট স্ট্রিং।

ইনপুট / আউটপুট:

এখানে চিত্র বর্ণনা লিখুন



1

রুবি, 53 46 বাইট

->s{s.chars.map{|c|(c.ord-96).to_s.rjust(2,?0)}.join}

->s{s.chars.map{|c|(c.ord+4).to_s[1..2]}.join}


1

আর, 71 51 বাইট

বিলিউবকে ধন্যবাদ 20 বাইট সংরক্ষণ করা। স্টিডিন এবং আউটপুট থেকে স্টডআউটে ইনপুট নেয়।

cat(sprintf("%02d",utf8ToInt(scan(,""))-96),sep="")

উদাহরণ:

হেলিওরল্ড -> 08051212152315181204

কোডগল্ফ -> 0315040507151206

বর্ণমালা -> 0112160801020520030916080518

জোহস্না -> 1015081403051401


আপনি utf8toInt(scan(,"))-96পুরো ম্যাচের জিনিসটির পরিবর্তে ব্যবহার করতে পারেন । যদিও প্যাডিং পরিচালনা করার জন্য এর চেয়ে ভাল উপায় নেই।
বিলিউব

@ বিলিউব ধন্যবাদ! প্যাডিংয়ের জন্য, আমি formatCআগে ব্যবহার করার চেষ্টা করেছি তবে এটি বর্তমান পদ্ধতির চেয়ে আরও একটি বাইটের প্রয়োজন হিসাবে কাজ করেছে।
rturnbull

1

আসলে , 10 বাইট

আদনানের 05AB1E উত্তরে ঝরঝরে অ্যালগরিদম ব্যবহার করা । গল্ফিং পরামর্শ স্বাগত জানাই। এটি অনলাইন চেষ্টা করুন!

O4+`$pX`MΣ

Ungolfing

         Implicit input s.
O        ord() every char in s.
4+       Add 4 to every ord in s.
`...`M   Map the following function over s. Variable m.
  $        Push str(m).
  pX       Discard the first char of str(m).
           Invariably this is a `1` and we get our ciphered m.
Σ        sum() everything to get one string.
         Implicit return.




0

গ্রোভি - 31 বাইট

জাভাতে নম্বরকনটের সমাধানটির গ্রোভি রূপান্তর:

{It.each {printf, ( "% 02D", এটি 96)}}

বিভিন্ন বিকল্প ব্যবহার করে এখানে উদাহরণ:

http://ideone.com/vd0dTX



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