স্পেস এবং সময় মাধ্যমে


10

পরিচিতি:

তিন স্থান মাত্রা: সাধারণভাবে আমরা সাধারণত চার মাত্রা তো দূরের কথা x, yএবং z; এবং এক সময়ের মাত্রা। যাইহোক, এই চ্যালেঞ্জ অনুরোধে জন্য, আমরা পাশাপাশি তিনটি মধ্যে সময় মাত্রা বিভক্ত হবে: past, present, এবং future

ইনপুট:

দুটি ইনপুট-তালিকা। একটিতে পূর্ণসংখ্যার x,y,zস্থানাঙ্ক থাকে এবং একটিতে পূর্ণসংখ্যার বছর থাকে।

আউটপুট:

আপনার নিজের পছন্দের চারটি স্বতন্ত্র এবং ধ্রুবক আউটপুটগুলির মধ্যে একটি। আউটপুট নির্দেশ করার জন্য একটি space; এক আউটপুট নির্দেশ করতে time; এক আউটপুট নির্দেশ করতে both space and time; এবং একটি আউটপুট নির্দেশ করতে neither space nor time

তিনটি মাত্রার জন্য পূর্ণসংখ্যার-টিপলসের পার্থক্য 0 না হলে আমরা তিনটি স্থানের মাত্রায় নির্দেশিত করব।
আমরা ইঙ্গিত করব যে আমরা অতীতে কমপক্ষে এক বছর, ভবিষ্যতে কমপক্ষে এক বছর এবং কমপক্ষে এক বছরের বর্তমান বছরের সমান (তাই বর্তমানের) সমীক্ষা করেছি।

উদাহরণ:

ইনপুট:
স্থানাঙ্ক-তালিকা: [{5,7,2}, {5,3,8}, {-6,3,8}, {5,7,2}]
বছর-তালিকা:[2039, 2019, 2018, 2039, 2222]

আউটপুট:
জন্য ধ্রুবকspace

কেন? স্থানাঙ্ক হয় । যেহেতু তারা সমস্ত এক নয়, আমরা স্থানের মাত্রাটি পেরিয়েছি। স্থানাঙ্ক হয় । যেহেতু এগুলি সমস্ত এক নয়, আমরা স্থানের মাত্রাটিও পেরিয়েছি। স্থানাঙ্ক হয় । যেহেতু এগুলি সমস্ত এক নয়, আমরা স্থানের মাত্রাটিও পেরিয়েছি। বর্তমান বছর হয় । এর আগে কোনও বছর নেই, তাই আমরা সময় মাত্রাটি পরিদর্শন করি নি । একটা হল তাই আমরা করলেন, বছর-তালিকা উপস্থিত সময় মাত্রা। উপরে একাধিক বছর রয়েছে ( ), তাই আমরা সময় মাত্রাও পরিদর্শন করেছি ।
x[5,5,-6,5]x
y[7,3,3,7]y
z[2,8,8,2]z
2018past
2018present
2018[2039, 2019, 2039, 2222]future

যেহেতু আমরা তিনটি spaceমাত্রা পরিদর্শন করেছি , তবে তিনটি মাত্রার মধ্যে মাত্র দুটি time, আউটপুট কেবল (ধ্রুবকটির) হবে space

চ্যালেঞ্জ নিয়ম:

  • আপনি সম্ভাব্য চারটি রাজ্যের জন্য যে কোনও চারটি স্বতন্ত্র এবং ধ্রুবক আউটপুট ব্যবহার করতে পারেন।
  • ইনপুট যে কোনও যুক্তিসঙ্গত বিন্যাসে থাকতে পারে। স্থানাঙ্কের তালিকাটি টিপলস, অভ্যন্তরীণ তালিকা / আকারের 3 টি, স্ট্রিং, অবজেক্টস ইত্যাদি হতে পারে years
  • আপনি ধরে নিতে পারেন x,y,zস্থানাঙ্কগুলি পূর্ণসংখ্যা হবে, তাই ভাসমান পয়েন্ট দশমিকগুলি হ্যান্ডেল করার দরকার নেই। কোন x, yএবং / অথবা zস্থানাঙ্ক নেতিবাচক মূল্যবোধ, যদিও হতে পারে।
  • আপনি পূর্বনির্ধারিত ইনপুট-তালিকাগুলি নিতে পারবেন না। ইনপুট-তালিকা পরীক্ষার ক্ষেত্রে প্রদর্শিত ক্রমের মধ্যে থাকা উচিত।
  • আপনি ধরে নিতে পারেন সমস্ত বছরের মানগুলি সীমার মধ্যে থাকবে [0,9999]; এবং আপনি ধরে নিতে পারেন যে সমস্ত স্থানাঙ্ক সীমার মধ্যে রয়েছে [-9999,9999]
  • যদি আপনার ভাষাতে চলতি বছর পুনরুদ্ধার করার কোনও উপায় না থাকে তবে আপনি এখনও এই চ্যালেঞ্জটি করতে চান তবে আপনি এটি অতিরিক্ত ইনপুট হিসাবে নিতে পারেন এবং আপনার উত্তরটিকে (প্রতিদ্বন্দ্বী না করে) হিসাবে চিহ্নিত করতে পারেন ।

