ভার্বোজ আইপি রেঞ্জ জেনারেটর


11

দুটি আইপি অ্যাড্রেস দেওয়া aএবং b, এই ব্যাপ্তির মধ্যে সমস্ত ঠিকানা আউটপুট দেওয়া সহজ কাজটি সহজ ।


উদাহরণ

উদাহরণ # 1:

f(a = 192.168.0.1, b = 192.168.0.4) 
    192.168.0.1
    192.168.0.2
    192.168.0.3
    192.168.0.4

উদাহরণ # 2 (টিআইও এটি কেটে ফেলবে, পরীক্ষা করার সময় একটি ছোট পরিসর ব্যবহার করবে):

f (a = 123.0.200.0, b = 124.0.0.0)
    123.0.200.0
    123.0.200.1
    ...            # Omitted pattern 
    123.0.200.255
    123.0.201.0
    ...            # Omitted pattern
    123.0.201.255
    ...            # Omitted pattern
    123.0.255.255
    123.1.0.0
    ...            # Omitted pattern
    123.255.255.255
    124.0.0.0

ইনপুট এবং আউটপুট

  • a < b অন্য কথায়:
    • প্রাথমিকভাবে সংজ্ঞায়িত :a[0] < b[0] || (a[0] == b[0] && a[1] < b[1]) || (a[0:1] == b[0:1] && a[2] < b[2]) || (a[0:2] == b[0:2] && a[3] < b[3])
    • শব্দগুলিতে সংজ্ঞায়িত: a সর্বদা এর চেয়ে কম হবে b(যাতে আপনাকে পৌঁছানোর জন্য সাবনেটটি বাড়িয়ে দিতে হবে b)।
    • না, আপনি হ্যান্ডেল করতে হবে নাa == b (যদি আপনি, কুডোস)।
  • আউটপুটটি "সর্বনিম্ন" থেকে "সর্বোচ্চ" (উদাহরণগুলি দেখুন) পর্যন্ত ক্রমযুক্ত হওয়া উচিত।
  • এই প্রতিদ্বন্দ্বিতা, একটি আইপি জন্য বৈধ সিনট্যাক্স হল: \d{1-3}\.\d{1-3}\.\d{1-3}\.\d{1-3}
  • আপনাকে নন-আইপি ঠিকানা ইনপুট হ্যান্ডেল করতে হবে না, যদি এটি অপ্রত্যাশিত ইনপুট হয় তবে আপনি ত্রুটি করতে পারেন।
  • আউটপুট একটি অ্যারে বা একটি সীমানাযুক্ত স্ট্রিং হিসাবে (কোনও সাদা স্থান ব্যবহার করে) হতে পারে।

জয়লাভ

  • এটি , সর্বনিম্ন বাইট-কাউন্ট জেতা।

1
উদাহরণস্বরূপ 123.0.200.255এবং আপনার মধ্যে আপনার "পরিতৃপ্ত প্যাটার্ন" রয়েছে 123.0.201.0তবে সেগুলি কি অনুক্রমিক নয়?
nmjcman101

@ nmjcman101 এটি দু'বার করেছেন, স্থির হয়েছে।
ম্যাজিক অক্টোপাস উরান

উত্তর:


3

পাইথ, 22

mj\.jd256}FmivMcd\.256

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

               cd\.       # split string by "."
             vM           # eval list (convert strings to integers)
            i      256    # convert list of base256 digits to integer
           m          Q   # map the above over implicit input list
         }F               # inclusive range
    jd256                 # convert to list of base256 digits
 j\.                      # join by "." 
m                         # map over inclusive range 

1
এটি পাইথের এমন একটি পরিবর্তনকে অনুপ্রাণিত করেছিল যা ভবিষ্যতে এই জাতীয় কোডকে আরও ছোট করে তুলতে হবে। যখন তালিকায় প্রয়োগ করা হয় তখন vMডিফল্ট হবে v
ইসাকাক

@ আইস্যাক দুর্দান্ত - ধন্যবাদ, আমি পরের বারের মতো এটি মনে রাখার চেষ্টা করব।
ডিজিটাল ট্রমা

3

ব্যাচ, 623 বাইট

