এই স্ট্রিং স্ট্রিং হিসাবে কাজ করবে?


92

এমন একটি প্রোগ্রাম লিখুন যা একক লাইনের স্ট্রিং নেয় যা আপনি ধরে নিতে পারেন কেবল অক্ষর থাকবে /\_‾। (এটি ফরোয়ার্ড এবং পশ্চাদপদ স্ল্যাশ, আন্ডারলাইন এবং ওভারলাইন~ over ওভারলাইন সুবিধাজনক ASCII না হওয়ায় আপনার যদি প্রয়োজন হয় তবে আপনি ওভারলাইনের জায়গায় ব্যবহার করতে পারেন ))

উদাহরণস্বরূপ, একটি সম্ভাব্য ইনপুট হ'ল:

__/‾‾\/\_/‾

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

উপরের উদাহরণের জন্য আউটপুটটি সত্য হবে কারণ প্রান্তগুলি সংযুক্ত রয়েছে:

উদাহরণ পাথ

সংযোগগুলি সম্পর্কে পরিষ্কার হতে:

  • / এর নীচে বাম এবং উপরের ডানদিকে সংযুক্ত করে
  • \ তার উপরের বাম এবং নীচে ডানদিকে সংযোগ করে
  • _ এর নীচে বাম এবং নীচে ডানদিকে সংযোগ করে
  • (বা ~) এর উপরের বাম এবং উপরের ডানদিকে সংযুক্ত করে

এছাড়াও:

  • স্ট্রিংয়ের প্রান্তগুলি শীর্ষ বা নীচে শুরু হয়েছিল কিনা তা বিবেচ্য নয়, কেবল স্ট্রিংয়ের পুরো দৈর্ঘ্যের মাধ্যমে তারা অনুভূমিকভাবে সংযোগ স্থাপন করে।

  • আপনি ধরে নিতে পারেন ইনপুট স্ট্রিংটি খালি নয় এবং অবশ্যই কেবল একটি লাইন।

এখানে সংযুক্ত থাকলে 1 (সত্যবাদী) এর পরে আরও কয়েকটি উদাহরণ রয়েছে বা যদি 0 (মিথ্যা) না থাকে তবে:

__/‾‾\/\_/‾
1

_
1

\
1

/
1

‾
1

___
1

\/
1

/\/
1

/\/\
1

‾‾‾
1

\\
0

‾‾
1

_‾
0

‾_
0

\_____/
1

\/\\/\\___
0

\/\__/‾‾\
1

______/\_____
1

‾‾‾‾‾‾\\_____
0

‾‾‾‾‾‾\______
1

_____/‾‾‾‾‾
1

\___/‾‾‾\___/‾‾‾
1

\_/_\_
0

\_/\_
1

/\/\/\/\/\/\/\/\/\/\/\/
1

____________________
1

‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
1

‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾/
0

‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾\
1

/\‾/\‾___/\_\/__\/\‾‾
0

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


37
পিপিসিজিতে আপনাকে স্বাগতম! ভাল প্রথম চ্যালেঞ্জ।
অ্যাডমবর্কবার্ক

1
আপনার চ্যালেঞ্জে বর্ণিত অক্ষরগুলি কেবলমাত্র স্ট্রিংয়ের মধ্যে উপস্থিত হবে?
অজ্ঞতার মূর্ত প্রতীক

@EmbodimentofIgnorance হ্যাঁ, শুধুমাত্র 4.
বিচ্ছিন্ন গেম

30
অপেক্ষা করুন আপনি এ থেকে কোনও ভাষা তৈরি করতে পারেন
ডেলিথ

2
@ আর্নল্ড না, আমি সংযুক্ত সংস্থার জন্য সত্যই সত্যবাদী এবং সংযুক্ত সংস্থার জন্য মিথ্যা বলে মনে করি। (যদি না এই ধরণের প্রশ্নের জন্য কোনও অদলবদলকে অনুমতি দেওয়া না হয়?)
ডিস্রিপ্ট গেমস

উত্তর:


34

জেলি , 9 বাইট

-1 বাইট @ ইরিকথ আউটগল্ফারকে ধন্যবাদ

~পরিবর্তে প্রত্যাশা । ফেরত পাঠায় বা ।01

O*Ɲ:⁽8ƇḂẠ

এটি অনলাইন চেষ্টা করুন! , সত্যবাদী পরীক্ষার স্যুট , মিথ্যা পরীক্ষা স্যুট su

এই সূত্রটি ব্যবহার করে (তবে নীচে 11-বাইট সংস্করণের অনুরূপ):

n=xy15145

বিজোড় হলে রূপান্তরটি বৈধ , বা সমান হলে অবৈধ ।nn

মন্তব্য

O*Ɲ:⁽8ƇḂẠ     - main link, taking a string          e.g. "\_/"
O             - get ASCII codes                     -->  [92, 95, 47]
 *Ɲ           - exponentiation on all pairs         -->  [92**95, 95**47]
   :⁽8Ƈ       - integer division by 15145           -->  [23964828…8421, 59257069…0485]
       Ḃ      - least significant bit (i.e. parity) -->  [1, 1]
        Ạ     - all values equal to 1?              -->  1

জেলি ,  14 12  11 বাইট