সপ্তাহের দিন:

  • এটি , তাই বাইট জেতে সংক্ষিপ্ত উত্তর।
    কোড-গল্ফ ভাষাগুলি আপনাকে নন-কোডগলফিং ভাষার সাথে উত্তর পোস্ট করতে নিরুৎসাহিত করবেন না। 'যে কোনও' প্রোগ্রামিং ভাষার জন্য যতটা সম্ভব সংক্ষিপ্ত উত্তর নিয়ে আসার চেষ্টা করুন।
  • আপনার উত্তরটির জন্য ডিফল্ট আই / ও বিধিগুলির সাথে মানক বিধিগুলি প্রযোজ্য , সুতরাং আপনাকে সঠিক পরামিতি এবং ফিরতি-টাইপ, সম্পূর্ণ প্রোগ্রাম সহ STDIN / STDOUT, ফাংশন / পদ্ধতি ব্যবহারের অনুমতি দেওয়া হবে। আপনার কল
  • ডিফল্ট লুফোলগুলি নিষিদ্ধ।
  • যদি সম্ভব হয় তবে দয়া করে আপনার কোডের (যেমন টিআইও ) একটি পরীক্ষার সাথে একটি লিঙ্ক যুক্ত করুন ।
  • এছাড়াও, আপনার উত্তরের জন্য একটি ব্যাখ্যা যুক্ত করা অত্যন্ত প্রস্তাবিত।

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

Coordinates-input: [{5,7,2}, {5,3,8}, {-6,3,8}, {5,7,2}]
Years-input:       [2039, 2019, 2018, 2039, 2222]
Output:            space

Coordinates-input: [{0,0,0}, {-4,-4,0}, {-4,2,0}]
Years-input:       [2016, 2019, 2018, 2000]
Output:            time

Coordinates-input: [{-2,-2,-2}, {-3,-3,-3}]
Years-input:       [2020, 1991, 2014, 2018]
Output:            both

Coordinates-input: [{5,4,2}, {3,4,0}, {1,4,2}, {9,4,4}]
Years-input:       [2020, 1991, 2014, 2017, 2019, 1850]
Output:            neither

আমাদের কত বছরের পরিসর পরিচালনা করতে হবে?
শেগি

@ শেগি আমি এটিকে চ্যালেঞ্জের বিবরণে যুক্ত করব। [0,9999]ঠিক আছে (এবং [-9999,9999]স্থানাঙ্কগুলির জন্যও ভাল আছে
কেভিন ক্রুইজসেন

ডাং, আমার ধারণাগুলির একটি আছে!
শেগি

@ শেগি কৌতূহলের বাইরে, আপনি কোন পরিসরের আশা করছেন?
কেভিন ক্রুইজসেন

3
আমরা কি বর্তমান বছরটিকে ইনপুট হিসাবে নিতে পারি? (কিছু ভাষাগুলি চলতি বছর যেমন বিবিএফ পেতে পারে না, অন্যরা কেবল অন্য ভাষায় কোড মূল্যায়ন করে তা করতে পারে - যেমন জেলি; অন্যরা, সম্ভবত অনেকগুলিও এই গল্ফিয়ারকে খুঁজে পাবেন)
জোনাথন অ্যালান

উত্তর:


2

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

আউটপুট একটি তালিকা [space, time]যেখানে 1 এর জন্য দাঁড়ায় xএবং 0 টি দাঁড়ায়no x

ø€Ë_Psžg.SÙg3Q)

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

ব্যাখ্যা

    ø                 # zip space coordinates
     €Ë               # for each axis, check that all values are equal
       _              # logical negation
        P             # product (1 for space, 0 for no space)
         s            # put the time list on top of the stack
          žg.S        # compare each with the current year
              Ù       # remove duplicates
               g3Q    # check if the length is 3
                  )   # wrap the space and time values in a list

