নম্বর চেইনিং প্রেডিকেট


27

সমস্যা:

আপনার টাস্কটি সংখ্যার অনুক্রমে স্থির করে তা নির্ধারণ করা হয়, প্রতিটি সংখ্যায় তার আগে থাকা সংখ্যার কমপক্ষে একটি অঙ্ক থাকে।

উদাহরণস্বরূপ, নিম্নলিখিতটি সত্যবাদী হওয়া উচিত:

[1, 12, 203, 0, 30]
             ^   ^ Contains a 0
        ^ Contains a 2
    ^ Contains a 1

নিম্নলিখিতগুলি মিথ্যা প্রত্যাবর্তন করতে হবে:

[1, 32, 23, 34]
    ^ Doesn't contain a 1, therefore false

আপনার জমা কোনও ফাংশন বা সম্পূর্ণ প্রোগ্রাম হতে পারে।

ইনপুট:

ইনপুট যে কোনও যুক্তিসঙ্গত ধরণের ক্রম হতে পারে। সংখ্যার একটি অ্যারে, স্ট্রিংগুলির একটি অ্যারে, সংখ্যার একটি বিস্মৃত স্ট্রিং ইত্যাদি

তবে বিষয়টি অর্ডার করুন, সুতরাং আপনি যে কোনও কাঠামো অবশ্যই ইনপুট হিসাবে গ্রহণ করতে বেছে নিন তার অবশ্যই একটি নির্দিষ্ট ক্রম থাকতে হবে।

স্ট্যান্ডিনের মাধ্যমে বা যুক্তি হিসাবে ইনপুট নেওয়া যেতে পারে।

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

  • সমস্ত সংখ্যা অ-নেতিবাচক পূর্ণসংখ্যার হবে

  • ইনপুটটিতে সর্বদা কমপক্ষে 2 নম্বর থাকবে

  • ইনপুট নম্বর 0 দিয়ে শুরু হবে না

আউটপুট:

আউটপুটটি সত্যবাদী বা মিথ্যা মান হবে (আপনার ভাষা দ্বারা সংজ্ঞায়িত), উপরোক্ত স্পেসিফিকেশনটি পূরণ হয়েছে কিনা তা উপস্থাপন করে।

সত্যবাদী / মিথ্যা মানগুলির পরীক্ষার মধ্যে সামঞ্জস্য হওয়ার দরকার নেই।

এটি হয় stdout আউটপুট বা ফিরে আসতে পারে।

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

True cases:
[1, 1, 1, 11, 111, 11, 1]
[12, 23, 34, 45, 56]
[65, 54, 43, 32, 21]
[123, 29, 9, 59, 55, 52, 2017, 2]
[1234567890, 19, 95, 5012, 23]

