অস্ট্রেলিয়া খনন - অ্যান্টিপোড


24

পটভূমি

অজস্র প্রজন্মের শিশুরা ভাবছে যে তারা সরাসরি নীচে একটি গর্ত খনন করলে তারা কোথায় শেষ হবে। দেখা যাচ্ছে যে এটি, আশ্চর্যজনকভাবে, বরং বিপজ্জনক হবে , তবে যাইহোক ...

অ্যান্টিপোডগুলি এমন পয়েন্ট যা পৃথিবীর পৃষ্ঠের একে অপরের বিপরীতে থাকে। এর অর্থ হ'ল যদি দুটি পয়েন্টের মধ্যে একটি রেখা আঁকানো হয় তবে এটি পৃথিবীর কেন্দ্রস্থল দিয়ে যেতে হবে।

চ্যালেঞ্জ

এমন একটি প্রোগ্রাম বা ফাংশন লিখুন যা একটি বিন্দু দিলে এর অ্যান্টিপোড খুঁজে পায়।

এই চ্যালেঞ্জে, দ্রাঘিমাংশ-অক্ষাংশ সিস্টেম এবং ডিগ্রি, অর্ক মিনিট এবং চাপ সেকেন্ড ব্যবহার করে পয়েন্টগুলি প্রতিনিধিত্ব করা হয়। অ্যান্টিপোডটি সন্ধান করতে প্রতিটি অর্ডিনেটের ( N <-> Sএবং W <-> E) দিকনির্দেশ করুন এবং দ্রাঘিমাংশকে 180ডিগ্রি থেকে বিয়োগ করুন ।

উদাহরণ:
বিষয়টি বিবেচনা করুন N 50 26 23 W 4 18 29। দিকনির্দেশগুলি অদলবদল করুন S 50 26 23 E 4 18 29। অ্যান্টিপোড স্থানাঙ্ক হিসাবে রেখে 180 0 0দিতে দ্রাঘিমাংশের অর্ডিনেট বিয়োগ করুন ।175 41 31S 50 26 23 E 175 41 31

বিধি

ইনপুট

অক্ষাংশ-দ্রাঘিমাংশের স্থানাঙ্কগুলির একটি সেট, যে কোনও যুক্তিসঙ্গত বিন্যাসে , যেখানে প্রতিটি অর্ডিনেটে একটি দিক, কয়েকটি ডিগ্রি, প্রচুর পরিমাণে মিনিট এবং বেশ কয়েকটি আর্ক সেকেন্ড থাকে।

আউটপুট

অ্যান্টিপোডের অক্ষাংশ-দ্রাঘিমাংশ স্থানাঙ্ক, যে কোনও যুক্তিসঙ্গত বিন্যাসে , যেখানে প্রতিটি অ্যাসিনেটে একটি দিক, কয়েকটি ডিগ্রি, প্রচুর পরিমাণে মিনিট এবং বেশ কয়েকটি আর্ক সেকেন্ড থাকে।

যুক্তিযুক্তভাবে বোঝাতে হবে যে স্থানাঙ্কের প্রতিটি অংশটি নির্বিঘ্নে আলাদা করা যায়।

চশমা

  • অক্ষাংশ কোটি জন্য দিক হল Nবা S, ও দ্রাঘিমাংশ কোটি হয় যে Wবা E
  • সমস্ত সমন্বয় মান মান পূর্ণসংখ্যা হয়। ডিগ্রী মানের মধ্যে হতে হবে 0এবং 90অক্ষাংশ জন্য, এবং মধ্যে 0এবং 180দ্রাঘিমাংশের জন্য। উভয় অর্ডিনেটের জন্য চাপের মিনিট এবং চাপের দ্বিতীয় মানগুলি হবে 0এবং এর মধ্যে 59
  • যদি একটি আদেশের জন্য সমস্ত মান 0হয় তবে উভয় দিকই গ্রহণযোগ্য।
  • কোনও মান শূন্য-প্যাড করার প্রয়োজন নেই।
  • কোনও অক্ষাংশ অর্ডিনেট কখনই 90ডিগ্রির চেয়ে বড় হবে না এবং দ্রাঘিমাংশের আরডিনেট কখনও 180ডিগ্রির চেয়ে বড় হবে না ।
  • স্ট্যান্ডার্ড লুফোলস প্রযোজ্য।

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

