একটি সময়রেখা পড়া


11

একটি টাইমলাইন অঙ্কন দ্বারা অনুপ্রাণিত ।

ইভেন্টগুলির একটি সময়রেখা দেওয়া, প্রতিটি ইভেন্টের তারিখ আউটপুট।

একটি টাইমলাইন ফর্ম দেওয়া হবে

    2000
--AF-C-------E--D---B--

যেখানে প্রথম লাইনটি সময়ের একটি জ্ঞাত বিন্দু দেখায়। জানা বছরটি সর্বদা জানা বছরের প্রথম অঙ্কের নীচে বর্ণচিহ্ন হয়

আপনি ধরে নিতে পারেন:

  • টাইমলাইনে নিজেই, প্রতিটি চরিত্র এক বছরের প্রতিনিধিত্ব করে।
  • সর্বদা কমপক্ষে একটি ইভেন্ট থাকবে
  • ইভেন্টগুলি ক্রমযুক্ত হতে হবে না
  • আপনি ধরে নিতে পারেন যে প্রতিটি চরিত্রের মধ্যবর্তী সীমা Aএবং দূরবর্তী চরিত্রটি উপস্থিত রয়েছে
  • সর্বাধিক 26 ইভেন্ট হবে
  • জ্ঞাত বিন্দুতে ডানদিকে কোনও প্যাডিং থাকবে না
  • পরিচিত পয়েন্ট এবং আউটপুট উভয়ই নেতিবাচক সংখ্যা থাকতে পারে
  • আপনাকে 2 ^ 32 এর চেয়ে বড় সংখ্যাগুলি পরিচালনা করতে হবে না
  • আপনাকে 2 ^ 8 এর চেয়ে বড় রেঞ্জগুলি পরিচালনা করতে হবে না
  • আপনি বড় হাতের বদলে ছোট হাতের অক্ষর হিসাবে ইনপুট নিতে পারেন

আপনার এমন একটি প্রোগ্রাম লিখতে হবে যা এই ফর্মটিতে একটি টাইমলাইন নেয় এবং মূল তারিখগুলি যথাযথভাবে আউটপুট করে (A, B, C, D ...)

আপনি একটি সুবিধাজনক ফর্ম আউটপুট করতে পারেন তবে আপনাকে অবশ্যই দেওয়া ফর্ম্যাটটিতে ইনপুট নিতে হবে।

পরীক্ষার কেস:

    2000
--AF-C-------E--D---B--
[1998, 2016, 2001, 2012, 2009, 1999]

     10
--C-AB--D
[9, 10, 7, 13]

     0
--ABCDEFG--
[-3, -2, -1, 0, 1, 2, 3]

          5
--ABCDEFG--
[-3, -2, -1, 0, 1, 2, 3]

1
... প্রদত্ত বিন্যাসে ইনপুট। এটাই? একটি নতুন লাইনের সাথে একটি একক স্ট্রিং? বা 2 স্ট্রিং?
edc65

1
2 টি স্ট্রিং বা একটি নতুন লাইনের সাথে একটি স্ট্রিং
নীল

উত্তর:


1

পাইথ, 16 বাইট

বড় হাতের বদলে ছোট হাতের অক্ষর হিসাবে ইনপুট নেয়।

VS@GJw+-sz/zdxJN

2

05 এ বি 1 ই , 19 18 বাইট

কোড:

ð¢>UágF²N>.bkX-¹+,

ব্যাখ্যা:

ð¢                   # Count the number of spaces before the year starts
  >                  # Increment by 1
   U                 # Pop and store this into X
    á                # Keep the alphabetic characters of the second input
     g               # Take the length
      F              # For N in range(0, length), do...
       ²             #   Take the second input
        N>           #   Push N and increment by 1
          .b         #   Converts 1 to A, 2 to B, etc.
            k        #   Find the index of that letter in the second input
             X       #   Push X
              -      #   index - X
               ¹     #   Get the first input, which contains the year
                +    #   Add to the difference of the index
                 ,   #   Pop and output the sum

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

