চলমান মার্জ সংঘাত


24

দুটি ফাইলকে মার্জ করার জন্য গিটের মতো একটি সরঞ্জাম ব্যবহার করার সময়, একটি সংঘাত সনাক্ত হয়ে মার্জটির ফলাফলের সাথে যুক্ত হতে পারে।

এই দুটি ফাইলের একত্রীকরণ:

আমার কাগজপত্র:

Common line of code 1
Common line of code 2
my lines
Common line of code 3
Common line of code 4

তাদের ফাইল:

Common line of code 1
Common line of code 2
their lines
Common line of code 3
Common line of code 4

ফলাফল হবে:

Common line of code 1
Common line of code 2
<<<<<<< Mine
my lines
=======
their lines
>>>>>>> Theirs
Common line of code 3
Common line of code 4

দেখুন সংঘর্ষ মার্কার লাইনস

আমার সাথে এই দ্বন্দ্ব সমাধানের ফলে এই ফাইলটি তৈরি হবে:

Common line of code 1
Common line of code 2
my lines
Common line of code 3
Common line of code 4

তাদের সাথে এই দ্বন্দ্ব সমাধানের ফলে এই ফাইলটি তৈরি হবে:

Common line of code 1
Common line of code 2
their lines
Common line of code 3
Common line of code 4

এই চ্যালেঞ্জের উদ্দেশ্য হ'ল এমন একটি উত্স ফাইল লিখুন যাতে একটি বিরোধ থাকে এবং এখনও সংকলন / সম্পাদন করে।

একটি উত্স ফাইল লিখুন যা:

  1. একটি বৈধ, দ্বি-মুখী, দ্বন্দ্ব সঠিক প্যাচ দ্বন্দ্ব চিহ্নিতকারী দ্বারা চিহ্নিত রয়েছে ( <<<<<<<, =======, >>>>>>>) খনি এবং চিহ্নিতকারী পর তাদের জন্য রয়েছে ফাইল বর্ণনাকারী ঐচ্ছিক।
  2. চিহ্নিতকারী যদি উত্সের অংশ থেকে থাকে তবে ত্রুটিগুলি / সতর্কতা ছাড়াই সংকলন / সম্পাদন করে
  3. আমার ব্যবহার করে দ্বন্দ্বের সমাধান হয়ে গেলে ত্রুটি / সতর্কতা ছাড়াই সংকলন / সম্পাদন করে
  4. ত্রুটিগুলি / সতর্কতা ছাড়াই সংকলন / সম্পাদন করে যদি তাদের ব্যবহার করে দ্বন্দ্বের সমাধান হয়
  5. সংঘাতযুক্ত ফাইলটি সংকলন / সম্পাদন করার সময় "হ্যালো সংঘাত" আউটপুটগুলি
  6. খনি সংস্করণটি সংকলন / সম্পাদন করার সময় "হ্যালো মাইন" আউটপুটগুলি
  7. তাদের সংস্করণ সংকলন / সম্পাদন করার সময় "হ্যালো তাদের" আউটপুটগুলি

চিহ্নিতকারীদের উত্স ফাইলে এমনভাবে অবস্থিত হওয়া উচিত যাতে কেডিফ 3 সংঘাতকে স্বীকৃতি দেয়।

স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ।

সংক্ষিপ্ততম কোডটি জয়ী।

স্কোর হল বিবাদযুক্ত উত্সের দৈর্ঘ্য


ফাংশন জমা দেওয়ার অনুমতি দেওয়া হয়েছে, বা কেবল সম্পূর্ণ প্রোগ্রাম?
Jakob

@ জ্যাকব - এটি কার্যকর করা / চালানো অবশ্যই সম্ভব হবে। সুতরাং যদি এমন কোনও আরপিএল থাকে যা ফাংশনটি (বা কেবল এক্সপ্রেশন) চালিয়ে দিতে পারে তবে অবশ্যই।
এর্নো

উত্তর:


2

জেলি , 51 বাইট

<<<<<<<
“½&;»
“£<Ø»
=======

“8ẉI»
>>>>>>>
“¢5Ṛ»;2£

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