ইনপুট স্ট্রিংয়ের অক্ষরটিকে সমর্থন করে (এবং প্রত্যাশা করে) । ফেরত পাঠায় বা ।01

O*Ɲ%276%7ỊẠ

এটি অনলাইন চেষ্টা করুন! , সত্যবাদী পরীক্ষার স্যুট , মিথ্যা পরীক্ষা স্যুট su

কিভাবে?

এর ASCII কোড দুটি পরপর অক্ষর দেওয়া এবং , আমরা একটি ফাংশন পরীক্ষা যে কিনা তারা একটি বৈধ রূপান্তরটি গঠন করতে চান।xy

আমাদের একটি চলাচলবিহীন অপারেশন প্রয়োজন, কারণ চরিত্রগুলি বিপরীত হলে ফলাফল পরিবর্তন হতে পারে। উদাহরণস্বরূপ, _/বৈধ তবে /_তা নয়।

ক্ষয়ক্ষতি ব্যবহার করে একটি সম্ভাব্য সূত্র 1 :

n=(xymod276)mod7

, বা অবৈধ হলে এই রূপান্তরটি বৈধ ।n1n>1

 chars |    x |    y | (x**y)%276 | %7 | valid
-------+------+------+------------+----+-------
   __  |   95 |   95 |      71    |  1 |  yes
   _/  |   95 |   47 |     119    |  0 |  yes
   _‾  |   95 | 8254 |     265    |  6 |   no
   _\  |   95 |   92 |     265    |  6 |   no
   /_  |   47 |   95 |      47    |  5 |   no
   //  |   47 |   47 |      47    |  5 |   no
   /‾  |   47 | 8254 |       1    |  1 |  yes
   /\  |   47 |   92 |       1    |  1 |  yes
   ‾_  | 8254 |   95 |     136    |  3 |   no
   ‾/  | 8254 |   47 |      88    |  4 |   no
   ‾‾  | 8254 | 8254 |     196    |  0 |  yes
   ‾\  | 8254 |   92 |     196    |  0 |  yes
   \_  |   92 |   95 |      92    |  1 |  yes
   \/  |   92 |   47 |      92    |  1 |  yes
   \‾  |   92 | 8254 |     184    |  2 |   no
   \\  |   92 |   92 |     184    |  2 |   no

1. নোড.জেএস-এ (বিগআইটস ব্যবহার করে) একটি নিষ্ঠুর-শক্তি অনুসন্ধানের সাথে পাওয়া গেছে

মন্তব্য

O*Ɲ%276%7ỊẠ   - main link, taking a string          e.g. "\_/"
O             - get ASCII codes                     -->  [92, 95, 47]
 *Ɲ           - exponentiation on all pairs         -->  [92**95, 95**47]
   %276       - modulo 276                          -->  [92, 119]
       %7     - modulo 7                            -->  [1, 0]
         Ị    - ≤1?                                 -->  [1, 1]
          Ạ   - all values equal to 1?              -->  1

2
সারণী পদ্ধতিটি অনেকগুলি সমস্যা জিতেছে
qwr

9 বাইট : ⁽"Oহিসাবে একই 9580
এরিক আউটগলফার

টুইটসমূহ :) এই টিপটিতে প্রদত্ত স্ক্রিপ্টটি এই ফর্ম্যাটটি সমর্থন করার জন্য আপডেট করা উচিত (যখন এটি প্রাসঙ্গিক হয়)।
আর্নল্ড

1
বাস্তবিক, জোনাথন অ্যালান করেছেন @Arnauld এই
এরিক আউটগলফার

16

রুবি -এন , 30 বাইট

p !/[_\\][\\‾]|[\/‾][_\/]/

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

রেজেক্স চরিত্রের ক্লাস ব্যবহার করে দুটি স্ট্রিং-ব্রেকিং সিকোয়েন্সকে হ্রাস করে।


5
~পরিবর্তে ব্যবহার করে আপনি 4 বাইট সংরক্ষণ করতে পারেন । আমি নিশ্চিত নই যে এটি এই চ্যালেঞ্জের জন্য গুরুত্বপূর্ণ, কারণ চরিত্রের সংখ্যা একই।
iamnotmaynard 16

/বর্গাকার বন্ধনীর মধ্যে থাকা সত্ত্বেও আপনার কী এড়াতে হবে ?
সলোমন উকো

14

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

নিষ্পাপ উপায়।

s=>!/\/\/|\\\\|_~|~_|~\/|_\\|\/_|\\~/.test(s)

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


1
সুতরাং এটি সমস্ত অবৈধ জুড়ি পরীক্ষা করছে, তারা স্ট্রিংয়ে বিদ্যমান নেই তা নিশ্চিত করে? স্মার্ট।
গেমস

পছন্দ করুন (। ছাড়া যে আমি তাদের এর 2 ভুলে গেছি এখন সংশোধন।)
Arnauld

35 বাইট: s=>!/[~\/][\/_]|[_\\][\\~]/.test(s)। এটা তোলে যদি পরীক্ষা \/বা ~শেষ \/বা _। এবং তারপর, এটা যদি পরীক্ষা \\বা _শেষ \\বা ~
ইসমাইল মিগুয়েল