N 50 26 23 W 4 18 29 -> S 50 26 23 E 175 41 31

S 43 9 9 E 0 0 5     -> N 43 9 9 W 179 59 55

N 0 0 0 E 0 0 0      -> S/N 0 0 0 W/E 180 0 0 (either direction fine in each case)

S 1 2 3 W 4 5 6      -> N 1 2 3 E 175 54 54

S 9 21 43 W 150 7 59 -> N 9 21 43 E 29 52 1

S 27 40 2 W 23 0 0   -> N 27 40 2 E 157 0 0

N 0 58 37 W 37 0 0   -> S 0 58 37 E 143 0 0

উপকারী সংজুক

এটি , তাই বাইটের মধ্যে সংক্ষিপ্ত উত্তর!


এটি কি যুক্তিসঙ্গত বিন্যাস? চারটি ইনপুট: 3 সংখ্যার অ্যারে, চর, তিনটি সংখ্যার অ্যারে; নিউলাইন দ্বারা পৃথক
লুইস মেন্ডো

@ লুইস মেন্ডো আমি আপনাকে ভুল বুঝে না নিলে আমি কেবল তিনটি ইনপুট দেখতে পাচ্ছি; আমি ধরে নিচ্ছি আপনি একটি অতিরিক্ত চর চান? আমি বলব যে এটি একটি যুক্তিসঙ্গত ফর্ম্যাট। যুক্তিসঙ্গতভাবে, আমি মূলত বোঝাচ্ছি যে স্থানাঙ্কের প্রতিটি অংশ নির্বিঘ্নে আলাদা করা যায়।
দ্য বাইকিংভাইকিং

হ্যাঁ, আমি প্রথম চরটি ভুলে গিয়েছিলাম। ধন্যবাদ!
লুইস মেন্ডো

3
"বরং বিপজ্জনক"? সাথ, একবার এখানে আসার পরে আসল বিপদটি ।
অ্যান্ড্রু গ্রিম

1
শিগগির সাড়া না দেওয়ার জন্য @ বাসুকক্সুয়ান ক্ষমা প্রার্থনা করুন। আমি বলতে হবে যে, এসব ফরম্যাটের উভয় যেহেতু বৈশিষ্ট প্রয়োজন, যুক্তিসংগত নয় N, S, E, অথবা Wএকটি দিক হিসেবে, যখন অপ্রয়োজনীয় 0যা মান হিসেবে প্রবর্তন অস্পষ্টতা যা কোটি কম্পোনেন্ট প্রতিনিধিত্ব করে।
দ্য বাইকিংভিকিং

উত্তর:


1

05AB1E, 37 34 বাইট

`60©3L<Rm*O3°648*s-®‰`s®‰s‚˜)'€Ã‡

ব্যাখ্যা

`                                      # split input to 4 lines with longitude on top
 60©3L<Rm*O                            # convert longitude to seconds
            3°648*                     # longitude 180 0 0 in seconds
                  s-                   # subtract our longitude from this
                    ®‰`                # get seconds part
                       s®‰             # get minute and degrees part
                          s‚˜)         # join to list
                              '€Ã‡    # translate directions

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

সম্পাদনা: সংরক্ষিত 3 ধন্যবাদ বাইট আদনান


ছোট হাতের অনুমতি দেওয়া থাকলেও আপনি সংকোচন "NEWS"করতে পারেন। ‘€Ã‘'€Ã
আদনান

@ আদনান: চমৎকার! স্ট্রিংটি ইতিমধ্যে ছোট হওয়ায় সংক্ষেপণের কথা ভাবেননি।
এমিগিনা

6

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

(a,b,c,d,e,f,g,h)=>[a<'S'?'S':'N',b,c,d,e<'W'?'W':'E',!(g|h)+179-f,g|h&&!h+59-g,h&&60-h]