আমার কাছ থেকে স্পষ্টতই +1 আমি প্রস্তুত 16-বাইটারের মতোই, আমি এর -.±পরিবর্তে .S(সুতরাং +1 বাইট ..) এবং (জুটি) পরিবর্তে ব্যবহার করেছি)
কেভিন ক্রুইজসেন

@ কেভিন ক্রুইজসেন: আমি সত্যিই অন্য একটি উপায় Ùg3Qচাই, যা সবচেয়ে বড় বাইট-চোরের মতো মনে হয় তবে আমি নিশ্চিত নই যে এটি সম্ভব: /
এমিগানা

আমি সন্দেহ করি এটি ছোট টিবিএইচ করা যায়। আমি কয়েকটি 4-বাইট বিকল্পের কথা ভাবতে পারি êএবং কিছু দিয়ে কিছু বিটওয়াইজ অপারেশন বা ডেল্টাস বা অন্য কিছু করার চেষ্টা করছিলাম তবে আমি কোনও 3-বাইট বিকল্প খুঁজে পাচ্ছি না।
কেভিন ক্রুইজসেন 14

6

পাইথন 2 , 111 109 বাইট

lambda S,T:(min(map(len,map(set,zip(*S))))>1,date.today().year in sorted(set(T))[1:-1])
from datetime import*

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


আপনি বাছাইয়ের আগে কেন টি সেট করেন?
কালো আউল কাই

4
@ ব্লাকওলকাই অন্যথায় [1: -1] দ্বারা সরানো দুটি এন্ট্রি অতীত / ভবিষ্যতে নাও থাকতে পারে
পুুন লেবি

6

পার্ল 6 , 47 46 বাইট

-1 বাইট ধন্যবাদ nwellnhof

{Set(@^b X<=>Date.today.year)>2,max [Z==] @^a}

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

অজ্ঞাতনামা কোড ব্লক যা দুটি তালিকাগুলি গ্রহণ করে এবং বেশিরভাগ বুলিয়ান দেয়, প্রথম উপাদানটি আপনি সময় ভ্রমণ করেছিলেন কিনা এবং দ্বিতীয়টি আপনি স্থানটিতে ভ্রমণ করেননি কিনা তা নিয়ে।

ব্যাখ্যা

{                                            }  # Anonymous code block
     @^b X         # Map each element of the year list to:
          <=>      # Whether it is smaller, equal or larger than
             Date.today.year  # The current year
 Set(                       )    # Get the unique values
                             >2  # Is the length larger than 2?
                               ,
                                    [Z  ] @^a   # Reduce by zipping the lists together
                                max       # And return if any of them are
                                      ==  # All equal

3

জাপট, 22 বাইট

স্থানের মাত্রাগুলির জন্য পূর্ণসংখ্যার 2D-অ্যারে এবং কয়েক বছর ধরে পূর্ণসংখ্যার 1D-অ্যারে হিসাবে ইনপুট নেয়। 2কেবলমাত্র জায়গার জন্য আউটপুট , কেবল 1সময়ের 3জন্য, উভয়ই এবং উভয়ের 0জন্য নয়।

yâ mÊeÉ Ñ+!Jõ kVmgKi¹Ê

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

                           :Implicit input of 2D-array U=space and array V=time
y                          :Transpose U
 â                         :Deduplicate columns
   m                       :Map
    Ê                      :  Lengths
     e                     :All truthy (not 0) when
      É                    :  1 is subtracted
        Ñ                  :Multiply by 2
           J               :-1
            õ              :Range [-1,1]
              k            :Remove all the elements present in
               Vm          :  Map V
                 g         :    Signs of difference with
                  Ki       :    The current year
                    ¹      :End removal
                     Ê     :Length
         +!                :Negate and add first result

2

জাপট , 25 বাইট

আমি 100% নিশ্চিত যে এটি সর্বোত্তম পন্থা নয়, এখনও এটি করার জন্য কিছুটা ছোট উপায় খুঁজছি: গ

বুলিয়ানগুলির একটি টুপল ফেরত দেয়। প্রথমটি হ'ল যদি আপনি মহাকাশ ভ্রমণ করেছেন এবং দ্বিতীয়টি যদি আপনি সময় মতো ভ্রমণ করেছিলেন

[Uyâ e_ʦ1ÃV®-Ki)gÃâ Ê¥3]

[Uyâ e_ʦ1ÃV®-Ki)gÃâ Ê¥3]   Full Program, U = Space, V = Time
                            -- U = [[-2,-2,-2], [-3,-3,-3]]
                            -- V = [2020, 1991, 2014, 2018]