@ ইসমাইল মিগুয়েল এটির একটি পৃথক উত্তর হিসাবে পোস্ট করা হতে পারে তবে আমি এটিকে রেফারেন্সের জন্য অপরিবর্তিত রেখেই যেতে পারি কারণ এটি সমস্যার সমাধান করার সবচেয়ে সহজ ('কমপক্ষে জটিল' হিসাবে) নিয়মিত অভিব্যক্তি দেখায়।
আর্নৌল্ড

আপনি এটি বিকল্প হিসাবে পোস্ট করতে পারেন, তবে সঠিক উত্তর নয়।
ইসমাইল মিগুয়েল

10

আর , 89 87 81 78 বাইট

-২ বাইটস @ জিউসেপ্পকে ধন্যবাদ

-6 বাইট ধন্যবাদ @ নিক কেনেডিকে ধন্যবাদ

-3 বাইট প্রতিস্থাপন 1:length(y)সঙ্গে seq(a=y), যেখানে a-এর সংক্ষিপ্ত রূপalong.with

y=utf8ToInt(scan(,''));all(!diff(cumprod(c(1,y>93)*2-1)[seq(a=y)]*(y%%2*2-1)))

ব্যবহার \ / _ ~। এটি সম্ভবত রেজেক্স ভিত্তিক সমাধানের মতো সংক্ষিপ্ত নয়, তবে আমি অন্য সবার সাথে কিছুটা আলাদা করার কল্পিত।

utf8ToInt('\\/_~')
# [1]  92  47  95 126

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

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


2
এটি বেশ চালাক এবং কাজ করার এক অনন্য উপায়! আমি বিশ্বাস করি যে আপনি 2 বাইট সংরক্ষণ করতে ()চারপাশে সরাতে পারবেন y%%2, কারণ বিশেষ অপারেটরগুলির %(any)%চেয়ে বরং উচ্চতর নজির রয়েছে।
জিউসেপ

3
83 বাইটের জন্য টিও সম্পর্কে কীভাবে ? যৌক্তিক জবরদস্তিটি যৌক্তিকভাবে গ্রহণ করে!
নিক কেনেডি

9

পাইথন , 46 বাইট

f=lambda s:s==''or s[:2]in"__/~~\/\_"*f(s[1:])

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

নিশ্চিত করা হয় যে প্রতিটি সংলগ্ন অক্ষর জোড়গুলি ক্রমাগত উপস্থিত হয় তা পরীক্ষা করে সংযোগ করে __/~~\/\_। এই স্ট্রিং হিসেবে দেখা যাবে De_Bruijn_sequence উপর উচ্চ / নিম্ন পজিশনের triples।23=8

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



6

চিপ -z , 17 বাইট

FZ!C~aS
A}^]--^~t

এটি অনলাইন চেষ্টা করুন! ( -vআউটপুট বুঝতে এটি আরও সহজ করার জন্য টিআইও অন্তর্ভুক্ত ))

_/~\সেটটি আশা করে । হয় \x00(মিথ্যা) বা \x01(সত্যবাদী) প্রত্যাবর্তন করে।

আমার উত্তরের কৌশলটি নিম্নলিখিত তথ্যগুলি ব্যবহার করে:

Symbol  Binary
   _    0101 1111
   /    0010 1111
   ~    0111 1110
   \    0101 1100
          ^   ^ ^
        HGFE DCBA

A: যখন এই বিট অবস্থানটি 1প্রতীকটির বাম দিকটি কম থাকে এবং 0যখন এটি উচ্চ থাকে
F: তখন এই বিট অবস্থানটি ঘটে 0যখন প্রতীকটির ডান দিকটি কম থাকে এবং 1যখন এটি উচ্চ থাকে
C: এই বিট অবস্থানটি ঘটে সবসময়1

এই তথ্যটি ব্যবহার করে, আমার কেবলমাত্র Fপ্রতিটি চরিত্রের not Aপরবর্তীটির সাথে মিল রয়েছে তা যাচাই করা দরকার । xorএটি সম্পাদন করার জন্য একটি গেট একটি সুবিধাজনক উপায়।

নিম্নলিখিত কোডটি এটি করে তবে প্রতিটি জোড়ার জন্য আউটপুট দেয় ( 1শুরুতে একটি অতিরিক্ত ) (7 বাইট):

FZ!
A}a

আমরা প্রথম ব্যর্থতায় থামতে চাই এবং স্ট্রিংয়ের মধ্যে আমরা থামলাম কিনা, বা নাল টার্মিনেটরে (আমরা -zআমাদের নাল টার্মিনেটর দেওয়ার জন্য যুক্ত করব) তাও মুদ্রণ করতে চাই । আমরা not Cকোথায় থামলাম তা বোঝাতে ব্যবহার করতে পারি এবং এটি আমাদের এই প্রোগ্রামটি দেয় (১৩ বাইট):

FZ!C~a
A}^]~t

তবে আমাদের এখনও "নেতৃস্থানীয় শূন্যগুলি" রয়েছে (উদাঃ \_/\দেয় 00 00 00 00 01) তাই এটি শীর্ষে দেওয়া উত্তরে রূপান্তরিত হয়।