ব্যাখ্যা

এখানকার দ্বন্দ্ব চিহ্নিতকারীরা এমনভাবে অবস্থান নিয়েছে যাতে দ্বন্দ্বটি সমাধান হওয়ার পরে তিনটি লাইনের একটিই প্রোগ্রামের দ্বিতীয় লাইনে পরিণত হয়; এটি একটি ধ্রুবক হবে, নামকরণ করা হবে । মূল প্রোগ্রামের দ্বিতীয় লাইনটি স্ট্রিংটিকে এনকোড করে " Conflict"(জেলির সংকীর্ণ স্বরলিপিতে); তৃতীয় লাইনটি স্ট্রিংটিকে এনকোড করে " Mine"(যদি দ্বন্দ্বটি আমার হিসাবে সমাধান করা হয় তবে এটি দ্বিতীয় লাইনে পরিণত হবে); ষষ্ঠ লাইনটি স্ট্রিংকে এনকোড করে" Theirs" (এবং তাদের হিসাবে সমাধান করা হলে দ্বিতীয় লাইনে পরিণত হবে)।

মূল প্রোগ্রামটি সর্বদা সর্বশেষ পংক্তিতে থাকে, যতক্ষণ না এটি মুছে ফেলা হয় তার আগে লাইন। এটি সংকুচিত এনকোডিং গ্রহণ করে "Hello"এবং ;এর মানটি সংযোজন করে (সুতরাং ) এটি পছন্দসই আউটপুট উত্পাদন করে।


13

জাভাস্ক্রিপ্ট (ES6), 102 94 93 90 বাইট

console.log('Hello',(a=`
<<<<<<<
Mine
=======
Theirs
>>>>>>>
Conflict`.split`
`)[6]||a[1])

যদি দ্বন্দ্বের সমাধান হয়ে যায়, তবে কোনও ষষ্ঠ লাইন নেই, সুতরাং এটি পরিবর্তে এখন প্রথম লাইনটি মুদ্রণ করে। সম্পাদনা করুন: 3 বাইট সংরক্ষিত @ রেন্ডারস্কোরকে ধন্যবাদ


নিয়মিত প্রকাশের সৃজনশীল ব্যবহার!
এরনো

@ এরনোডওয়ার্ড ওফস, আমি সবেমাত্র এটি পরিবর্তন করেছি ...
নিল

:) কোনও উদ্বেগ নেই, আমি এটি দেখে খুশি হয়েছিল
এর্নো

-3 বাইট:console.log('Hello',(a=`...`)[6]||a[1])
nderscore

10

ব্র্যাচল্যাগ , 68 67 66 বাইট

"Hello "wċ₂↰₁w∨"Conflict"w
<<<<<<<
"Mine"
=======
"Theirs"
>>>>>>>

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

চেষ্টা কর "Hello Mine"সংস্করণ এখানে করুন

চেষ্টা কর "Hello Theirs"সংস্করণ এখানে করুন

ব্যাখ্যা

সৌভাগ্যক্রমে, <<<<<<<, =======এবং >>>>>>>Brachylog মধ্যে সকল বৈধ নিয়ম সংজ্ঞা আছে। তারা যথাক্রমে এর অর্থ:

  • ইনপুট কোনও অন্তর্নিহিত ভেরিয়েবলের চেয়ে কম, নিজে থেকে কম ... ইত্যাদি, আউটপুটের চেয়ে কম।
  • ইনপুটটির সমস্ত উপাদান সমান এবং ইনপুটটির সমস্ত উপাদান সমান এবং ... এবং ইনপুট = আউটপুট
  • প্রথম হিসাবে একই কিন্তু তার চেয়ে বড়।

যদি আমরা দ্বন্দ্বগুলি সরিয়ে ফেলি তবে আমরা শেষ করব "Mine" বা "Theirs"দ্বিতীয় লাইন, যার মানে তারা সম্পৃক্ত সংখ্যা 1. পরিণত সঙ্গে যে বিধেয় কলিং ↰₁প্রথম লাইনে সঙ্গে তার ইনপুট এবং আউটপুট ঐক্যবদ্ধ করবে Mine/ Theirs, যা আমরা তারপর প্রিন্ট w