[                       ]   Return array containing....
 Uyâ                        Transpose Space coords 
                            -- U = [[-2,-3], [-2,-3], [-2,-3]]
                            and map Z   
      _ʦ1                  Z length greater than 1?
                            -- U = [true, true, true]
     e                      return true if all Z are true   
                            -- U = true
          V®                Map each time
            -Ki)            Subtract current year   
                            -- V = [2,-27,-4,0]
                gà         get sign (-1,0,1)
                            -- V = [1,-1,-1,0]
                   â        unique elements
                            -- V = [1,-1,0]
                     ʥ3    return true if length == 3
                            -- V = true

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


আহ, আমার মনে হয় আপনি যে লিঙ্কটি সরবরাহ করেছেন সেই টেস্টকেসে এটি ব্যর্থ হয়? ( স্থানান্তর করে, অনন্য আইটেম নিয়ে যায় এবং ফিরে স্থানান্তর করে , সুতরাং আপনি সম্ভবত Uy e_â ʦ1Ãপরিবর্তে এটি করতে চাইবেন )
ETH প্রোডাকশন

কেবল এখন এটি দেখে মনে হচ্ছে আপনি এটি আমার আগে পোস্ট করেছিলেন (আমার ফোনে তাই সঠিকভাবে বলতে পারে না)। যদি তা হয় তবে আপনি আমার সাদৃশ্যগুলি চান কিনা তা আমাকে জানান এবং আমি এটি মুছে ফেলব।
শেগি

@ ইথ প্রডাকশন, এটি কাজ করে বলে মনে হচ্ছে না। আমার কাছে তা থাকত âমধ্যে eপদ্ধতি আমার প্রথম ব্যবহার করে দেখুন খুব, তা সরানোর আগে yকিনা দেখতে এটি কাজ চাই এক পলকে।
শেগি

@ শেগি ওয়েল আমি বিদ্রূপ করব, এটি আসলে কাজ করে ... তবে কেন এই ক্ষেত্রে এটি স্থানান্তরিত হয় না?
ETH প্রোডাকশনস

1
@ শেগি ওহে প্রিয়, যে কোডটি qম্যাপড ট্রান্সপোজড অ্যারেগুলির প্রত্যেকের জন্য এটি আবার ট্রান্সপোজ করা উচিত কিনা তা যাচাই করে , typeof q instanceof Array... কী সুবিধাজনক বাগ: পি অনুমান আমি ১.৪..6 প্রকাশ না করা পর্যন্ত এখনই এটি ঠিক করতে পারছি না ...
ইটিএইচ প্রোডাকশনস

2

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

(space)(time)1230

কোডটির 24% ব্যয় করে আমরা কোন বছরে ... \ o /

s=>t=>2*s[0].every((x,i)=>s.some(b=>x-b[i]))|t.some(y=>(s|=(y/=(new Date).getFullYear())>1?4:y+1)>6)

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

মন্তব্য

s => t =>              // s[] = space array; t[] = time array
  2 *                  // the space flag will be doubled
  s[0].every((x, i) => // for each coordinate x at position i in the first entry of s[]:
    s.some(b =>        //   for each entry b in s[]:
      x - b[i]         //     if we've found b such that b[i] != x, the coordinate is valid
    )                  //   end of some()
  )                    // end of every()
  |                    // bitwise OR with the time flag
  t.some(y =>          // for each year y in t[]:
    (s |=              //   update the bitmask s (initially an array, coerced to 0)
      ( y /=           //     divide y
        (new Date)     //     by the current year (this is safe as long as no time-travel
        .getFullYear() //     machine is available to run this it at year 0)
      ) > 1 ?          //   if the result is greater than 1:
        4              //     do s |= 4 (future)
      :                //   else:
        y + 1          //     do s |= y + 1; y + 1 = 2 if both years were equal (present)
                       //     otherwise: y + 1 is in [1, 2), which is rounded to 1 (past)
    ) > 6              //   set the time flag if s = 7
  )                    // end of some()

ব্যর্থconsole.log(f([[5,4,2], [3,4,0], [1,4,2], [9,4,4]])([2020])) // neither
l4m2

@ l4m2 হুঁ। 1 বাইট ব্যয়ে স্থির। আমি আমার মাথার উপরের দিক থেকে 99-বাইট সমাধানটি ভাবতে পারি না।
আর্নৌল্ড

1

আর , 106 , 105 বাইট

function(s,t)all((x<-apply(s,1,range))[1,]-x[2,])-2*all((-1:1)%in%sign(as.POSIXlt(Sys.Date())$ye+1900-t))

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

ইনপুট :