@echo off
set s=%1.%2
call:c %s:.= %
exit/b
:c
if %1==%5 goto d
call:d %1 %2 %3 %4 %1 255 255 255
set/al=%1+1,u=%5-1
for /l %%i in (%l%,1,%u%)do call:d %%i 0 0 0 %%i 255 255 255
call:d %5 0 0 0 %5 %6 %7 %8
exit/b
:d
if %2==%6 goto e
call:e %1 %2 %3 %4 %1 %2 255 255
set/al=%2+1,u=%6-1
for /l %%j in (%l%,1,%u%)do call:e %1 %%j 0 0 %5 %%j 255 255
call:e %5 %6 0 0 %5 %6 %7 %8
exit/b
:e
if %3==%7 goto f
call:f %1 %2 %3 %4 %1 %2 %3 255
set/al=%3+1,u=%7-1
for /l %%k in (%l%,1,%u%)do call:e %1 %2 %%k 0 %5 %6 %%k 255
call:e %5 %6 %7 0 %5 %6 %7 %8
exit/b
:f
for /l %%l in (%4,1,%8)do echo %1.%2.%3.%%l

দুর্ভাগ্যক্রমে ব্যাচের 32-বিট পাটিগণিত সমস্ত আইপি ঠিকানা মুদ্রণ করতে পারে না, সুতরাং আমাকে এটি আটকে ভাগ করতে হবে।


@echo offবিকল্প অপসারণ করা হচ্ছে ? এটি একটি বিশাল পার্থক্য তোলে না।
ডিজিটাল ট্রমা

@ ডিজিটাল ট্রামুমা আমি অনুমান করি যে এটি প্রতিধ্বনি সর্বদা কনসোলে যায় তাই এটি কঠোরভাবে প্রয়োজনীয় নয় এবং এটি স্টাডইউটের অংশ নয় তবে এটি বিশেষত দীর্ঘ স্ক্রিপ্টগুলির যেমন খুব বিরক্তিকর।
নিল


2

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

স্ট্রিং হিসাবে আউটপুট

for($s=ip2long($argv[1]);$s<=ip2long($argv[2]);)echo long2ip($s++)," ";

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

print_r(array_map(long2ip,range(ip2long($argv[1]),ip2long($argv[2]))));

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


2

জেলি , 18 বাইট

ṣ”.V€ḅ⁹µ€r/b⁹j”.$€

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

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

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

ṣ”.V€ḅ⁹µ€r/b⁹j”.$€ - main link, input is a list of addresses which are strings
       µ€          - for each address string,
ṣ”.                  - split on periods
   V€                - eval each element in the list (convert strings to numbers)
     ḅ⁹              - transform from base 256 to integer (⁹ is 256)
         r/        - take the inclusive range
           b⁹      - convert each element in the range from integer to base 256
             j”.$€ - join each address with periods.

2

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

g=s=>s.replace(/(\d+)\.256/,(_,n)=>++n+'.0')
f=(a,b)=>a==b?a:a+`
`+f(g(g(g(g(a+'.256').slice(0,-2)))),b)

এই দ্রবণটি n। 256 প্যাটার্নটিকে n + 1 দিয়ে প্রতিস্থাপন করে .0 এর এবং দুটি পরামিতি সমান না হওয়া পর্যন্ত এটি নিজেকে পুনরাবৃত্তভাবে ডাকে।

এটি বল রোলিং পেতে প্রাথমিক ইনপুটে '.256' যুক্ত করে। slice(0,-2)তারপরে '.0' অনুসরণ করে অপসারণ করতে ব্যবহৃত হয়।

উদাহরণ:

g=s=>s.replace(/(\d+)\.256/,(_,n)=>++n+'.0')
f=(a,b)=>a==b?a:a+`
`+f(g(g(g(g(a+'.256').slice(0,-2)))),b)

console.log('192.168.0.1 ... 192.168.0.4');
console.log(f('192.168.0.1', '192.168.0.4'));

console.log('123.255.255.0 ... 124.0.3.0');
console.log(f('123.255.255.0', '124.0.3.0'));

console.log('192.1.1.1 ... 192.1.1.1 ... kudos');
console.log(f('192.1.1.1', '192.1.1.1'));


1

জাভা (ওপেনজেডিকে 8) ,339 314 282 বাইট

Golfed:

long f(String i)throws Exception{return java.nio.ByteBuffer.wrap(java.net.InetAddress.getByName(i).getAddress()).getInt()&(1L<<32)-1;}void g(String[] a)throws Exception{for(long l=f(a[0]),m=255;l<=f(a[1]);)System.out.println(((l>>24)&m)+"."+((l>>16)&m)+"."+((l>>8)&m)+"."+(l++&m));}

Ungolfed:

long ipToLong(String ip) throws Exception {
    return java.nio.ByteBuffer.wrap(java.net.InetAddress.getByName(ip).getAddress()).getInt() & (1L << 32) - 1;
}

void printRange(String[] ips) throws Exception {
    for (long ip = ipToLong(ips[0]), m = 255; ip <= ipToLong(ips[1]);)
        System.out.println(((ip >> 24) & m) + "." + ((ip >> 16) & m) + "." + ((ip >> 8) & m) + "." + (ip++ & m));
}

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

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