যদি আমরা ↰₁দ্বন্দ্বপূর্ণ ফাইলটি কল করি তবে আমরা কলিং শেষ করি <<<<<<<। অতএব আমরা সেই স্টিকেটটিকে ইনপুট হিসাবে স্ট্রিং দিয়ে বলি (ব্যবহার করে ċ₂- স্ট্রিংয়ের জন্য বাধ্য)। <ইনপুট হিসাবে একটি স্ট্রিং সঙ্গে ব্যর্থ হবে। তারপরে আমরা ∨"Conflict"wমূল শিকারীতে একটি বিভেদ রেখেছিলাম যা বলে যে যদি 1 প্রেডিকেট ব্যর্থ হয়, তবে আমরা Conflictপরিবর্তে মুদ্রণ করি । ↰₁স্ট্রিং সহ ইনপুট হিসাবে "Mine"বা ব্যর্থ হবে না"Theirs" লাইনের কারণ তারা স্ট্রিং।


9

পিএইচপি, 74 65 বাইট

দ্রষ্টব্য: আইবিএম -850 এনকোডিং ব্যবহার করে

Hello<?='
<<<<<<<
2:<?PU_~
=======
+;73"&_~
>>>>>>>
'^~ıǼ¡Ñ»¬áü;

একটি ফাইলে সংরক্ষণ করুন এবং এটি চালান:

php -nf conflict.php

ব্যাখ্যা

Hello       # Print "Hello"
<?='        # Print result of expression
<<<<<<<     # String with merge conflict
2:<?PU_~
=======
+;73"&_~
>>>>>>>
'
^           # XOR that string with...
~ıǼ¡Ñ»¬áü; # ... this string, negated.

বাইনারি এক্সওআর নিম্নলিখিত 3 টির মধ্যে একটিতে ফলাফল দেয়:

'
<<<<<<<
' ^ ~'ıǼ¡Ñ»¬áü'
==> ' Conflict' 
--------------------------------------------------------------------------
'
2:<?PU_~' ^ ~'ıǼ¡Ñ»¬áü'
==> ' Mine' (right padded with nul bytes)
--------------------------------------------------------------------------
'
+;73"&_~' ^ ~'ıǼ¡Ñ»¬áü'
==> ' Theirs' (right padded with nul bytes)

বদলান

  • স্ট্রিংগুলিতে বাইনারি লজিক ব্যবহার করে 9 বাইট সংরক্ষণ করা হয়েছে

কোনও একদিন পিএইচপিতে =======অপারেটর থাকবে এবং তারপরে এটি কিছুটা সহজ হবে।
Jakob

7

পিপ , 61 বাইট