False cases:
[1, 2, 3, 4, 5, 1, 11] (2 doesn't contain a 1)
[12, 23, 33, 45] (45 doesn't contain a 3)
[98, 87, 76, 11, 12, 23] (11 doesn't contain a 7 or 6)

এটি কোড-গল্ফ, তাই বাইটসের ন্যূনতম সংখ্যা।

উত্তর:




12

রেটিনা , 25 20 বাইট

(.).*¶(?=.*\1)

^.+$

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

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


11

ব্র্যাচল্যাগ , 9 বাইট

{⊇ᵐ=∧?t}ˡ

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

মনে রাখবেন এটি কেবল পূর্ণসংখ্যার তালিকার সাথেই কাজ করে না, তবে স্ট্রিংগুলির একটি তালিকা বা তালিকার একটি তালিকা নিয়েও কাজ করে।

ব্যাখ্যা

{      }ˡ       Left fold on the input:
 ⊇ᵐ=              It is possible to find a number which is a subset of both input numbers
    ∧             (and)
     ?t           The output is the second number (to continue the fold)

2
চমৎকার. মনে হচ্ছে ... ঘোষিত? আপনি কেবল ভাষাটি স্পেসিফিকেশনটি বলছেন এমনটি পড়তে পারা যায়।
কারসিজিনিট

3
@Carcigenicate Brachylog প্রকৃতপক্ষে ঘোষণামূলক, এটা ঘোষণামূলক যুক্তি প্রোগ্রামিং ভাষার উপর ভিত্তি করে Prolog
মারামারি করুন

2
আমি যখন সীমাহীন ফ্রি সময় পাই তখন শিখার জন্য ভাষাগুলি আমার (ক্রমবর্ধমান) দীর্ঘ তালিকার তালিকায় থাকে। অনেক দুর্দান্ত ভাষা আছে!
কারসিজেনিকেট

8

জাভাস্ক্রিপ্ট (ES6), 47 44 * 43 বাইট

@ নীলকে ধন্যবাদ জানিয়ে একটি বাইট সংরক্ষণ করা হয়েছে

x=>x.every(y=>y.match(`[${p}]`,p=y),p=1/19)

স্ট্রিংগুলির তালিকা হিসাবে ইনপুট নেয়।

পরীক্ষার স্নিপেট

* ( ক্রস আউট 44 এখনও নিয়মিত 44 )


না `[${p}]`কাজ না?
নীল

@ নীল প্রতিটি অ্যারের প্রথম আইটেমের জন্য নয়।
ইটিএইচ প্রডাকশনস

আহ, আমি তোমাকে দেখতে পেয়েছি আমি যতদূর পেয়েছি a=>a.reduce((l,r)=>`${l}`.match(`[${r}]`)&&r)(যা সংখ্যার ইনপুট জন্যও কাজ করে)।
নিল

আপনি p&&যদি সেট করেন তবে সম্ভবত মুছে ফেলতে পারবেন p=1/19?
নিল

@ নিল আমি, আহ ... ভাল ... এটাই প্রতিভা, ধন্যবাদ :-)
ইটিএইচ প্রোডাকশনস

6

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

ü‚vy`Så1åP

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

ব্যাখ্যা

ü‚          # map pairing over each pair in input
  v         # for each pair
   y`       # push as 2 separate elements on stack
     Så     # check each digit in 2nd number for membership in first
       1å   # check if any 1 exists in the resulting list
         P  # product of stack

€Sü.å- আমি আশা করি এটি যেমন কাজ করেছিল আমি ভেবেছি এটিই হবে।
ম্যাজিক অক্টোপাস উরান

@ কারাসোকম্পিউটিং: হ্যাঁ এটি দুর্দান্ত হত। বা ঠিক ü.åবা €Süå
Emigna

কেন জোড় জোড় করে আবার ডট কমান্ড দিয়ে কাজ করবে না?
যাদু অক্টোপাস উর্ন

1
@ কারাসোকম্পিউটিং: এটি কেবল পরবর্তী বাইটকে কমান্ড হিসাবে গ্রহণ করার জন্য প্রয়োগ করা হয়েছে। এটি বিন্দুটিকে আমলে নেয় না।
এমিগিনা

6

সিজেম , 18 15 14 বাইট

মার্টিন ইন্ডারকে ধন্যবাদ 4 টি বাইট সংরক্ষণ করা হয়েছে

l~Afb_1>.&:,:*

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

ব্যাখ্যা

l~              e# Read and eval the input
  Afb           e# Convert each number to a list of digits
     _          e# Duplicate the array
      1>        e# Slice it after the first element
        .&      e# Vectorized set intersection; take the set intersection of corresponding 
                e#  elements of the two arrays
          :,    e# Get the length of each intersection
            :*  e# Take the product of the whole array. 
                e#  Will be 0 if any intersection was empty.

6

হাস্কেল, 51 48 35 বাইট

-3 বাইট @ নিকহানসেনকে ধন্যবাদ! আমার সত্যিই সেই মোনাড অপারেটরদের সাথে আরও ভাল হওয়া দরকার

যথাক্রমে @ লাইকনি এবং @ নিমিকে ধন্যবাদ -4 এবং -9 বাইটস!

and.(zipWith(any.flip elem)=<<tail)

এই সংস্করণটি ইনপুটটিকে স্ট্রিংগুলির অ্যারের হিসাবে গ্রহণ করে, প্রয়োজনীয়তা দূর করে showতবে যতদূর আমি দেখতে পাচ্ছি এটি পুরানো সংস্করণের মতো একইভাবে কাজ করে:

all(\(x,y)->any(`elem`x)y).(zip=<<tail).map show

(আমি মোটামুটি নিশ্চিত যে আমাকে এভাবে বেনামে ফাংশন জমা দেওয়ার অনুমতি দেওয়া হয়েছে তবে প্রয়োজনে আমি এটি ঠিক করব)

প্রথমে সংখ্যাগুলি স্ট্রিংয়ে রূপান্তরিত হয়। তারপরে মোনাড ম্যাজিক zip=<<tailএমন একটি ফাংশন তৈরি করে যা তালিকার সাথে তালিকাত জিপ করে যা প্রতিবেশী (গুলি) এর সাথে প্রতিটি এন্ট্রি যুক্ত করে। তারপরে allপ্রতিটি জোড়ায় একটি ল্যাম্বডা মানচিত্র করে যা একটি স্ট্রিংয়ে অপর থেকে কোনও অক্ষর রয়েছে কিনা তা চেক করে এবং শেষ পর্যন্ত তা সব বেরিয়ে আসে কিনা তা পরীক্ষা করে True

পুরানো সংস্করণ যা মূলত একইভাবে কাজ করে:

f a=and$zipWith(\b->any(`elem`show b).show)a$tail a

আমি জিপ এবং কিছু (->) মোনাড ট্র্যাকারি ব্যবহার করে একটি বাইট শেভ করতে সক্ষম হয়েছি: f (x, y) = যে কোনও ('এলিমেক্স' y; জি = সমস্ত চ। (জিপ = << টেল)। ম্যাপ শো । সম্পাদনা: এলেমকে [আশাবাদী স্পষ্টতই] ব্যাকটিক্সগুলিতে থাকা উচিত তবে মন্তব্য ফর্ম্যাটারের মাধ্যমে এটি সম্ভব নয়।
নিক হানসেন

44 বাইট:and.(zipWith(any.flip elem)=<<tail).map show
লাইকোনি

এটি স্ট্রিংগুলির তালিকা হিসাবে ইনপুট নেওয়ার অনুমতি দেয়, যেমন ["1234567890", "19", "95", "5012", "23"], আপনি এটি ড্রপ করতে পারেন .map show
নিমি

5

গণিত 62 62 35 বাইট

12 টি বাইট সহ মার্টিনের জন্য ধন্যবাদ সংরক্ষণ করা হয়েছে।

FreeQ[#⋂#2&@@@Partition[#,2,1],{}]&

FreeQ[#⋂#2&@@@Partition[#,2,1],{}]&[{{1},{1,2},{2,0,3},{0},{3,1}}]

মিথ্যা

FreeQ[#⋂#2&@@@Partition[#,2,1],{}]&[{{1},{1,2},{2,0,3},{0},{3,0}}]

সত্য


4

রুবি, 49 48 বাইট

->x{x.each_cons(2){|z|x&&=z*' '=~/(.).* .*\1/};x}

আউটপুটটি nilমিথ্যা এবং সত্যের জন্য একটি "এলোমেলো" পূর্ণসংখ্যা।


4

জাভা 8, 94 90 87 বাইট

ইনপুট হল সংখ্যার প্রতিনিধিত্বকারী স্ট্রিংগুলির একটি অ্যারে। দ্বিতীয় স্ট্রিং থেকে শুরু করে প্রতিটি পূর্ববর্তী স্ট্রিং বিরুদ্ধে একটি রেগুলার এক্সপ্রেশন তুলনা সঞ্চালিত কিনা দেখতে তার অক্ষরের কোনো রয়েছে: .*[previous string].*

Golfed:

a->{int r=1,i=0;while(++i<a.length)r*=a[i].matches(".*["+a[i-1]+"].*")?1:0;return r>0;}

Ungolfed:

public class NumberChainingPredicate {

  public static void main(String[] args) {
    System.out.println("Expect true:");
    for (String[] input : new String[][] { { "1", "1", "1", "11", "111", "11", "1" }, { "12", "23", "34", "45", "56" },
        { "65", "54", "43", "32", "21" }, { "123", "29", "9", "59", "55", "52", "2017", "2" },
        { "1234567890", "19", "95", "5012", "23" } }) {
      System.out.println(java.util.Arrays.toString(input) + " = " + exec(f(), input));
    }

    System.out.println();
    System.out.println("Expect false:");
    for (String[] input : new String[][] { { "1", "2", "3", "4", "5", "1", "11" }, { "12", "23", "33", "45" },
        { "98", "87", "76", "11", "12", "23" } }) {
      System.out.println(java.util.Arrays.toString(input) + " = " + exec(f(), input));
    }
  }

  private static java.util.function.Function<String[], Boolean> f() {
    return a -> {
      int r = 1, i = 0;
      while (++i < a.length) {
        r *= a[i].matches(".*[" + a[i - 1] + "].*") ? 1 : 0;
      }
      return r > 0;
    };
  }

  private static boolean exec(java.util.function.Function<String[], Boolean> function, String[] input) {
    return function.apply(input);
  }

}

নিস! আমি পোস্ট করতে যাচ্ছি তার চেয়ে অনেক কম .. যাইহোক, আপনি আরও কিছু গল্ফ করতে পারেন: a->{for(int i=1;i<a.length;)if(!a[i].matches(".*["+a[i++-1]+"].*"))return 0>1;return 1>0;}( 90 বাইট )
কেভিন ক্রুইজসেন

আমি এটি 90 তে গল্ফও করেছি, তবে অন্যভাবে:a->{int r=1;for(int i=0;++i<a.length;)r*=a[i].matches(".*["+a[i-1]+"].*")?1:0;return r>0;}
বিজনেস বিড়াল

1
কিছু নয়, 87 এ পেয়েছে:a->{int r=1,i=0;for(;++i<a.length;)r*=a[i].matches(".*["+a[i-1]+"].*")?1:0;return r>0;}
বিজনেস বিড়াল

আপনাদের দুজনকেই ধন্যবাদ। আমি মনে করি এখন অর্থবহ পরিমাণে এটিকে উন্নত করার একমাত্র উপায় হ'ল রেজেক্সে নজর দেওয়া।

4

জেলি , 6 বাইট

Dµf"ḊẠ

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

ব্যাখ্যা

Dµf"ḊẠ
Dµ        Treat the first (i.e. only) input as a list of decimal digits
   "      For each pair of corresponding elements in {the input digits} and
    Ḋ     {the input digits} with the first element removed
  f       take all elements common to both sides
     Ạ    then return true if the result has no empty lists, false otherwise

এটি 2/এখানে ব্যবহারের চেষ্টা করা সবচেয়ে সুস্পষ্ট , তবে এটি 2 আকারের সমস্ত স্লাইসে একটি অবিচ্ছিন্ন ফাংশন চালিয়েছে "Ḋকার্যকরভাবে সংলগ্ন উপাদানগুলির সমস্ত জোড়াগুলিতে কার্যকরভাবে একটি বাইনারি ফাংশন পরিচালনা করে, যার অর্থ আমরা fসরাসরি ব্যবহার করতে পারি (পরিবর্তে এটি অ্যানারিতে রূপান্তর করার প্রয়োজনের চেয়ে) হিসাবে ফাংশন f/)। এটি ইনপুটটির সর্বশেষ উপাদানটি জায়গায় রেখে দেয়, তবে ভাগ্যক্রমে 0 এর ইনপুট এমনকি দশমিক রূপান্তরিত হয়ে খালি তালিকায় পরিণত হয় না, সুতরাং এটির কোনও প্রভাব নেই




3

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

কোড:

üÃõå_

সিপি -1222 এনকোডিং ব্যবহার করে । এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন!

ব্যাখ্যা:

üà         # Intersection on each pair
  õå       # Check if the empty string exists
    _      # Boolean negate

ওহ মানুষ এটা কাজ করে! RüÃõå_আমি নিজে থেকে কী নিয়ে এসেছি। আমি আপনার সেরা উত্তরের খুব কাছাকাছি থাকার জন্য আমার সম্মানিত, আমার মুছে ফেলা। Rতবুও কেন দরকার নেই?
ম্যাজিক অক্টোপাস উরান

1
@ কারাসোকম্পুটিং হুমম, তখন কীসের Rজন্য? : পি
আদনান

2

পাওয়ারশেল , 87 বাইট

param($n)(1..($a=$n.length-1)|?{[char[]]$n[($i=$_)-1]|?{$n[$i]-like"*$_*"}}).count-eq$a

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

কোনও পরিমাপের দ্বারা সংক্ষিপ্ততম নয়, তবে অন্যরা ব্যবহার করছেন তার চেয়ে কিছুটা আলাদা পদ্ধতি এবং নিফটির |?{}কার্যকারিতাটি প্রদর্শন করে।

এটি ইনপুটটিকে স্ট্রিংগুলির অ্যারের হিসাবে গ্রহণ করে $n, তারপরে উপর থেকে লুপ 1করে length-1। আমরা একটি নির্দিষ্ট শর্তে সত্যবাদী সেই সূচকগুলি বের করতে আমরা Where-Object(দ্য |?{...}) ব্যবহার করি । আপনি এটি forএকটি ifক্লজ সহ কম্বিনেশন লুপের মতো ভাবতে পারেন ।

এখানে ধারা আছে [char[]]$n[($i=$_)-1]|?{$n[$i]-like"*$_*"}। এটি হ'ল, আমরা বর্তমান সূচকটি নিচ্ছি $_, এটিতে সেট করে $i, বিয়োগ করছি 1এবং এটি সূচীতে ব্যবহার করছি $n(যেমন, আমরা আমাদের ইনপুট অ্যারেতে পূর্ববর্তী উপাদানটি পাই)) এরপরে এটি- charঅ্যারে হিসাবে কাস্ট করা হয় এবং অন্য Where-Objectপদ্ধতির মাধ্যমে প্রেরণ করা হয় ।

ভেতরের দফা $n[$i]-like"*$_*"নির্দিষ্ট করে যা বর্তমান সূচিতে স্ট্রিং $iহয় -likeবর্তমান চরিত্র $_পূর্ববর্তী সূচি থেকে। এটি দুটি অ্যারে উপাদানগুলির মধ্যে সাধারণ যে কোনও অক্ষরকে আউটপুট দেবে। সুতরাং, বাইরের ধারাটি কেবল সত্যবাদী হবে যদি সেখানে কোনও অক্ষর থাকে তবে (যেহেতু একটি খালি অ্যারে পাওয়ারশেলে মিথ্যা থাকে), এবং তাই সূচকটি কেবল তখনই নির্বাচিত হবে যখন অভিন্ন অক্ষর রয়েছে।

এর পরে, আমরা আপ সূচকের যে সমস্ত নির্ণায়ক মিলেছে জড়ো করে যাচাই করুন যে .countউহার হয় -eqইনপুট অ্যারের দৈর্ঘ্যের ual। সেই বুলিয়ান ফলাফলটি পাইপলাইনে রেখে গেছে, এবং আউটপুট অন্তর্ভুক্ত।



2

এপিএল (ডায়ালগ এপিএল) , 9 বাইট

∧/×≢¨2∩/⎕

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

∧/ তালিকায় সমস্ত হয়

× চিহ্নগুলো

 এর টেলির

¨ প্রতিটি

2∩/ এর জুটি ভিত্তিক ছেদগুলি

 ইনপুট?


আমি নিশ্চিত "চিহ্ন" এর অর্থ কী, তবে আপনি ধরে নিতে পারেন যে সমস্ত সংখ্যা ইতিবাচক হবে।
কারসিজিনিট

পছন্দ করুন
অ্যাডম

হ্যা দুঃক্ষিত. "অ-নেগেটিভ"।
কারসিজেনিকেট

2

পিএইচপি, 65 68

for(;null!==$a=$argv[++$i+1];)$r+=$a==strtr($a,$argv[$i],_);echo!$r;

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


trimInsted এর ব্যবহার করে একটি ভুল স্থির করে strtr। ধন্যবাদ @ জার্গহেলসারম্যানকে


একটি বড় দুঃখিত। প্রদত্ত পরীক্ষাগুলির জন্য আপনার সমাধান কাজ করে। ["filename",1,11,414]কাজ করে না
জার্গ হালসারম্যান

@ জর্গহালসারম্যান নিশ্চিত যে trimকেবলমাত্র শীর্ষস্থানীয় এবং অনুসরণীয় চরিত্রের জন্য কাজ করে। ঠিক কর.
ক্রিস্টোফ

পিএইচপি <7.1 এর জন্য, আপনি (-5 বাইট) এর a&পরিবর্তে ব্যবহার করতে পারেন null!==
তিতাস

... তবে এটি কেবল প্রথম অঙ্কের জন্য কাজ করবে $argv[$i], কারণ "যদি এর থেকে আলাদা দৈর্ঘ্য হয় এবং দু'জনের দীর্ঘতর অতিরিক্ত অক্ষর উপেক্ষা করা হয়।" (ম্যানুয়াল থেকে)
তিতাস

2

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

for($b=3**39;--$argc;)preg_replace("#[$b]#","",$b=$argv[$argc])<$b?:die(1);

কমান্ড লাইন আর্গুমেন্ট থেকে সংখ্যা নেয়; 1মিথ্যা জন্য এবং সত্যবাদী সঙ্গে প্রস্থান করে 0এটি
দিয়ে চালান -rবা এটি অনলাইনে পরীক্ষা করুন

  • $bসমস্ত অঙ্ক সহ একটি সংখ্যা = দিয়ে শুরু করুন
  • আর্গুমেন্ট মাধ্যমে লুপ ডাউন
    • $bআর্গুমেন্ট থেকে সমস্ত অঙ্ক মুছে ফেলুন
    • অনুলিপি অনুলিপি $b
    • কোনও অঙ্ক অপসারণ না হলে, প্রস্থান করুন 1
  • অন্তর্নিহিত: প্রস্থান সঙ্গে 0

1

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

for($i=$t=1;++$i<$argc;)$t*=preg_match("#[{$argv[$i-1]}]#",$argv[$i]);echo$t;

1
বিকল্প foreach($argv as$k=>$v)$t=$k--?$t*preg_match("#[{$argv[$k]}]#",$v)):1;echo$t;:, 77 বাইট (অরক্ষিত)।
ইসমাইল মিগুয়েল

1
@ ইসমাইল মিগুয়েল ভারী বিকল্প প্রথমে আপনাকে অবশ্যই পরিবর্তন $k--করতে হবে --$kএবং একটি ড্রপ করতে হবে) এর পরে আপনার পদ্ধতির কাজ করা উচিত এবং আপনাকে সতর্কতার জন্য একটি @ যুক্ত করতে হবে
জার্গ হেলসারম্যান

ওহ, হ্যাঁ, অকেজো প্যারেন্টেসিসগুলি লক্ষ্য করা যায় নি যে সিনট্যাক্স ত্রুটির কারণ ঘটায়। এবং আমি সম্পর্কে একমত না $k--। আমি বিশেষত এটি ব্যবহার করেছি যাতে প্রথম রানে $ k এখনও 0 হয়। এবং সতর্কতা অবহেলা করা হয়। এর অর্থ কোডটি এখন 76 বাইট, তবে এখনও অনির্ধারিত।
ইসমাইল মিগুয়েল

সম্পাদনার পরে, আমি নিশ্চিত করতে পারি যে foreach($argv as$k=>$v)$t=$k--?$t*preg_match("#[{$argv[$k]}]#",$v):1;echo$t;এটি কাজ করা উচিত। প্রত্যাশার সাথে প্রদর্শনগুলির সাথে পরীক্ষা এবং $argv = array(1, 12, 123, 3, 34, 45, 5, 5);প্রদর্শনগুলির সাথে পরীক্ষা করা । 1$argv = array(1, 12, 123, 3, 34, 45, 5, 6);0
ইসমাইল মিগুয়েল

@ ইসমাইলমিগুয়েল আপনি ভুলে গেছেন যে এর মধ্যে প্রথম প্যারামিটারটি ফাইলের নাম।
জার্গ হালসারম্যান

1

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

1&)"V@VX&nv@]x

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

বাইট সংরক্ষণের জন্য @ লুইস মেন্ডোকে ধন্যবাদ। ব্যাখ্যা:

1&)            % 'Pop' the first item from the input and push it on the stack.
   "       ]   % Main 'for' loop, to loop over the rest of the input.
    V            % Stringify previous (or first) iten from the input.
     @V          % Push current number, convert to string
       X&        % Intersect with stringified number already on the stack.
         nv      % Count the size of the intersection, and add it to the existing list of sizes.
           @     % Push the current number again for the intersection in the next loop. 
             x % Remove the number pushed by the last loop.
               % Else the program would end with the result on the second instead of the first position in the stack

আপনি প্রতিস্থাপন 1)VGকরে একটি বাইট সংরক্ষণ করতে পারেন 1&)(এবং এটি প্রথম সংখ্যাটি পুনরাবৃত্তি করা এড়ানো)
লুইস মেন্ডো