8 টি প্যারামিটার নেয় এবং ফলাফল হিসাবে একটি অ্যারে প্রদান করে। প্রত্যাশা aকরে এক হতে হবে Nবা Sএকইভাবে eএক হতে Wবা এক হতে হবে E। গণনাগুলি:

  • f179 থেকে বিয়োগ করা দরকার যদি হয় হয় gবা hননজারো হয় তবে 180 হয় উভয় gএবং hশূন্য হয় (কারণ কোনও orrowণ নেই), সুতরাং !(g|h)এটি 179- এ যুক্ত করা হয়েছে।
  • gউভয় gএবং শূন্য উভয় হলে hশূন্য g|h&&হওয়া দরকার, অন্যথায় এটি hননজারো হলে 59 থেকে বিয়োগ করা দরকার তবে hশূন্য হলে 60 হয় (কারণ কোনও bণ নেই), সুতরাং !h59- এ যোগ করা হবে।
  • h এটি ইতিমধ্যে শূন্য থাকলে শূন্য হওয়া দরকার, অন্যথায় এটি 60 থেকে কেবল বিয়োগ করা হয়।

এই তাকান আরেকটি উপায় যে বিজ্ঞপ্তি বাইনারি মধ্যে বিয়োগ 1s সম্পূরক প্লাস একটি অতিরিক্ত 1. এই সমস্যা, আমরা নিতে অনুবাদিত যোগ করে অর্জিত হয় হয় 179-f, 59-gএবং 59-hযোগ 1. 59-h+1 হয় 60-h, কিন্তু যদি এটি 60 তারপর এটা বহন করে , সুতরাং কাঙ্ক্ষিত ফলাফলটি শূন্য যদি hমূলত শূন্য হয়। আমরা 59-gযদি 1 টি যোগ করি তবে সেখানে কোনও ক্যারি রয়েছে h, অর্থাত্ যদি hএটি শূন্য হয়। আবার আমাদের একটি বহন করার অনুমতি দিতে হবে, যা এই সময় উভয় gএবং hশূন্য হলেই ঘটে এবং আমরা 179-fএই ক্ষেত্রে 1 যুক্ত করি ।


6

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

'NS'tPXEii'WE'tPXE648e3i60:qXJZA-JYAtn3-?2:&)wJZAwh

ছক পূরণ করা:

'N'
[50 26 23]
'W'
[4 18 29]

আউটপুট ফরমেট:

S
50 26 23
E
175  41  31

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

ব্যাখ্যা

'NS'tPXE     % Take input (string) implicitly. Exchange 'N' and 'S'
i            % Take input (array)
i'WE'tPXE    % Take input (string). Exchange 'W' and 'E'
648e3        % Push 648000
i            % Take input (array)
60:qXJ       % Push [0 1 ... 59]. Copy into clipboard J
ZA           % Convert second input array from base 60 to decimal
-            % Subtract
JYA          % Convert to base 60
tn3-?        % If length exceeds 3
  2:&)       %   Split into first two elements and then the rest
  w          %   Swap
  JZA        %   Convert from base 60 to decimal
  wh         %   Swap, concatenate

গত লাইন দ্বিতীয় এ আপনার ব্যাখ্যা একটি টাইপো আছে: bnase
দ্য বাইকিংভিকিং

1
@ দ্য বাইকিংভিকিং ধন্যবাদ! সংশোধন করা হয়েছে
লুইস মেন্ডো

4

র‌্যাকেট, 199 বাইট

(λ(l)(cons(cons(if(eq?(caar l)'n)'s'n)(cdar l))(cons(if(eq?(cadr l)'e)'w'e)(list (- 180(+(caddr l)(sgn(foldl + 0(cdddr l)))))(modulo(- 60(+(fourth l)(sgn(fifth l))))60)(modulo(- 60(fifth l))60)))))

এটা ভয়াবহ দীর্ঘ। বোধহয় কিছু জিনিস আমি এটা আরও ছোট করতে করতে পারে, কিন্তু শিহরিত অবস্থা আমি পুরোপুরি কাজ করছি।