"Hello ".("Conflict
<<<<<<<
Mine
=======
Theirs
>>>>>>>
"^n7)

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

এর মধ্যে সমস্ত ""কিছুই একটি স্ট্রিং। আমরা নতুন লাইনের উপর বড় স্ট্রিং বিভক্ত ("..."^n ) এবং সাইক্লিকাল ইনডেক্সিং ( (___7)) এর সাথে 7 তম উপাদানটি নিয়ে যাই । দ্বন্দ্বপূর্ণ সংস্করণের জন্য, এখানে সাতটি লাইন রয়েছে, সুতরাং সূচক 7 সূচক 0 এর সমান এবং আমরা পাই Conflict। সমাধান করা সংস্করণগুলির জন্য, তিনটি লাইন রয়েছে, সুতরাং সূচক 7 সূচক 1 এর সমান এবং আমরা Mine/ পাই Theirs। তারপরে "Hello "সামনের দিকে এবং অটোপ্রিন্টে সম্মতি জানানো।


খুব সৃজনশীল, আমি সাইক্লিকাল ইনডেক্সিং পছন্দ করি।
এরনো

6

ব্যাচ, 133 129 বাইট

@set s=Theirs
@goto t
<<<<<<<
:t
@set s=Mine
@goto m
=======
:m
@set s=Conflict
@goto t
>>>>>>>
:t
:m
echo Hello %s%

ব্যাখ্যা: gotoবিবৃতিটি পরবর্তী লেবেলে এটি খুঁজে পেতে পারে। দ্বন্দ্বের ক্ষেত্রে, এটি কেবল সংঘাতের চিহ্নিতকারীদের এড়িয়ে চলে এবং sএর চূড়ান্ত মান পায়। মাইনের সাথে সমাধানের ক্ষেত্রে, গোটোসের কোনও প্রভাব নেই, তবে শেষটি setআর বিদ্যমান নেই, সুতরাং ফলাফলটি আমার। তাদের সাথে সমাধানের ক্ষেত্রে ইনিটাল বাকী gotoবাইপাস করে setতাই ফলাফলটি এর প্রাথমিক মান। সম্পাদনা: @ ডিএলসকে ধন্যবাদ 4 টি বাইট সংরক্ষণ করা হয়েছে।


নিস! আপনি :cকি এর @goto tবদলে অপসারণ করতে পারেন ?
DLosc

@ডলকস ওহ, সুতরাং ব্যাচ প্রথমটির চেয়ে পরবর্তী লেবেলে যাবে? ঝরঝরে!
নীল

আমি জানি না - আমি এটি পরীক্ষা করিনি। আমি সম্পূর্ণ ভুল হতে পারে।
DLosc

4

পাইথন 2, 88 87 বাইট

print 'Hello','''
<<<<<<<
Mine
=======
Theirs
>>>>>>>
Conflict'''.split('\n')[1::5][-1]

যথাযথ হিসাবে ষষ্ঠ বা (এখন) প্রথম লাইনটি মুদ্রণ করে।


1
এটা তোলে "হ্যালো" অংশ প্রিন্ট করে না ...
Erno

@ আর্নোডওয়ার্ড দুঃখিত, আমি আমার অন্য উত্তরেও ভুলটি করেছি, এবং এটিকে ঠিক করতে ভুলে গেছি।
নিল

হ্যালো এবং এরপরে যা কিছু আছে তার মধ্যে কোনও স্থান আছে?
এর্নো

@ এরনোডভিয়ার্ড পাইথন 2 printবিবৃতি সর্বদা বিভাজক হিসাবে একটি স্থান ব্যবহার করে (এবং একটি অনুবর্তনযোগ্য নিউলাইন; পাইথন 3 এর printফাংশন আপনাকে বিভাজক এবং টার্মিনেটর চয়ন করতে দেয়)।
নিল

3

.কোম অপকোড, 77 বাইট

0000h: B4 09 BA 17 01 CD 21 BA 1F 01 80 3E 1F 01 3C 75 ; ......!....>..<u
0010h: 03 BA 44 01 CD 21 C3 48 65 6C 6C 6F 20 24 0A 3C ; ..D..!.Hello $.<
0020h: 3C 3C 3C 3C 3C 3C 0A 4D 69 6E 65 24 0A 3D 3D 3D ; <<<<<<.Mine$.===
0030h: 3D 3D 3D 3D 0A 54 68 65 69 72 24 0A 3E 3E 3E 3E ; ====.Their$.>>>>
0040h: 3E 3E 3E 0A 43 6F 6E 66 6C 69 63 74 24          ; >>>.Conflict$

        org 100h
        mov ah, 9
        mov dx, str1
        int 21H
        mov dx, str2
        cmp [str2], byte '<'
        jne $+5
        mov dx, str3
        int 21H
        ret

str1    db 'Hello $', 10
str2    db '<<<<<<<', 10
        db 'Mine$', 10
        db '=======', 10
        db 'Their$', 10
        db '>>>>>>>', 10
str3    db 'Conflict$'

<<<<<<<অনুমতি প্রাপ্তির পরে যদি কোনও স্থান , 75 বাইট

0000h: B4 09 BA 0D 01 CD 21 BA 1E 01 CD 21 C3 48 65 6C ; ......!....!.Hel
0010h: 6C 6F 20 24 0A 3C 3C 3C 3C 3C 3C 3C 20 0A 43 6F ; lo $.<<<<<<< .Co
0020h: 6E 66 6C 69 63 74 24 4D 69 6E 65 24 0A 3D 3D 3D ; nflict$Mine$.===
0030h: 3D 3D 3D 3D 0A 2A 2A 2A 2A 2A 2A 2A 2A 54 68 65 ; ====.********The
0040h: 69 72 24 0A 3E 3E 3E 3E 3E 3E 3E                ; ir$.>>>>>>>

        org 100h
        mov ah, 9
        mov dx, str1
        int 21H
        mov dx, str2
        int 21H
        ret

str1    db 'Hello $', 10
        db '<<<<<<< ', 10
str2    db 'Conflict$'
        db 'Mine$', 10
        db '=======', 10
        db '********Their$', 10
        db '>>>>>>>'     

সুন্দর! আপনি কি সংসদীয় সংস্করণ (গুলি) যুক্ত করতে সক্ষম হবেন, আমি নির্দেশাবলীটি পড়তে পেরে আনন্দ করব)। হ্যাঁ, জায়গার অনুমতি দেওয়া হয়েছে বলে মনে হচ্ছে (চশমাগুলি আমি যেমনটি চাই তেমন পরিষ্কার নয়)
এর্নো