@ লুইস মেন্ডো অবশ্যই! আমি অস্পষ্টভাবে মনে রেখেছিলাম যে এমএটিএলটির এই কার্যকারিতা ছিল, তবে "পপ" (যেমন একটি সারি বা স্ট্যাকের মতো) সন্ধানে কোনও ফল পাওয়া যায়নি, তাই আমি ভেবেছিলাম আমার ভুল হয়েছে।
Sanchises

হ্যাঁ, আসলে এটি রেফারেন্স ইনডেক্সের একটি বিশেষ ক্ষেত্রে particular দুটি আউটপুট সহ একটি রেফারেন্স ইনডেক্সিং অপারেশন যেমন )নির্বাচিত মানগুলিকে প্রথম আউটপুট হিসাবে এবং তারপরে অবশিষ্ট মানগুলি দ্বিতীয় আউটপুট হিসাবে দেয়
লুইস মেন্ডো

পুনঃটুইট ম্যাটল্যাব উন্নত করার জন্য তাদের আপনাকে এমএটিএল ছেলেদের ভাড়া করা উচিত ...
সানচিইস

হা হা। আমি কখনও কখনও ম্যাটল্যাবে এই বৈশিষ্ট্যগুলি মিস করি
লুইস মেন্ডো

1

ক্লোজার, 71 বাইট