consদুটি জুড়ি নেয় lists: একটি অক্ষাংশের জন্য এবং একটি দ্রাঘিমাংশের জন্য। প্রতিটি তালিকার প্রথম আইটেম হিসাবে দিক রয়েছে (ছোট ছোট র‌্যাকেট প্রতীক হিসাবে) এবং এটি ডিগ্রি, আর্ক-মিনিট এবং আর্ক-সেকেন্ড অনুসরণ করে। একই বিন্যাসে আউটপুট

র‌্যাকেট দুটি তালিকার এই জুটিকে একটি একক তালিকা হিসাবে তার প্রথম উপাদান হিসাবে অন্য তালিকার ব্যাখ্যা করবে। এটি পুরোপুরি ঠিক আছে, যেহেতু আপনি এখনও অক্ষাংশ এবং দ্রাঘিমাংশ উভয়ই অ্যাক্সেস করতে পারেন যেন তারা একটি জোড়ায় দুটি তালিকা।

ব্যবহার:

>    (
     (λ(l)(cons(cons(if(eq?(caar l)'n)'s'n)(cdar l))(cons(if(eq?(cadr l)'e)'w'e)(list (- 180(+(caddr l)(sgn(foldl + 0(cdddr l)))))(modulo(- 60(+(fourth l)(sgn(fifth l))))60)(modulo(- 60(fifth l))60)))))
     (cons (list 's 43 9 9) (list 'e 0 0 5)))
'((n 43 9 9) w 179 59 55)

যা '((n 43 9 9) (w 179 59 55))দুটি তালিকা হিসাবে ভবিষ্যতের কোড দ্বারা ব্যাখ্যা করা যেতে পারে ।


4

পাইথ, 41 45 43 35 বাইট

K60-"NS"ww-"EW"wA.D-*3^K3iEKK+.DGKH

ডিগ্রি এবং মিনিটকে সেকেন্ডে রূপান্তর করতে বেস -60 রূপান্তরটি ব্যবহার করে।

I / O ফর্ম্যাট:

N
[1,2,3]
E
[4,5,6]

এটি প্রতিবার আপনি যখন একটি লাইন ইনপুট করেন তখন একটি লাইন প্রিন্ট করে, যাতে একটি সুদর্শন ফর্ম্যাট থাকে, আপনি সিএলআই ব্যবহার করতে পারেন এবং ইনপুটটি পাইপ করতে পারেন বা আরও স্বাচ্ছন্দ্যে অনলাইন পাইথ বাস্তবায়নটি ব্যবহার করতে পারেন

সিউডোকোডে:

K60                                              K = 60
   -"NS"w                                        "NS".remove(input())
         w                                       print(input())
          -"EW"w                                 "EW".remove(input())
                A.D                              G,H = divmod(
                   -*3^K3                          3*K**3 -
                         iEK                         baseToDec(input(),K)),
                            K                      K)
                             +.DGKH              divmod(G,K)+H

@ লুইস মেন্ডো আপনার মতো, তবে কমাগুলি পৃথক করা তালিকা এবং কোনও উদ্ধৃতি নেই
বুসুক্সুয়ান

4

পাইথন 2, 140 122 বাইট

আপডেট করা হয়েছে:

def f(c):x=([180,0,0],[179,59,60])[1<sum(c[6:8])];print['NS'['N'in c]]+c[1:4]+['EW'['E'in c]]+map(lambda x,y:x-y,x,c[5:8])

এটি কিছুটা ভিন্ন পদ্ধতির ব্যবহার করে: মিনিট এবং সেকেন্ডের উপর নির্ভর করে দ্রাঘিমাংশ থেকে বিয়োগ করতে মানগুলি সেট করে। যদি 0 মিনিট এবং সেকেন্ড থাকে তবে এটি ডিগ্রি থেকে 180 টি বিয়োগ করে এবং যদি 0 0 মিনিট এবং সেকেন্ড থাকে তবে এটি যথাক্রমে d, m, s থেকে 179, 59 এবং 60 বিয়োগ করে।

মূল:

def f(c):v=divmod;m,s=v((180-(c[5]+c[6]/60.+c[7]/3600.))*3600,60);d,m=v(m,60);print['NS'['N'in c]]+c[1:4]+['EW'['E'in c]]+map(round,[d,m,s])

ইনপুটটিকে একটি তালিকা হিসাবে গ্রহণ করে f(['N', 0, 0, 0, 'E', 0, 0, 0]):, দ্রাঘিমাংশকে দশমিক ডিগ্রীতে রূপান্তর করে, 180 থেকে বিয়োগ করে, তারপরে ডিগ্রি, মিনিট, সেকেন্ডে রূপান্তরিত করে প্রক্রিয়াটির দিকনির্দেশগুলি উল্টিয়ে দিয়ে পুনরায় তালিকা তৈরি করে।

আন golfed:

def f(c):
    minutes,seconds=divmod((180-(c[5]+c[6]/60.+c[7]/3600.))*3600,60)
    degrees,minutes=divmod(minutes,60)
    print ['NS'['N'in c]]+c[1:4]+['EW'['E'in c]]+map(round,[degrees,minutes,seconds])

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


3

জাভাস্ক্রিপ্ট, 138 137 129 124 112 110

@ নীল কোড দ্বারা অনুপ্রাণিত 2 বাইট উন্নতি

f=a=>a.map((v,i,a)=>i%4?i>6?v&&60-v:i>5?(59-v+!a[7])%60:i>4?179-v+!(a[7]|a[6]):v:'NEWS'[3-'NEWS'.indexOf(v)]);
  • ইনপুট = আউটপুট = অ্যারে 2x (1 বড় হাতের অক্ষর এবং 3 ইনট) সমেত
  • ফায়ারফক্সে পরীক্ষা করা হয়েছে

ungolfed

f=a=>a.map((v,i,a)=>
i%4?
    i>6?v&&60-v              // 7: invert seconds - old: (60-v)%60
    :i>5?(59-v+!a[7])%60     // 6: invert minutes, increase if seconds are 0
    :i>4?179-v+!(a[7]|a[6])  // 5: invert degrees, increase if seconds and minutes are 0
    :v                       // 1,2,3: unchanged
:'NEWS'[3-'NEWS'.indexOf(v)] // 0,4: swap directions
);

পরীক্ষা

<table id=out border=1><tr><th>in</th><th>out<th>expected</th><th>ok?</th></tr></table>
<script>
addR=(r,s)=>{var d=document.createElement('td');d.appendChild(document.createTextNode(s));r.appendChild(d)}
test=(x,e,f)=>{var y,r=document.createElement('tr');addR(r,x);addR(r,y=('function'==typeof f)?f(x):f);addR(r,e);addR(r,e.toString()==y.toString()?'Y':'N');document.getElementById('out').appendChild(r)}

samples=[
'N',50,26,23,'W',4,18,29,   'S',50,26,23,'E',175,41,31,
'S',43,9,9,'E',0,0,5,       'N',43,9,9,'W',179,59,55,
'N',0,0,0,'E',0,0,0,        'S',0,0,0,'W',180,0,0,
'S',1,2,3,'W',4,5,6,        'N',1,2,3,'E',175,54,54,
'S',9,21,43,'W',150,7,59,   'N',9,21,43,'E',29,52,1,
'S',27,40,2,'W',23,0,0,     'N',27,40,2,'E',157,0,0,
'N',0,58,37,'W',37,0,0,     'S',0,58,37,'E',143,0,0,
];
while (samples.length)
{
    x=samples.splice(0,8);
    e=samples.splice(0,8);
    test(x,e,h);
    test(e,x,h);
}
</script>

আহ আমি কেবল দেখছি @ নীলের একই ধারণা ছিল, তবে কিছুটা ছোট প্যারামিট্রাইজিং
টাইটাস

2

পাইথন 3, 131 130 বাইট

def f(w,x,y,z):S=60;d=divmod;a,b,c=y;l,m=d(648e3-c-S*b-S*S*a,S);return w,"N" if x=="S" else "S",d(l,S)+(m,),"E" if z=="W" else "W"