2

রেটিনা , 57 বাইট


Hello 
$
<<<<<<<
Mine
=======
Theirs
>>>>>>>
<+
Conflict

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

"খনি" সংস্করণ ব্যবহার করে দেখুন

"তাদের" সংস্করণ ব্যবহার করে দেখুন

দ্বন্দ্ব কর্মসূচির ব্যাখ্যা

যেমন প্রায়শই রেটিনার ক্ষেত্রে হয়, এই প্রোগ্রামটিতে অনেকগুলি প্রতিস্থাপনের স্তর রয়েছে।


Hello 

এর সাথে খালি / অস্তিত্বহীন ইনপুটটি প্রতিস্থাপন করুন Hello 

$
<<<<<<<

এর সাথে কাজের স্ট্রিংয়ের শেষটি প্রতিস্থাপন করুন <<<<<<<

Mine
=======

Mineসঙ্গে প্রতিস্থাপন =======। যেহেতু Mineকাজের স্ট্রিংয়ের কোথাও উপস্থিত হয় না, এটি কিছুই করে না।

Theirs
>>>>>>>

Theirsসঙ্গে প্রতিস্থাপন >>>>>>>। একই চুক্তি হিসাবে Mine; Theirsউপস্থিত হয় না, সুতরাং প্রতিস্থাপন কিছুই করে না।

<+
Conflict

একটি ক্রম প্রতিস্থাপন <সঙ্গে Conflict। আমরা <<<<<<<প্রথম প্রতিস্থাপনের স্ট্রিংয়ের শেষে যুক্ত করেছি , তাই কাজের স্ট্রিং হয়ে যায়Hello Conflict যা প্রোগ্রামের শেষে স্পষ্টতই আউটপুট হয়।

খনি / তাদের প্রোগ্রামের ব্যাখ্যা

দ্বন্দ্বের সমাধান হয়ে গেলে, কোডটি এর মতো দেখাবে:


Hello 
$
Mine
<+
Conflict

Hello 

স্ট্রিং দিয়ে শুরু করে আগের মতোই Hello

$
Mine

এখন পরিবর্তে সংযোজন <<<<<<<করতেHello  , আমরা সংযোজন করি Mine

<+
Conflict

এর পরে, আমরা একটি ক্রম প্রতিস্থাপন < সঙ্গেConflict । কিন্তু নেই< স্ট্রিংয়ে গুলি , তাই কিছুই হয় না।

কাজের স্ট্রিং, Hello Mineস্পষ্টভাবে আউটপুট হয়। "তাদের" প্রোগ্রামটি একইভাবে কাজ করে।


1

OIL , 88 80 77 বাইট

4
2
Hello 
10
Conflict
16
16
8
4
11
3
<<<<<<<
Mine
=======
Theirs
>>>>>>>
4
4