s : matrix of space coordinates (3 x N)
t : vector time years 

একটি পূর্ণসংখ্যা মান সমান আউটপুট করুন:

 1 : if traveled through space only
-2 : if traveled through time only
-1 : if traveled through space and time
 0 : if traveled neither through space nor time

1

ব্যাচ, 353 বাইট

@echo off
set/as=t=0,y=%date:~-4%
for %%a in (%*) do call:c %~1 %%~a
if %s%==7 (if %t%==7 (echo both)else echo space)else if %t%==7 (echo time)else echo neither
exit/b
:c
if "%6"=="" goto g
if %1 neq %4 set/as^|=1
if %2 neq %5 set/as^|=2
if %3 neq %6 set/as^|=4
exit/b
:g
if %4 lss %y% (set/at^|=1)else if %4==%y% (set/at^|=2)else set/at^|=4

দ্রষ্টব্য: যেহেতু কমা হ'ল ব্যাচের মধ্যে আর্গুমেন্ট বিভাজক, যাতে স্থানের স্থানাঙ্কগুলি ইনপুট করার জন্য আপনাকে অবশ্যই উদ্ধৃতি দিতে হবে যেমন

spacetime "5,7,2" "5,3,8" "-6,3,8" "5,7,2" 2000 2002

Explantion:

@echo off

অযাচিত আউটপুট বন্ধ করুন।

set/as=t=0,y=%date:~-4%

দুটি বিটমাস্ক সেট আপ করুন এবং বর্তমান বছরটিও বের করুন। (YYYY-MM-DD লোকেলগুলিতে ব্যবহার করুন%date:~,4% একই বাইট গণনার জন্য করা হয়))

for %%a in (%*) do call:c %~1 %%~a

সমস্ত আর্গুমেন্ট উপর লুপ। ~কারণ তুল্য মান পৃথক পরামিতি বিভক্ত করা হবে।

if %s%==7 (if %t%==7 (echo both)else echo space)else if %t%==7 (echo time)else echo neither
exit/b

বিটমাস্কগুলি পুরোপুরি সেট করা আছে কিনা এবং সঠিক ফলাফলটি আউটপুট করে দেখুন।

:c
if "%6"=="" goto g

দেখুন এটি কোনও যুগ্ম বা স্থানাঙ্ক এবং এক বছর কিনা।

if %1 neq %4 set/as^|=1
if %2 neq %5 set/as^|=2
if %3 neq %6 set/as^|=4
exit/b

যদি এটি স্থানাঙ্ক হয় তবে স্পেসিয়াল স্পেসিয়াল মাত্রাটি পরিদর্শন করা হয়েছে কিনা তা অনুযায়ী স্থান বিটমাস্ক আপডেট করুন k

:g
if %4 lss %y% (set/at^|=1)else if %4==%y% (set/at^|=2)else set/at^|=4

যদি এটি এক বছর হয় তবে প্রাসঙ্গিক সময় মাত্রাটি পরিদর্শন করা হয়েছে কিনা তা অনুযায়ী সময় বিটমাস্ক আপডেট করুন।


1

জাভা 10, 154 বাইট

s->t->{int y=java.time.Year.now().getValue(),c=0,d=1,i=3;for(;i-->0;d*=c,c=0)for(var l:s)c=l[i]!=s[0][i]?1:c;for(int a:t)c|=a>y?4:a<y?1:2;return c/7*2+d;}

রিটার্নস 1জন্য স্থান , 2জন্য সময় , 3জন্য উভয় , 0জন্য তন্ন তন্ন । এটি এখানে অনলাইনে চেষ্টা করুন

Ungolfed:

s -> t -> { // lambda taking two parameters in currying syntax
            // s is int[][], t is int[]; return type is int

    int y = java.time.Year.now().getValue(), // the current year
        c = 0, // auxiliary variable used for determining both space and time
        d = 1, // initally, assume we have moved in all three space dimensions
        i = 3; // for iterating over the three space dimensions

    for(; i -- > 0; d *= c, c = 0) // check all coordinates for each dimension, if we have not moved in one of them, d will be 0
        for(var l : s) // check the whole list:
            c = l[i] != s[0][i] ? 1 : c; // if one coordinate differs from the first, we have moved

    for(int a : t) // look at all the years; c is 0 again after the last loop
        c |= a > y ? 4 : a < y ? 1 : 2; // compare to the current year, setting a different bit respectively for past, present and future

    return c / 7 // if we have been to past, the present and the future ...
           * 2   // ... return 2 ...
           + d;  // ... combined with the space result, otherwise return just the space result
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.