ফর্ম্যাটস: কোণগুলি ফর্মের টিপলস (deg,min,sec), দিকগুলি ফর্মের N। 2 টি কোণের একটি চতুর্থাংশ আউটপুট দেয়, প্রতিটি তার নির্দেশ অনুসরণ করে।

অবরুদ্ধ সংস্করণ:

def f(latitude,NS,longitude,EW):
    degree,minute,second=longitude
    minute,second=divmod(648000-second-60*minute-60*60*degree,60)
    return latitude, "N" if NS=="S" else "S", divmod(minute,60)+(second,), "E" if EW=="W" else "W"

1
আপনি করছেন দ্বারা 120 বাইট এই নিচে পেতে পারেন def f(w,x,y,z):S=60;d=divmod;a,b,c=y;l,m=d(648e3-c-S*b-S*S*a,S);return w,["S","N"][x=="S"],d(l,S)+(m,),["W","E"][z=="W"]যে ব্যবহার করে এই কাজ Trueএবং Falseহিসেবে ব্যাখ্যা করা যেতে পারে 1এবং 0, তাই a if b else cসমতূল্য [c, a][b]। পাশের নোটে, আমি মনে করি যে আপনার মূল কোডটিতে একটি টাইপ রয়েছে; হওয়া x=="W"উচিত z=="W"?
TheBikingViking

2

সি #, 310 269 ​​বাইট

float[]t(string[]a,int n)=>a.Skip(n).Take(3).Select(float.Parse).ToArray();string A(string i){var s=i.Split(' ');var w=t(s,5);float a=180-(w[0]+w[1]/60+w[2]/3600),b=a%1*60;return(s[0][0]>82?"N":"S")+$" {string.Join(" ",t(s,1))} {(s[4][0]<70?'W':'E')} {a} {b} "+b%1*60;}

ইনপুটটি একটি স্ট্রিং। আপনি এটি নেটফিডেলে চেষ্টা করতে পারেন ।

কোড

float[]t(string[]a,int n)=>a.Skip(n).Take(3).Select(float.Parse).ToArray();
string A(string i) {
    var s=i.Split(' ');var w=t(s,5);float a=180-(w[0]+w[1]/60+w[2]/3600),b=a%1*60;
    return (s[0][0]>82?"N":"S")
        +$" {string.Join(" ",t(s,1))} {(s[4][0]<70?'W':'E')} {a} {b} "+b%1*60;
}

আমি যদি একটি stringইনপুট হিসাবে না নিলেও একটি char, float[], char, float[]করি তবে আমি এটি করতে পারি:

সি #, 167 166 165 163 152 148 147 139 বাইট

(s,n,e,w)=>{float a=180-(w[0]+w[1]/60+w[2]/3600),b=a%1*60;return(s>82?"N":"S")+$" {string.Join(" ",n)} {(e<70?'W':'E')} {a} {b} "+b%1*60;};

কোড

(s,n,e,w) => {
    float a=180-(w[0]+w[1]/60+w[2]/3600),b=a%1*60;
    return(s>82?"N":"S")+$" {string.Join(" ",n)} {(e<70?'W':'E')} {a} {b} "+b%1*60;
};

এছাড়াও আমি 164 টি অক্ষর এবং 166 বাইটে সরানোর পরিবর্তে আমি এটিকে 3600ব্যবহার করতে পারি এবং ব্যবহার করতে পারি । আমি এটি ব্যবহার করা উচিত?


সি #, 150 বাইট

(s,n,m,p,e,w,x,y)=>{var t=new TimeSpan(180,0,0)-new TimeSpan(w,x,y);return(s>82?"N":"S")+$" {n} {m} {p} {(e<70?'W':'E')} {t.TotalHours} {t:%m\\ s}";};

কোড

(s,n,m,p,e,w,x,y) => {
    var z=new TimeSpan(180,0,0)-new TimeSpan(w,x,y);
     return(s>82?"N":"S")+$" {n} {m} {p} {(e<70?'W':'E')} {z.TotalHours} {z:%m\\ s}";
};