4 2লাইন 2 ( Hello) মুদ্রণ করছে , 10পরীক্ষা করছে লাইন 0 ( 4) লাইন 16 এর সাথে অভিন্ন কিনা ( 4সংঘাতের সময় উপস্থিত থাকে এমন একটি ) এবং ফলাফলের উপর নির্ভর করে লাইন 16 বা লাইন 8-এ লাফ দেয়। এটি বিদ্যমান থাকলে 4 4লাইন 4 ( Conflict) মুদ্রণ করে । যদি তা না 4 11হয় তবে মুদ্রিত হয় Mineবা Theirsযা একীভূত হয়েছিল তার উপর নির্ভর করে 3প্রস্থান করে।


1

জাভা 145 বাইট

()->{String s = "Hello ";/*
<<<<<<<
*/s+="Mine";/*
=======
*/s+="Theirs";/*
>>>>>>>
*/if(s.length()>15)s="Hello Conflict";System.out.println(s);}

জাভাতে কোনও মাল্টলাইন স্ট্রিং নেই তাই কিছু মন্তব্য কৌশল করার দরকার পড়েছিল


*তৃতীয় লাইনে অতিরিক্ত হওয়ার কারণ কী ? আমি মনে করি যে ঠিক */s+="Mine";/*কাজ করবে।
CAD97

কমেন্ট লাইনগুলি অভিন্ন লাইনগুলি এড়াতে পৃথক রেখা ছিল (তারপরে পোস্টের পূর্বে
প্রতিক্রিয়াশীল

1

বাশ, 76 বাইট

Golfed

sed 's/^/Hello /;s/<\+/Conflict/;q'<<E
<<<<<<<
Mine
=======
Theirs
>>>>>>>
E

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

ব্যবহারসমূহ এখানে ডক , এর উৎস পাঠ্য ভোজন sed

SED "হ্যালো" দিয়ে পড়া প্রথম লাইনটি পুনরায় সংশোধন করবে, <<<<<<<"সংঘাত" দ্বারা স্ট্রিংটি প্রতিস্থাপন করবে এবং তারপরে প্রস্থান করবে (q ) ।

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


1

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

Golfed

alert("Hello "+((T=`\
<<<<<<<
Mine
=======
Theirs
>>>>>>>
`)[1]>"<"?T:"Conflict"))

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

alert("Hello "+((T=`\
<<<<<<<
Mine
=======
Theirs
>>>>>>>
`)[1]>"<"?T:"Conflict"))

alert("Hello "+((T=`\
Mine
`)[1]>"<"?T:"Conflict"))

alert("Hello "+((T=`\
Theirs
`)[1]>"<"?T:"Conflict"))


1

জাভা 8, 108 বাইট

এটি একটি লাম্বদা খালি ইনপুট গ্রহণ করে এবং কিছুই ফিরিয়ে দেয় না।

n->System.out.print("Hello "+",Mine,Theirs,Conflict".split(",")[/*
<<<<<<<
*/1/*
=======
*/+2/*
>>>>>>>
*/])

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

MasterX244 এর দ্বারা অনুপ্রাণিত কাছে জাভা সমাধান


1

সি (জিসিসি), ১১০ বাইট

ফাংশন জমা।

f(){char*s[]={0,"Mine","Theirs","Conflict"};printf("Hello %s",s[/*
<<<<<<<
*/1/*
=======
*/+2/*
>>>>>>>
*/]);}

MasterX244 এর দ্বারা অনুপ্রাণিত কাছে জাভা সমাধান

TIOs


সুন্দর! বহু-লাইনের মন্তব্যগুলির স্মার্ট ব্যবহার।
এর্নো

1

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

প্রতিটি ডিলিমিটারের 6 টি সহ সংস্করণটি ইচ্ছাকৃতভাবে কাজ করে তা উপলব্ধি করার পরে আপডেট হয়েছে তবে প্রকৃত 7 টি ডিলিমিটারের সাথে এটি হয় না ... ওফ ...

say"Hello ",q
<<<<<<<
!Mine!;0
=======
!Theirs!;0
>>>>>>>
&&Conflict

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

অনলাইন আমার চেষ্টা করুন!

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

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