ব্যবহার সিপি-1252 এনকোডিং।


1

জাভাস্ক্রিপ্ট (ES6), 72

(a,b,r=[])=>[...b].map((x,i)=>r[parseInt(x,36)-10]=+a+i-a.search`\\d`)&&r

পরীক্ষা

f=(a,b,r=[])=>[...b].map((x,i)=>r[parseInt(x,36)-10]=+a+i-a.search`\\d`)&&r

console.log=x=>O.textContent+=x+'\n'

;[['    2000','--AF-C-------E--D---B--'],
['     10','--C-AB--D'],
['     0','--ABCDEFG--'],
['          5','--ABCDEFG--']]
.forEach(t=>{
  var a=t[0],b=t[1],r=f(a,b)
  console.log(a+'\n'+b+'\n'+r+'\n')
})  
<pre id=O></pre>


1

বাশ + কোর্টিলস, 68

লাইন 1 হ'ল উদ্ধৃত কমান্ড-লাইন বিকল্প হিসাবে ইনপুট এবং লাইন 2 এসটিডিআইএন থেকে ইনপুট:

s="${1//[0-9]}"
fold -1|nl -v$[$1-${#s}]|sort -k2|sed '/-$/d;s/.$//'

1

পার্ল, 58 + 1 = 59 বাইট

/\d/;$b=<>;for$c(A..Z){($z=index$b,$c)>-1&&say$_+$z-$-[0]}

ভাঙ্গন:

/\d/;                    # Match first digit in input string, this will set $-[0]
$b=<>;                   # Read next line (--A--CB--...) into $b
for $c (A..Z){           # Iterate over A, B, C, ... Z
  ($z=index$b,$c) >-1 && # If the character is found inside $b
  say $_+$z-$-[0]        #   then print
}

প্রয়োজনীয় -nএবং বিনামূল্যে -M5.010:

# Added line breaks for each test case
$ perl -nE'/\d/;$b=<>;for$c(A..Z){($z=index$b,$c)>-1&&say$_+$z-$-[0]}' tl
1998
2016
2001
2012
2009
1999

9
10
7
13

-3
-2
-1
0
1
2
3

-3
-2
-1
0
1
2
3
$ cat tl
    2000
--AF-C-------E--D---B--
     10
--C-AB--D
     0
--ABCDEFG--
          5
--ABCDEFG--

0

পাইথ, 22 বাইট

V+r\AJeSKwJ+xKN-izT/zd

না আমি চ্যালেঞ্জ পোস্ট করার আগে এটি লিখিনি।

ব্যাখ্যা:

                       - autoassign z = input()
 +r\AJeSKwJ            -  create range of letters
        Kw             -      autoassign K = input()
      eS               -     sorted(K)[-1] (get the biggest character)
     J                 -    autoassign J = ^
  r\A                  -   range("A", ^)
 +        J            -  ^ + J
V                      - for N in ^: V
               -izT/zd - Get the number at the start
                izT    -   int(z, 10)
               -       -  ^-V
                   /zd -   z.count(" ")
           +           - V+^
            xKN        -  K.index(N)

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


0

পাইথন 3, 118

মানুষ, আজ দীর্ঘ পাইথনের উত্তরের দিন।

def f(p,l):o=sum(x<'0'for x in p);e={x:i-o+int(p[o:])for i,x in enumerate(l)if'@'<x};return list(map(e.get,sorted(e)))


0

পার্ল, 80 79 71 67 বাইট

($a=<>)=~/\d/;$b=<>;say$a+$_-$-[0]for grep{$_+1}map{index$b,$_}A..Z

12 বাইটের জন্য @ দেব-নালকে ধন্যবাদ !

($a=<>)=~/\d/;  # read first line of input, find position of first digit
                # (saved in the $- variable)
$b=<>;          # read the second line
                                           A..Z  # generate range 'A','B',...
                            map{index$b,$_}      # find index for each
                  grep{$_+1}                     # select only those != -1
              for                                # foreach of remaining...
say$a+$_-$-[0]                                   # calculate proper date
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.