আরও একটি। নেট উপায়! আমি .NET সব যুক্তিবিজ্ঞান প্রতিনিধি struct TimeSpanএবং আমি AB স্ট্রিং যুক্তিবিজ্ঞান বিন্যাস ব্যবহার করুন। ইনপুট হয় char, int, int, int, char, int, int, int। আমি কিছু শেয়ার করতে এই এক শেয়ার। আমার চেয়ে আরও ভাল উপায়ে কেউ উন্নতি করতে পারে।


দুর্ভাগ্যক্রমে এটি ভার্জোজ।
স্টিভেন এইচ।

@ সাফফুল আমি বিভিন্ন যুক্তি সহ অন্য সংস্করণ পোস্ট করি। কম ভার্বোস না? আমি এখনও এ থেকে মুক্তি পেতে পারি না string.Join()...
অ্যালোইসডজি বলেছেন রিনস্টেট মনিকা

মনে রাখবেন যে এটি সি # 6.0
ইয়াতসি

@ টুক্কাএক্স যেহেতু এটি সি # এর সর্বশেষতম সংস্করণ, তাই আমি এটি নির্দিষ্ট করেছিলাম না। আমি যদি সি # 7 বৈশিষ্ট্যের মতো কিছু আন রিলিজ বৈশিষ্ট্য ব্যবহার করি তবে আমি করব।
অ্যালোসডজি বলেছেন মনিকা পুনরায় ইনস্টল করুন

1
ভাল, আমি একটি দেখতে পাচ্ছি না return, আমাকে নিজেই এটি যুক্ত করতে হয়েছিল ... আপনার পরীক্ষাটি a('N', new float[] { 50, 26, 23 }, 'W', new float[] { 4, 18, 29 })আমি পেয়ে যাচ্ছি S 50 26 23 E 175.6919 41.51642 30.98511- আপনি কি এটিকে পাস হিসাবে বিবেচনা করবেন?
onedaywhen

0

জাভা, 199 177 বা 151 বা 134 বাইট

177 বাইট সমাধান যা ফলাফল মুদ্রণ করে

void t(int...a){int i=648000-(a[5]*3600+a[6]*60+a[7]);System.out.println(a[0]=='N'?"S":"N"+" "+a[1]+" "+a[2]+" "+a[3]+" "+(a[4]=='E'?"W":"E")+" "+i/3600+" "+i/60%60+" "+i%60);}

151 বাইট সমাধান যা অ্যারের হিসাবে ফলাফল দেয়

Object[]y(int...a){int i=648000-(a[5]*3600+a[6]*60+a[7]);return new Object[]{a[0]=='N'?"S":"N",a[1],a[2],a[3],a[4]=='E'?"W":"E",i/3600,i/60%60,i%60};}

134 বাইটস যদি আমরা ল্যাম্বদা স্বরলিপি ব্যবহার করি

a->{int i=648000-a[5]*3600-a[6]*60-a[7];return new Object[]{a[0]=='N'?"S":"N",a[1],a[2],a[3],a[4]=='E'?"W":"E",i/3600,i/60%60,i%60};}

0

সি, 188

main(int c,char**v){int n=*v[1]==78?83:78,e=*v[5]==69?87:69,b=648000-(atoi(v[6])*3600+atoi(v[7])*60+atoi(v[8]));printf("%c %s %s %s %c %d %d %d\n",n,v[2],v[3],v[4],e,b/3600,b/60%60,b%60);}

8 টি প্রোগ্রাম আর্গুমেন্ট প্রয়োজন, অন্যথায় ব্যর্থ হবে। মত যুক্তি পাস N 50 26 23 W 4 18 29। দিকনির্দেশনা সূচক N, S, E, W, মূলধন হতে হবে।


0

পোস্টজিআইএস, 123 বাইট

টুল-ফর-দ্য জব হতাশাজনকভাবে ভার্জোজ, কিছুটা এসকিউএল স্বাচ্ছন্দ্যের কারণে এবং আংশিকভাবে জ্যামিতি এবং পিছনে ফেলে দেওয়ার প্রয়োজনের কারণে:

CREATE FUNCTION f(p geography)
RETURNS geography
AS 'SELECT ST_Affine(p::geometry,1,0,0,-1,180,0)::geography' LANGUAGE sql;

অন্যদিকে, এই একক ফাংশনটি পয়েন্ট, পয়েন্ট সংগ্রহ বা আরও জটিল আকারের (যেমন অস্ট্রেলিয়া এবং নিউজিল্যান্ডের পুরো উপকূলরেখা) রূপান্তর করবে।


0

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

আমার জাভাস্ক্রিপ্ট উত্তর হিসাবে একই পদ্ধতির , একটি ভাঙ্গন জন্য সেখানে তাকান

  • ওভারহেড +16 ফাংশন
  • $লক্ষণগুলির জন্য +17
  • প্যারান্থেসিসের জন্য +12 (বিভিন্ন অপারেটরের অগ্রাধিকার)
  • +4 foreachকারণ পিএইচপি'র array_mapবিশাল ওভারহেড রয়েছে
  • +1 (60-$v)%60কারণ $v&&60-$vপিএইচপি-তে বুলি দেওয়ার জন্য
  • -8 আসল উপর কাজ করে
  • -4 ব্যবহার করে chr, ordএবং দিক swap 'র কিছু arithmetics

function f(&$a){foreach($a as$i=>$v)$a[$i]=$i%4?($i>6?(60-$v)%60:($i>5?(59-$v+!$a[7])%60:($i>4?179-$v+!($a[7]|$a[6]):$v))):chr(($i?156:161)-ord($v));}
  • ফাংশন মূল উপর কাজ করে
  • ফর্ম্যাট: 2x সহ অ্যারে (1 বড় হাতের অক্ষর, 3 ইনট)

পরীক্ষা

function out($a){if(!is_array($a))return$a;$r=[];foreach($a as$v)$r[]=out($v);return'['.join(',',$r).']';}
function cmp($a,$b){if(is_numeric($a)&&is_numeric($b))return 1e-2<abs($a-$b);if(is_array($a)&&is_array($b)&&count($a)==count($b)){foreach($a as $v){$w = array_shift($b);if(cmp($v,$w))return true;}return false;}return strcmp($a,$b);}
$samples=[
N,50,26,23,W,4,18,29,   S,50,26,23,E,175,41,31,
S,43,9,9,E,0,0,5,       N,43,9,9,W,179,59,55,
N,0,0,0,E,0,0,0,        S,0,0,0,W,180,0,0,
S,1,2,3,W,4,5,6,        N,1,2,3,E,175,54,54,
S,9,21,43,W,150,7,59,   N,9,21,43,E,29,52,1,
S,27,40,2,W,23,0,0,     N,27,40,2,E,157,0,0,
N,0,58,37,W,37,0,0,     S,0,58,37,E,143,0,0,
];
while ($samples)
{
    $xx=$x=array_splice($samples,0,8);
    $ee=$e=array_splice($samples,0,8);
    func($x); test($xx,$ee,$x);
    func($e); test($ee,$xx,$e);
}

পরিত্যক্ত ধারণা

  • বহনকারী পতাকা সহ কোনও লুপের পদ্ধতির: +5
  • বহনকারী পতাকা সহ পিছনের দিকে লুপ করুন: +7
  • আমি এটি পিএইচপি <5.4 এর জন্য একটি প্রোগ্রামে রূপান্তর করতে পারি, তবে কিছু মনে করবেন না: -3

0

বেফুঞ্জ, 122 114 111 বাইট (110 টি অক্ষর)

~"N"-v
 v"N"_"S"
v>,&.&.&.~"W"-
_"E"v"W"
+:v >,&"´"\-&"Z"*&
v\_\.00..@.-\"<".-1\ <
>1-.:"Z"/"<"\-\"Z"%:#^_\..@

ছক পূরণ করা:

N 50 26 23W 4 18 29

দ্রাঘিমাংশের দিকটি দেখুন এবং তোরণ সেকেন্ডগুলি অবশ্যই একসাথে আবদ্ধ হওয়া উচিত

আপনি কোডটি এখানে পরীক্ষা করতে পারেন

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