(fn[n](every?(fn[[q w]](some q w))(partition 2 1(map #(set(str %))n))))

একটি বেনামী ফাংশন যা সংখ্যার ক্রম গ্রহণ করে। রিটার্ন true/ false

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

(defn number-chain? [nums]
  (let [; Turn each number into a set of characters
        set-nums (map #(set (str %)) nums)

        ; Partition the sets into lists of neighbors
        ; [1 2 3 4] -> [[1 2] [2 3] [3 4]]
        partitioned (partition 2 1 set-nums)]

    ; Does every second neighbor contain some element of the first?
    (every?
      (fn [[l1 l2]]
        (some l1 l2))
      partitioned)))

1

সিম্পিম্পেল্পলেট, 124 বাইট

বাহ, এটি একটি অনুশীলন ছিল!

{@eachargv asA keyK}{@ifK}{@setR"/[",O,"]/"}{@calljoin intoR"",R}{@ifA is notmatchesR}{@return}{@/}{@/}{@setO A}{@/}{@echo1}

এটি "সহজভাবে" পুরানো উপাদানটি ব্যবহার করে একটি রেজেক্স তৈরি করে, 1সত্যবাদী মান হিসাবে দেখায় বা অন্যথায় কিছুই করে না।


Ungolfed:

{@each argv as number key K}
    {@if K}
        {@set regex "/[", old, "]/"}
        {@call join into regex "", regex}
        {@if number is not matches regex}
            {@return false}
        {@/}
    {@/}
    {@set old number}
{@/}
{@echo 1}

1

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

s=>/^(.*(.).*\n(?=.*\2))+.+$/.test(s)

নিউলাইন-পৃথক সংখ্যার একটি স্ট্রিং হিসাবে ইনপুট গ্রহণ করে। @ মার্টিনএেন্ডারের দুর্দান্ত রেটিনা উত্তরের উপর ভিত্তি করে, তবে পুরো টেস্টটি একটি একক রেজিপ্স্পে করা হচ্ছে কারণ এটি জাভাস্ক্রিপ্টে সেভাবে ছোট।


1

পিপ , 12 10 বাইট

$&B@X^_MPg

কমান্ড-লাইন আর্গুমেন্টের সিরিজ হিসাবে ইনপুট নেয়। আউটপুট হ'ল সত্যবাদী এবং মিথ্যাগুলির জন্য একটি খালি তালিকা। এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা

         g  List of all cmdline args
       MP   Map this function to consecutive pairs of items from that list:
     ^_      Split 1st item of pair into list of characters
    X        Convert to regex that matches any of those characters
  B@         Find all matches in 2nd item of pair
$&          Fold on logical AND--truthy if all items are truthy, falsey if one is falsey
            Print (implicit)

1

Röda , 45 35 বাইট

{[_=~`(\S*(\S)\S* (?=\S*\2))+\S+`]}

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

এটি পার্ল 5 সমাধানের মতো, যা মার্টিন এেন্ডারের রেটিনা দ্রবণটির একটি বন্দর a -10 বাইট @ নীল ধন্যবাদ।

এখানে একটি আলাদা সমাধান ( 73 72 বাইট):

{[_/""]|{|x|{x|[0]()unless[not(_ in y)]else[1]}if tryPeek y}_|sum|[_=0]}

এটি একটি বেনাম ফাংশন যা স্ট্রিম থেকে স্ট্রিং টান করে এবং পরপর স্ট্রিংগুলিতে একই অক্ষর রয়েছে কিনা তা পরীক্ষা করে। ব্যাখ্যা:

{
    [_/""]|    /* split strings -> creates arrays of characters */
    {|x|       /* begin for loop over character arrays */
        {      /* begin if tryPeek(y) -> peeks the second item from the stream */
               /* x and y are now two consecutive character arrays */
            x| /* push characters in x to the stream */
            [0]()unless[not(_ in y)]else[1] /* pushes 0 to the stream */
                                            /* if y contains the character */
                                            /* in the stream, otherwise 1 */
        }if tryPeek y
    }_|        /* end for loop */
    sum|       /* sum all numbers in the stream */
    [_=0]      /* return true if the sum is zero */
}

এটি সম্ভবত আরও গল্ফ করা যেতে পারে ...


এটি কি এমন একক রেইগএক্স্প পেতে সহায়তা করবে যা পুরো পরীক্ষাটি একবারে যায়? কিছু একটা ^(\S*(\S)\S* (?=\S*\2))+\S+$
নীল

@ নীল এটি কাজ করছে বলে মনে হচ্ছে। ধন্যবাদ!
ফার্গুসক

1

বাশ + ইউনিক্স ইউটিলিটিস, 71 69 বাইট

sed "s/\(.*\)/<<<\1 \&\&grepx[\1]/;1s/.*g/g/;\$s/ .*//"|tr 'x
' \ |sh

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

ইনপুট স্টিডিনে রয়েছে, প্রতি লাইনে এক নম্বর।

আউটপুটটি প্রস্থান কোডে রয়েছে: 0 সত্যের জন্য, 1 টি মিথ্যা।

এটি সম্ভবত আরও গল্ফ করা যেতে পারে।

উপরের কোডটি কাজ করার জন্য, বর্তমান ডিরেক্টরিতে এমন কোনও ফাইল থাকতে পারে না যার নাম একক অঙ্ক। যদি এটি গ্রহণযোগ্য না [\1]হয় তবে প্রোগ্রামটিতে '[\1]'(2 অতিরিক্ত বাইট ব্যয়ে) প্রতিস্থাপন করুন ।

নমুনা রান (চ্যালেঞ্জে সরবরাহিত শেষ পরীক্ষার মামলা):

$ echo '98
> 87
> 76
> 11
> 12
> 23' | ./digittest > /dev/null; echo $?
1

(1 এখানে মিথ্যা।)


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

আমি উপরের নমুনা রান উপর প্রদর্শিত হবে।

সিড কমান্ড ইনপুটটিকে রূপান্তর করে:

grepx[98]
<<<87 &&grepx[87]
<<<76 &&grepx[76]
<<<11 &&grepx[11]
<<<12 &&grepx[12]
<<<23

Tr কমান্ড পরে স্ট্রিং এ রূপান্তর:

grep [98] <<<87 &&grep [87] <<<76 &&grep [76] <<<11 &&grep [11] <<<12 &&grep [12] <<<23

এই স্ট্রিংটি কাঙ্ক্ষিত অপারেশন করার জন্য একটি শেল কমান্ড, তাই আমি এটি পাইপটি পাই এবং আমি সম্পন্ন হয়ে গেলাম।


ফাইল সীমাবদ্ধতা ঠিক আছে, যদিও এটি অবশ্যই একটি বিজোড় সীমাবদ্ধতা।
কারসিজেনিকেট

1

প্রশ্ন, 57 বাইট

{r::();({r,::any(last x)in y;x,enlist y}\)($)0,x;all 1_r}
  1. গ্লোবাল আর।
  2. ইনপুটটিকে স্ট্রিংগুলির অ্যারেতে রূপান্তর করে।
  3. অ্যারের পরীক্ষা করে স্ক্যান করে দেখা যাচ্ছে যে শেষ স্ট্রিংয়ের কিছু অক্ষর বর্তমান স্ট্রিংয়ে রয়েছে।
  4. প্রতিটি ফলাফল আর এ যুক্ত করে।
  5. সমস্ত স্ট্রিং 3 ধাপে সন্তুষ্ট হলে 1 টি প্রত্যাবর্তন করে অন্য 4 টি ফিরে আসে।

দ্রষ্টব্য: 0 কার্যের মধ্যে ইনপুট অ্যারে শুরু করতে যুক্ত করা হয়েছে। এটি করা হয়েছিল যাতে প্রথম উপাদানটির তুলনা তালিকাভুক্ত হয়ে যায়। অন্যথায় তুলনা করার জন্য প্রথম উপাদানটির শেষ চরিত্রটি ধরা পড়ে। এমন কোনও ধরণের চেক করতে পারে যা বর্তমান গণনায় 7 বাইট যুক্ত করে।


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