ভাল, আমি এই প্যাটার্নটি লক্ষ্য করতাম তবে এটি ব্যবহারের জন্য ভাল ভাষা জানতাম না।
হিস্টোক্র্যাট

6

05 এ বি 1 , 29 14 9 বাইট

ÇümŽb‘÷ÈP

@ আর্নল্ডের জেলি উত্তরটির বন্দর, সুতরাং তাকেও উজ্জীবিত করতে ভুলবেন না!

সাথে ইনপুট

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন


আসল 29 বাইট উত্তর:

„_~SD2×s:Çü-т+•6_üê{↕ƵΔвåO_

~পরিবর্তে ইনপুট

এটা আমার মাথায় ছোট লাগছিল .. এখান থেকে এটিকে গল্ফ দেওয়ার চেষ্টা করবে।

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা: "

_~S                          # Push the characters ["_","~"]
    D2×                       # Duplicate it, and increase each to size 2: ["__","~~"]
       s:                     # Swap and replace all "__" with "_" and all "~~" with "~"
                              #  in the (implicit) input-string
         Ç                    # Convert the remaining characters to unicode values
          ü-                  # Calculate the difference between each pair
            т+                # Add 100 to each
              6_üê{↕       # Push compressed integer 1781179816800959
                       ƵΔ     # Push compressed integer 180
                         в    # Convert the larger integer to Base-180 as list: 
                              #  [52,66,69,100,103,131,179]
                          å   # Check for each if it's in the difference-list
                              # (1 if present; 0 if not)
                           O  # Sum the truthy values
                            _ # Check if this sum is exactly 0 (1 if 0; 0 otherwise)
                              # (and output this result implicitly)

আমার এই 05AB1E ডগা দেখুন (বিভাগে ইপিএসে দক্ষিন কোরিয়ায় কিভাবে পূর্ণসংখ্যার comrpess কিভাবে? এবং কিভাবে পূর্ণসংখ্যা তালিকা কম্প্রেস কিভাবে? ) কেন বুঝতে •6_üê{↕হয় 1781179816800959, ƵΔহয় 180এবং •6_üê{↕ƵΔвহয় [52,66,69,100,103,131,179]

অতিরিক্ত ব্যাখ্যা:

আমাদের যাচাই করতে 16 টি ( ) সম্ভাব্য সংখ্যক অক্ষর রয়েছে। আমরা যদি প্রতিটি চরিত্রকে এর ইউনিকোড মান রূপান্তর করি এবং পার্থক্য গণনা করি, আমরা এই পার্থক্যগুলি পেয়ে যাব । যেহেতু 05AB1E-এ সংকুচিত পূর্ণসংখ্যা তালিকাগুলির কেবল ইতিবাচক পূর্ণসংখ্যা থাকতে হবে, আমি প্রতিটিতে 100 যোগ করি । অবৈধ জোড়া এবং তাদের সংশ্লিষ্ট মান তারপর আছেন: ; , , , , , , , যার কারণে আমি এই মানগুলি রয়েছে আমার কোডে সংকুচিত পূর্ণসংখ্যা তালিকা আছে। যেহেতু এবং ঠিক পছন্দ হবে এবং এর ফলাফল হবে (বা আমি 100 যোগ করার পরে), আমি প্রথমে এবং এর সাথে সংলগ্ন যে কোনও অনুলিপিগুলি সরিয়ে ফেলি24["/_", 52]["\~", 66]["_~", 69]["//", 100]["\\", 100]["_\", 103]["~_", 131]["~/", 179]
__~~//\\0100~_ জোড়-পার্থক্য গণনা এবং যাচাই করার আগে ইনপুট-স্ট্রিংয়ে।



@ আরনাউল্ড ওহ সুন্দর!
কেভিন ক্রুইজসেন

এই ব্যাখ্যা একটি স্ট্রিং হিসাবে কাজ করবে।
কানেক্টইউরচার্জার

নিবন্ধন করুন
কেভিন ক্রুইজসেন

6

পাইথন 3 , 79 70 63 বাইট

আর্নল্ড এবং জো কিংকে 16 বাইট সংরক্ষণ করা হয়েছে, ধন্যবাদ!

p=lambda s:len(s)<2or((ord(s[-2])%13>5)^ord(s[-1])%2)&p(s[:-1])

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

পাইথন 3 , 67 60 এর পরিবর্তে 60 এর সাথে 60 বাইট

p=lambda s:len(s)<2or(~(ord(s[-2])//7^ord(s[-1]))&p(s[:-1]))

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


2
প্রথম উত্তর! কিছু সাদা জায়গা সরিয়ে আপনি 6 বাইট সংরক্ষণ করতে পারেন । (আপনি একটি টিআইও লিঙ্ক যোগ করতে চাইতে পারেন, বিটিডাব্লু।)
আর্নল্ড

1
ধন্যবাদ! আমি এই সমস্ত কৌশল শিখতে উপভোগ করছি
জোয়াকিম ওয়ার্থিংটন

4

পাইথন 3, 126 বাইট

lambda s,d={'‾':'\‾','_':'/_','/':'\‾','\\':'/_'}:len(s)<2or all([s[i+1] in d[s[i]]for i in range(len(s)-1)if s[i]in d])

4

হাস্কেল , 70 বাইট

এই রূপটি ~ওভারলাইনগুলির পরিবর্তে ব্যবহার করে। এটি আটটি বৈধ জোড়া লাগে এবং স্ট্রিংটিতে কেবল সেগুলি রয়েছে কিনা তা যাচাই করে:

f(a:b:x)=[a,b]`elem`words"__ _/ /~ ~~ ~\\ \\_ \\/ /\\"&&f(b:x)
f _=1>0

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

Ungolfed:

validate :: String -> Bool
validate xs = all valid $ zip xs (tail xs)
  where
    valid (a,b) = [a,b] `elem` starts
    starts      = words "__ _/ /~ ~~ ~\\ \\_ \\/ /\\"

4

পার্ল 6 , 32 বাইট

{!/< \\\ \~ ~/ // _~ ~_ _\ /_>/}

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

একটি রেজেক্স সমাধান যা স্ট্রিংয়ে কোনও অবৈধ অনুক্রম নেই তা কেবল পরীক্ষা করে।

ব্যাখ্যা:

{                              }   # Anonymous code block
  /<                         >/    # Find the longest sequence from
     \\\                           # \\
         \~                        # \‾
            ~/                     # ‾/
               //                  # //
                  _~               # _‾
                     ~_            # ‾_
                        _\         # _\
                           /_      # /_
 !                                 # And logically negate the match

4

আর , 43 অক্ষর, 47 বাইট

অন্যান্য উত্তরগুলি ব্যবহার করে এটি একই রেজেক্স, তবে আর এর জন্য মানিয়ে নেওয়া

!grepl('[/‾][/_]|[\\\\_][\\\\‾]',scan(,''))

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

এবং বাধ্যতামূলক xkcd


1
আপনি 43 বাইট, 43 অক্ষরে উঠার ~জায়গায় ব্যবহার করতে পারেন
জিউসেপ

2
সত্য, তবে ওভারবারের সাথে এটি আরও মজাদার। :)
সিটি হল

4

ফোর্থ (গফোর) , 100 98 বাইট

: x = swap '~ = + ;
: f 1 tuck ?do over i + >r i 1- c@ r> c@ dup 92 x swap dup 47 x <> + loop 0> ;

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

ব্যাখ্যা

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

চরটি /(47) বা ~(126) হলে শেষের অবস্থানটি বেশি । অন্যথায় এটি কম

চরটি \(92) বা ~(126) হলে স্টার্ট পজিশন বেশি । অন্যথায় এটি কম

কোড ব্যাখ্যা

\ x is basically just extracting some common logic out into a function to save a few bytes
\ it checks if the first number is equal to the second number
\ or the third number is equal to 126   
: x                \ start a new word definition
  = swap           \ check if the first two numbers are equal then swap with the third
  '~ =             \ checks if the third number is equal to 126
  +                \ adds results together (cheaper version of or)
;                  \ end the word definition

: f                \ start a new word definition
  1 tuck           \ set up parameters for a loop (and create a bool/counter)
  ?do              \ start counted loop from 1 to string-length -1, 
                   \ ?do will skip if loop start and end are the same
    over i +       \ copy the string address and add the loop index to get the char address
    >r i           \ place char address on return stack and place a copy back on the stack
    1- c@          \ subtract 1 to get previous char address and grab ascii from memory
    r> c@          \ move char address back from return stack, then grab from memory
    dup 92 x       \ get the "output" position of the prev character
    swap dup 47 x  \ get the input position of the current character
    <> +           \ check if they aren't equal and add the result to the counter
                   \ the counter won't change if they're equal
  loop             \ end the loop
  0>               \ check if counter is less than 1 (any of the "links" was not valid)
;                  \ end word definition

3

পাইথন 3 , 80 78 বাইট

আমি বাস্তবে অনেক অজগর কোড গল্ফ করি না তবে আমি ভেবেছিলাম যে আমি এটি ব্যবহার করে দেখতে পারি

  • -২ বাইট: উপলব্ধি করা হয়নি (কোনও ()) সকলের মতো নয় (নয়)) এবং এটি আর-স্ট্রিংয়ের মধ্যে স্থানান্তর করতে পারে
def f(x):*l,=map(r'_/\~'.find,x);return 1-any((i^j//2)%2for i,j in zip(l,l[1:]))

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

পাইথন 3.8 (প্রাক রিলিজ) , 71 বাইট

আমি নতুন :=এক্সপ্রেশন অ্যাসাইনমেন্টটি চেষ্টা করে দেখতে চেয়েছিলাম

lambda x:all((i^j//2)%2for i,j in zip(l:=[*map(r'\~_/'.find,x)],l[1:]))

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


3

জেলি ,  13 12  11 বাইট

O*Ɲ%⁽wḃ%5ỊẠ

একটি মোনাডিক লিঙ্ক অক্ষরের একটি তালিকা গ্রহণ করে, বিকল্পের ~জায়গায় ব্যবহার করে

এটি অনলাইন চেষ্টা করুন! অথবা একটি পরীক্ষা-স্যুট দেখুন (... যেখানে আমি 8 টি ভুয়াটি শেষে রাখার জন্য পুনরায় অর্ডার করেছি)

এই সূত্রটি হাতের মুঠোয় ঘোরাফেরা করে পাওয়া গেছে: পি (নীচে যেমন ছিল)

এটির জন্য আমিও 16 টি চরিত্রের অর্ডিনালগুলিকে এক্সপেনসিয়েশন হিসাবে বিবেচনা করেছি এবং একটি বৃহত মডুলোর সন্ধান করেছি যা তিন বাইটে মাপসই হবে একটি বাইট মডিউল (1,2,3,4,5,6,7,8) , 9,10,16,256) যে 16 টি বিভক্ত করেছে যে গ্রহণযোগ্য ফলাফলগুলির মধ্যে 1 বা 0 ("তুচ্ছ") ছিল যেহেতু আমি জানি যে <5আমার পূর্ববর্তী সমাধানের চেয়ে কম, যা সমস্ত গ্রহণযোগ্য ফলাফলের চেয়ে কম ছিল তার সন্ধান করছিল সমস্ত অগ্রহণযোগ্য।

O*Ɲ%⁽wḃ%5ỊẠ - Link: list of characters
O           - ordinals
  Ɲ         - for each pair of neighbours:
 *          -   exponentiate
    ⁽wḃ     - 30982
   %        - modulo (vectorises)
        5   - five
       %    - modulo (vectorises)
         Ị  - insignificant? (abs(x) <=1) (vectorises)
          Ạ - all truthy?

সম্ভাব্য প্রতিবেশী চরিত্র এবং তাদের অভ্যন্তরীণ মূল্যায়ন:

(Ɲ)         (O)            (*%⁽wḃ)        (%5)      (Ị)
pair   a,b=ordinals   c=exp(a,b)%30982   d=c%5   abs(d)<=1
__       95,  95         28471             1         1
_/       95,  47         29591             1         1
/~       47, 126         19335             0         1
/\       47,  92          9755             0         1
~~      126, 126         28000             0         1
~\      126,  92         26740             0         1
\_       92,  95          9220             0         1
\/       92,  47         13280             0         1
~_      126,  95          3024             4         0
~/      126,  47         12698             3         0
\~       92, 126         27084             4         0
\\       92,  92         17088             3         0
_~       95, 126         28169             4         0
_\       95,  92          4993             3         0
/_       47,  95         22767             2         0
//       47,  47          7857             2         0

পূর্ববর্তী @ 12:

O*Ɲ%⁽?K%⁴<8Ạ

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


পূর্ববর্তী @ 13:

O%7ḅ6$Ɲ%⁵%8ỊẠ

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


কিছু কারণে, আমি ভেবেছিলাম যে পরীক্ষার abs(x)<1চেয়ে বরং এটি করা হয়েছিল abs(x)≤1। এটি বেশ কয়েকটি আরও সুযোগ দেয়। :) (যদিও আমি এখন 11 বাইটে আটকে আছি, যদিও।)
আর্নল্ড

আমি দেখতে পাই যে এটি প্রায়শই কাজে আসে।
জোনাথন অ্যালান


3

এক্সেল, 150 বাইট

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"_\",),"_‾",),"‾_",),"‾/",),"/_",),"//",),"\‾",),"\\",)=A1

কোনও অবৈধ জুড়ি সরিয়ে দেয়, তারপরে trueযদি মূল স্ট্রিংয়ের ফলাফল হয় তবে ফিরে আসুন।


3

হাস্কেল, 42 বাইট

g=tail>>=zip
h=all(`elem`g"__/~~\\/\\_").g

এই সমাধানটি ব্যবহার করে ~, এবং কল করার ফাংশনটি হ'ল (যেমন h stringউত্তর দেয়)

সমাধানটি একটি ফাংশন জি ব্যবহার করে যা একটি তালিকা দেয়, তালিকায় সংলগ্ন মানগুলির সমস্ত টিপল দেয়।

তারপরে আমরা অনুমতিপ্রাপ্ত প্রতিবেশীদের তালিকা (ইন g"__/~~\\/\\_") এবং ইনপুট তালিকার সমস্ত প্রতিবেশী জুটির তালিকা তৈরি করতে আমরা জি ব্যবহার করি । তারপরে আমরা যাচাই করে দেখছি যে প্রতিবেশী প্রতিটি জুটিই অনুমোদিত অনুমতি।


3

সি (জিসিসি) , 41 36 বাইট

f(char*_){_=!_[1]||*_/32+*++_&f(_);}

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

-5 পিটার কর্ডেসের&1 একটি ধারণা থেকে শুরু করে এলোমেলো ; প্রথম বন্ধনী অপসারণ করতে অপারেটরগুলি (নজরে) পরিবর্তন করেছেন


ব্যবহার ~। প্রথম দুটি অক্ষরের বাইনারি উপস্থাপনার প্রথম এবং ষষ্ঠ বিট পরীক্ষা করে:

_ 1011111
\ 1011100
/  101111
~ 1111110
   ^    ^

এবং পুনরাবৃত্তভাবে স্ট্রিংটি অনুসরণ করে।

(*_ / 32) & 1কেবল উচ্চমাত্রায় শেষ হওয়া অক্ষরগুলির জন্যই সত্য, তবে *_ & 1কেবলমাত্র শুরু হওয়া অক্ষরের জন্যই এটি সত্য। (x&1) ^ (y&1) == (x+y)&1। XOR অ্যাড-ক্যারি বহনযোগ্য এবং ক্যারিটি সর্বনিম্ন বিটকে বিরক্ত করে না। 1থেকে আসে f(_), ফেরত মান যদি স্ট্রিং বাকি অংশুল ছিল।


5 দ্বারা ডান স্থানান্তর নীচে 6 তম বিট ছেড়ে leaves সুতরাং আপনি 0 এবং 5 বিট বা প্রথম এবং ষষ্ঠ বিট পরীক্ষা করছেন। (এই একটি সত্যিই চমৎকার কৌতুক, BTW, ভাল হয়। c&32অক্ষর যে উচ্চ শেষ জন্য সত্য, যখন c&1শুধুমাত্র অক্ষর যা কম শুরু জন্য সত্য।)
পিটার Cordes

আমি জানি যে নিয়মগুলির শুধুমাত্র কমপক্ষে একটি বাস্তবায়নের জন্য কাজ করা প্রয়োজন, তবে *_ ^ *++_এটি অপরিবর্তিত আচরণ যা উল্লেখ করা গুরুত্বপূর্ণ : ^এটি কোনও অনুক্রম বিন্দু নয়, সুতরাং তারা বিভিন্ন চরিত্র পাওয়ার গ্যারান্টি দিয়ে কোনও সিকোয়েন্সড-আগে সম্পর্ক নেই। অবশ্যই এটি একটি অনুপস্থিত return, সুতরাং এটি কেবল gcc -O0যেখানে ফাংশন বডিটি একটি বিবৃতি-প্রকাশের সাথে কাজ করে।
পিটার কর্ডেস

উফফ, আপনি বিট সম্পর্কে ঠিক বলেছেন। এটি ধরার জন্য ধন্যবাদ
এটিনিট

1
এরকম &1দুইবার অপ্রয়োজনীয়। (x^y)&1 == (x&1) ^ (y&1)। তবে সি অপারেটর প্রাধান্য দেওয়া &হয়েছে যেখানে ^গাণিতিক অপারেটরগুলি থেকে বেশি যেখানে অগ্রাধিকার রয়েছে (যেখানে + এবং - একই অগ্রাধিকার রয়েছে), আমাদের ()2 বাইট অপসারণ করতে &12 বাইট যুক্ত করতে হবে, কারণ (x&1) ^ yসমতুল্য নয়। তবে প্যারেন্স ব্যবহার করা অন্য কিছু সঞ্চয় করার সুযোগ উন্মুক্ত করে। ভাগ্যক্রমে এটির কোনও x86 মেশিন-কোড সংস্করণের সমস্যা নেই, যেখানে বিট ম্যানিপুলেশন খুব কমপ্যাক্ট ...
পিটার কর্ডস

আমার অ্যালগরিদমটি ব্যবহার করে আমার এক্স 86 মেশিন কোড উত্তরটি শেষ হয়েছে , 13 বাইট।
পিটার কর্ডেস

2

বাশ, 30 বাইট

grep -E '//|\\\\|_~|~_|~/|_\\|/_|\\~'

ইনপুটটি STDIN। প্রস্থান কোডটি বৈধ হলে 1, অবৈধ হলে 0।


1

SNOBOL4 (CSNOBOL4) , 58 বাইট

	INPUT '/_' | '_\' | '\\' | '//' | '~/' | '\~' @OUTPUT
END

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

মিথ্যাচারের জন্য সত্যবাদী এবং একটি ধনাত্মক পূর্ণসংখ্যার (স্ট্রিংয়ের প্রথম বিরতির অবস্থান নির্দেশ করে) কোনও ফলাফল আউটপুট করে না।


1

কাঠকয়লা , 32 18 বাইট

⌊⭆θ∨¬κ⁼№_/ι№\_§θ⊖κ

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা:

  θ                 Input string
 ⭆                  Map over characters and convert to string
     κ              Current index
    ¬               Logical Not (i.e. is zero)
   ∨                Logical Or
          ι         Current character
       №            Count (i.e. contained in)
        _/          Literal _/ (i.e. begins at bottom)
      ⁼             Equals
               θ    Input string
              §     Indexed by
                 κ  Current index
                ⊖   Decremented (i.e. previous character)
           №        Count (i.e. contained in)
            \_      Literal \_ (i.e. ended at bottom)
⌊                   Minimum (i.e. if all true)
                    Implicitly print

1

x86 মেশিন কোড, 13 বাইট।

(বা একক অক্ষরযুক্ত স্ট্রিং যা তুচ্ছভাবে স্ট্র্যান্ডিং পরিচালনা না করে 11 বাইট রয়েছে))

@ অ্যাটিনিটের সি উত্তর থেকে বিট-অবস্থান চেক ব্যবহার করুন

একই মেশিন কোড 16, 32 এবং 64-বিট মোডে কাজ করে। উত্সটি 64-বিট মোডের জন্য NASM।

nasm -felf64 -l/dev/stdout  listing
    17   addr                  global string_connected
    18           code          string_connected:
    19           bytes         ;;; input: char *RSI, transitions to check=RCX
    20                         ;;; output: AL=non-zero => connected.  AL=zero disconnected
    21                         .loop:                      ; do {
    22 00000000 AC                 lodsb                   ;   al = *p++
    23 00000001 E309               jrcxz  .early_exit        ; transitions=0 special case.  Checking before the loop would require extra code to set AL.
    24 00000003 C0E805             shr    al, 5
    25 00000006 3206               xor    al, [rsi]          ; compare with next char
    26 00000008 2401               and    al, 1
    27 0000000A E0F4               loopne .loop            ; }while(--rcx && al&1);
    28                         .early_exit:
    29 0000000C C3                 ret

unsigned char string_connected(int dummy_rdi, const char *s, int dummy_rdx, size_t transitions);X86-64 সিস্টেম ভি কলিং কনভেনশন হিসাবে সি থেকে কলযোগ্য । না boolকারণ ট্রানজিশন = 0 ক্ষেত্রে একটি ASCII কোড, 1 না ফেরৎ।

RCX = len = strlen(s) - 1। যেমন সুস্পষ্ট দৈর্ঘ্যের স্ট্রিংটি পরীক্ষা করতে অক্ষর-সীমার সংখ্যা = রূপান্তর।

এর জন্য transitions > 0, 0 (অমিল) বা 1 (সংযুক্ত) প্রদান করে এবং সেই অনুযায়ী জেডএফ সেটটি ছেড়ে দেয়। কারণ transitions == 0, স্ট্রিংয়ের একক বাইট প্রদান করে (যা শূন্য নয় এবং এইভাবে সত্যও হয়)। যদি সেই বিশেষ ক্ষেত্রে না হয় তবে আমরা প্রারম্ভিক-প্রস্থান JRCXZ ছাড়তে পারি drop এটি লুপের ভিতরে কেবল কারণ এখানে আ’লীগ শূন্য নয়।


বিট-পজিশনের যুক্তি এমন পর্যবেক্ষণের উপর ভিত্তি করে তৈরি করা হয়েছে যে ASCII কোডের বিট 0 আপনাকে প্রারম্ভিক উচ্চতা এবং বিট 5 আপনাকে শেষের উচ্চতা বলে।

;;;  _ 1011111
;;;  \ 1011100
;;;  /  101111
;;;  ~ 1111110
;;;     ^    ^

    ; end condition (c>>5) & 1 =>  0 = low
    ; start cond: c&1 => 0 = high
    ; (prev>>5)&1 == curr&1  means we have a discontinuity
    ; ((prev>>5) ^ curr) & 1 == 0  means we have a discontinuity

পরীক্ষার জোতা (অ্যাটিনিটের টিআইও লিঙ্ক থেকে পরিবর্তিত, সেই সি রেফারেন্স ফাংশনে সি সিকোয়েন্স-পয়েন্ট ইউবি থেকে সাবধান থাকুন)। এটি অনলাইন চেষ্টা করুন! । এই ফাংশনটি 30 টি ক্ষেত্রেই সঠিক। (একক চরিত্রের মামলাগুলি সহ যেখানে রিটার্নের মান মেলে না: এই ক্ষেত্রে উভয়ই বিভিন্ন অ-শূন্য মানের সাথে সত্যবাদী))


1

এক্সেল, 79 বাইট

A1ইনপুট হিসাবে সেল

=1---SUMPRODUCT(--ISNUMBER(FIND({"//","/_","\~","\\","~/","~_","_\","_~"},A1)))


0

সি ++, 132 110 বাইট

-22 বাইটস কেবলমাত্র ASCII- এর জন্য ধন্যবাদ

int f(char*s){int t[128];t[95]=0;t[47]=1;t[92]=2;t[126]=3;for(;*++s;)if(t[s[-1]]%2^t[*s]/2)return 0;return 1;}

শুরু এবং শেষটি নীচে বা নীচে রয়েছে কিনা তা জানতে বিটমাস্ক ব্যবহার করুন


হুম। সি সংস্করণটি গল্ফায়ার হিসাবে চিত্রিত করা হবে না: পি
এএসসিআইআই-কেবল




0

Regex, 34 বাইট

ভাষা হিসাবে রেজেক্স ব্যবহার করার নিয়ম আমি খুঁজে পাইনি। আমার যদি এটি সামঞ্জস্য করতে হয় তবে দয়া করে আমাকে জানান।

^(‾+|(‾*\\)?(_*\/‾*\\)*_*(\/‾*)?)$

এটি এখানে চেষ্টা করুন: https://regex101.com/r/s9kyPm/1/tests


2
এটি 34 বাইট, 24 না, তাই না?
সারা জে

ওয়েল, সত্যিই 42 বাইট, কিন্তু আপনি পরিবর্তন করতে পারেন থেকে~
জো রাজা

0

এপিএল + উইন, 58 বাইট

মি ← 2 2⊤ '_ / \ ~' ⍳s ←, ⎕⋄ (1 + ⍴s) = + / ((↑ এম [0;]), এম [1;]) = মি [0;], ¯ 1 ↑ মি [1;]

উপরের অক্ষরের জন্য স্ট্রিং, সূচক উত্স 0 এবং ইন-ইনপুট জন্য প্রম্পট দেয়

এটি অনলাইন চেষ্টা করুন! সৌজন্যে ডায়ালগ ক্লাসিক

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