ফাইল এক্সটেনশন কি?


10

আপনার চ্যালেঞ্জটি কোনও সরবরাহকৃত ফাইলের ফাইলের এক্সটেনশানটি খুঁজে পাওয়া:

hi.txt -> txt or .txt
carrot.meme -> meme or .meme
lol (undefined behavior)
what..is..this..file -> file or .file
.bashrc -> bashrc or .bashrc
T00M@n3KaPZ.h0wC[]h -> h0wC[]h or .h0wC[]h
agent.000 -> 000 or .000

আপনার অবশ্যই পাঠ্যটি শেষ . বা শেষের পরে .স্ট্রিংয়ের শেষে পাওয়া উচিত। নিয়মিত প্রকাশের প্রথম ক্যাপচারিং গ্রুপ ম্যাচটি /\.([^.]+)$/কাজ করে এবং তাই এসগুলিতে ইনপুট বিভক্ত করে .এবং শেষটি ফিরে আসে does

ফাইলের নামটিতে সর্বদা কমপক্ষে একটি .থাকতে পারে তবে এতে একাধিক থাকতে পারে .। (উদাহরণ দেখুন)

ইনপুট সর্বদা মিলবে ^[.a-zA-Z0-9^!\[\]{}@$%+=]+$


17
ভবিষ্যতে স্যান্ডবক্সকে মূল সাইটে পোস্ট করার আগে আপনার চ্যালেঞ্জগুলির বিষয়ে প্রতিক্রিয়া জানাতে দয়া করে বিবেচনা করুন।
মেগো

1
কোডgolf.meta.stackexchange.com/a/12432/59376 - আপনার চ্যালেঞ্জ থেকে এই ধারণা পেয়েছেন।
ম্যাজিক অক্টোপাস উরন

পছন্দ করুন
programmer5000

1
নেতিবাচক ভোট কেন? এই চ্যালেঞ্জটি কি "অত্যন্ত তুচ্ছ" বা তাই?
আবেল টম

@ আবেলটম সম্পাদনার ইতিহাস প্রস্তাব করবে যে ডাউনভোটগুলি এই প্রশ্নের প্রথম খসড়ায় নির্দিষ্টকরণের অভাব ছিল।
প্যাট্রিক রবার্টস

উত্তর:



11

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

কোনও ফাইল এক্সটেনশান না থাকাকালীন পুরো ফাইল নামটি ফিরিয়ে দেয়। আমি মনে করি এটি একটি গ্রহণযোগ্য অনির্ধারিত আচরণ

let f =

s=>s.split`.`.pop()

console.log(f("hi.txt"))               // -> txt
console.log(f("carrot.meme"))          // -> meme
console.log(f("lol"))                  // -> undefined behavior
console.log(f("what..is..this..file")) // -> file
console.log(f("T00M@n3KaPZ.h0wC[]h")) // -> h0wC[]h
console.log(f(".bashrc")) // -> bashrc


অপরিবর্তিত আচরণের বিষয়টি হ'ল কিছু যায়। যদিও, অনুনাসিক অসুরগুলি এখনও অপরিবর্তিত আচরণের পরেও "কোনও দূষিত প্রোগ্রাম নয়" ধারাটিকে ব্যর্থ করতে পারে।
জন ডিভোরাক

10

গণিত, 13 22 বাইট

সম্পাদনা: কীভাবে আমি ".bashrc"পরীক্ষার কেস মিস করেছি তা নিশ্চিত নয় । আমাকে সৎ রাখার জন্য আর্টিরকে ধন্যবাদ।

FileExtension["a"<>#]&

যদি ইনপুটটি মেলে \.[^.]+, তবে FileExtensionকেবল খালি স্ট্রিংটি ফেরত দেয়, তাই আমরা চিঠিটি প্রিপেন্ড করি a। অন্য কোনও ক্ষেত্রে, প্রিপেন্ডিং এর aআউটপুটকে প্রভাবিত করে না FileExtension


11
গণিতের অন্তর্নির্মিত ... অবাক হওয়ার কিছু নেই।
programmer5000

1
আমি যদি কোনও প্রশ্নের জন্য কোনও গণিতের বিল্টিন না থাকি অবাক হতাম
sagiksp

আমার .extগাণিতিকের অ্যাক্সেস নেই, তবে আমার সন্দেহ হয় যে এর ফলস্বরূপ কিছুই হবে না, যা .bashrcআউটপুট দেওয়ার প্রয়োজনীয়তার জন্য bashrcব্যর্থ হয় (এটি ম্যাথিকসে ব্যর্থ হয় )
আর্টিয়ার


ম্যাথামেটিকাল শুধু মেটা বিল্ট-ইন করতে হবে Create Built-in XXXXXXXX
ম্যাজিক অক্টোপাস উরন




7

সি ফাংশন, 21

  • @ ডেনিসকে ধন্যবাদ 1 বাইট সংরক্ষিত।
  • 3 জোড় সংরক্ষিত @ জোহানডুয়েটকে ধন্যবাদ
  • 2 বাইট সংরক্ষিত @ নীলকে ধন্যবাদ
  • 1 অ্যালবামির জন্য বাইট সংরক্ষণ করা হয়েছে।
f(s){s=rindex(s,46);}

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


1
যদি আপনি উত্তরাধিকারের পসিক্স ফাংশনগুলি ব্যবহার করে ঠিক থাকেন তবে আপনি rindexবাইট সংরক্ষণ করতে ব্যবহার করতে পারেন ।
অ্যালগমির

@ অ্যালগমির অবশ্যই, এটি টিআইওতে ভাল কাজ করে, তাই আমি এটি ব্যবহার করব। আমি এর আগে কখনও শুনিনি rindex()- টিপটির জন্য ধন্যবাদ!
ডিজিটাল ট্রমা

5

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

<?=pathinfo($argn,4);

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

এর জন্য একটি সংক্ষিপ্ত প্রকাশ

<?=pathinfo($argn)[extension];

pathinfo

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

<?=end(explode(".",$argn));

বিস্ফোরিত করা

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

পিএইচপি <7.0, 26 বাইট

<?=end(split("\.",$argn));

অবচয় বিভক্ত


1
আপনি কি প্রথমটির জন্য একটি পেছনের নতুন লাইন গণনা করছেন? এটি ২৮ বাইট হওয়া উচিত, ২৮ টি নয়
কনর ও'ব্রায়েন

@ ConorO'Brien আপনি .আমি সংখ্যা নির্ধারণে কপি পর ধন্যবাদ এবং থেকে বিভক্ত সংস্করণ একটি `পেস্ট
Jörg Hülsermann

2
pathinfo()ভিত্তিকটির হতে পারে <?=pathinfo($argn,4);
manatwork



4

ব্যাচ, 10 বাইট

@echo %~x1

একবারের জন্য আশ্চর্যজনকভাবে প্রতিযোগিতামূলক।


4

ভি , 5 , 3 বাইট

যেহেতু এই উত্তরটির আরও বেশি মুদ্রণযোগ্যের চেয়ে ছাপানো যায় না, তাই এখানে একটি হেক্সডাম্প রয়েছে:

00000000: cd81 ae                                  ...

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

এটি ব্যবহার করে জ্যান ডিভোরাকের অ্যালগরিদম , এটি এটির আরও কার্যকর এনকোডিং হতে পারে।

ব্যাখ্যা:

Í       " Remove all occurrences of:
 0x81   "   Anything (greedy)
     ®  "   Followed by a dot 

পুরানো সমাধান:

$T.d|

ব্যাখ্যা দয়া করে?
এরিক আউটগল্ফার 13

@ এরিকথ আউটগল্ফার সম্পন্ন করেছেন
জেমস

অপেক্ষা করুন ®মানে একটি বিন্দু অনুসরণ করা? লোল যে অদ্ভুত।
এরিক আউটগল্ফার


3

জেলি , 4 বাইট

ṣ”.Ṫ

একটি মোনাডিক লিঙ্ক ফাইলটির নাম নিচ্ছে এবং কোনও অগ্রণী ছাড়া এক্সটেনশানটি ফিরিয়ে দেবে .

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

কিভাবে?

আক্ষরিকভাবে যা বলা হয়েছিল তা করে ...

ṣ”.Ṫ - Main link: list of characters, f
 ”.  - literal '.'
ṣ    - split f at occurrences of '.'
   Ṫ - tail (get the last chunk)

3

যান , 85 বাইট

যাও ... ঝামেলা।

import(."fmt"
."os"
."strings")
func main(){s:=Split(Args[1],".");Print(s[len(s)-1])}

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

কোড থেকে প্রথম বন্ধনীর নমুনা:

()(){([])([()])}

2
()(){([])([()])}- এটি কি বৈধ মস্তিষ্ক-ফ্লাক?
eush77

5
@ eush77 এটা টেকনিক্যালি এর বৈধ যেহেতু এটি ত্রুটি ছাড়া চালানো হবে ব্রেন-বিমানবিধ্বংসী কামান, কিন্তু এটা করে না কিছু আকর্ষণীয় / দরকারী। এটি হয় কেবল আক্ষরিক 2যা কোনও নির্দেশনা / আদেশ বা কোনও কিছু বা একটি অসীম লুপ নয় যা ইনপুটের উপর নির্ভর করে ক্রমাগত আরও মেমরি বরাদ্দ করে।
জেমস 21

ব্যবহার করা filepath.Extআপনাকে কয়েকটি কামড় বাঁচাতে পারে
পাউয়েলস

3

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

s=>s.slice(s.lastIndexOf`.`)

মন্তব্যে স্পেস পরিবর্তন প্রয়োজনীয়তা সরিয়ে দেয় +1

-3 বাইট nderscore ধন্যবাদ


1
-3 sliceএবং টেম্পলেট স্ট্রিং এক্সিকিউশন সহ:s=>s.slice(s.lastIndexOf`.`)
nderscore

3

কমন লিস্প, 57 বাইট

(lambda(s)(#1=reverse(subseq #2=(#1# s)0(search"."#2#))))

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

ব্যাখ্যা

(#1=reverse ...)     ;reverse is now accessible with #1# - saves 1 byte. I 
                     ;also need to reverse output of function inside to 
                     ;get extension in correct order
#2=(#1# s)           ;reverse of input string is now accessible with #2#
(search"."#2#)       ;I take reversed string and search for "." to get position of 
                     ;first instance of "." in string from the end of it
(subseq ... 0 ...)   ;get part of reversed string, 
                     ;starting from first character and ending just 
                     ;before first occurance of "."
                     ;this gives reversed extension

আমি বিপরীত স্ট্রিংয়ের সাবস্ট্রিং পাই, 0 থেকে শুরু করে এটি শেষ করব



3

এমএটিএল, 8 7 বাইট

46&YbO)

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

ব্যাখ্যা

        % Implicitly grab input as string
46      % ASCII for '.'
&Yb     % Split the input string at the '.' characters
O)      % Retrieve just the last part
        % Implicitly print the result

3

জাভাস্ক্রিপ্ট (ES5), 38 বাইট

function(s){return s.split(".").pop()}

2
ঠিক তেমনি আপনি জানেন, আপনার উত্তরটি সম্পাদনা করার সময় সম্প্রদায় ব্যবহারকারী দ্বারা ডাউনভোটটি স্বয়ংক্রিয়ভাবে কাস্ট হয়েছিল। আমি এই একটি বাগ বিবেচনা
ডেনিস

প্লিজ ঠিক করতে পারলে পার!
17:56

3

সি #, 33 41 বাইট

a=>a.Split('.').Last();

প্রস্তাবিত হিসাবে সম্পাদনা করুন:

using System.Linq;a=>a.Split('.').Last();

1
আপনাকে using Sytem.Linq;আপনার বাইট গণনাতে অন্তর্ভুক্ত করতে হবে
TheLethalCoder

এবং এছাড়াও a=>a.Split('.').Last();অন্তর্নিহিত রিটার্ন আরও খাটো
TheLethalCoder

প্রস্তাবিত সংশোধন করা হয়েছে জন্য @TheLethalCoder ধন্যবাদ, এখনও এই :) নতুন
LiefdeWen

আমি অবাক হয়েছি এটি ব্যবহার করা আমার সমাধানের চেয়ে দীর্ঘ Path...
TheLethalCoder

3

ওও, 14 13 টি অক্ষর

( 10 9 টি অক্ষরের কোড + 4 অক্ষর কমান্ড লাইন বিকল্প))

{$0=$NF}1

ধন্যবাদ:

নমুনা রান:

bash-4.4$ awk -F. '{$0=$NF}1' <<< $'hi.txt\ncarrot.meme\nlol\nwhat..is..this..file\n.bashrc\nT00M@n3KaPZ.h0wC[]h'
txt
meme
lol
file
bashrc
h0wC[]h

আপনি প্রয়োজন হবে না ;। এবং কেবল FYI, awk '{$0=$NF}1 কাজ করে, কোনও কমান্ড লাইন বিকল্পের প্রয়োজন নেই। ওহ ... আমাকে ক্লান্ত হতে হবে আমি আপনি কি কি আছে দেখতে। আপনার কমান্ড লাইন বিকল্পের দরকার নেই।
রবার্ট বেনসন

1
আপনাকে ধন্যবাদ, @ রবার্টবেনসন। কেন আমি এটি ;সেখানে রেখেছিলাম তা আমার কোনও ধারণা নেই।
manatwork

3

লুয়া , 53 30 বাইট

.খালি স্ট্রিং দিয়ে শেষ পর্যন্ত সমস্ত কিছু প্রতিস্থাপন করে ''

ডাবল প্রথম বন্ধনী কেবলমাত্র প্রথম ফেরতের মান নির্বাচন করতে gsub

কোনও গল্ফিং টিপস স্বাগত, আমি লুয়াতে মরিচা ...

print(((...):gsub('.*%.','')))

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


3

জাভা 8, 52 27 বাইট

s->s.replaceAll(".*\\.","")

এখানে চেষ্টা করুন।

শেষ বিন্দু (এবং বিন্দু নিজেই) কিছু আগে কিছুই প্রতিস্থাপন করুন।

এটি স্প্লিট ( s->s.split("\\.")[s.split("\\.").length-1];) বা সাবস্ট্রিং ( s->s.substring(s.lastIndexOf('.'));) ব্যবহারের চেয়ে কম ।


3

ট্যাক্সি , 1397 বাইট

Go to Post Office:w 1 l 1 r 1 l.Pickup a passenger going to Chop Suey.Go to Chop Suey:n 1 r 1 l 4 r 1 l.[a]Pickup a passenger going to Narrow Path Park.Go to Narrow Path Park:n 1 l 1 r 1 l.Go to Chop Suey:e 1 r 1 l 1 r.Switch to plan "b" if no one is waiting.Switch to plan "a".[b]Go to The Babelfishery:n 1 l 1 l.[c]Go to Fueler Up:n.Go to Joyless Park:n 2 r.Go to Narrow Path Park:w 1 r 3 l.Pickup a passenger going to Cyclone.Go to Cyclone:w 1 l 1 r 2 l.Pickup a passenger going to Crime Lab.Pickup a passenger going to Joyless Park.'.' is waiting at Writer's Depot.Go to Writer's Depot:s.Pickup a passenger going to Crime Lab.Go to Crime Lab:n 1 r 2 r 2 l.Switch to plan "c" if no one is waiting.Go to Narrow Path Park:n 5 l.[d]Pickup a passenger going to Chop Suey.Go to Chop Suey:e 1 r 1 l 1 r.Go to Narrow Path Park:n 1 l 1 r 1 l.Switch to plan "e" if no one is waiting.Switch to plan "d".[e]Go to Joyless Park:e 1 r 3 l.Switch to plan "f" if no one is waiting.Pickup a passenger going to Narrow Path Park.Go to Fueler Up:w 1 l.Go to Narrow Path Park:n 4 l.Switch to plan "e".[f]Go to Narrow Path Park:w 1 r 3 l.[g]Switch to plan "h" if no one is waiting.Pickup a passenger going to KonKat's.Go to KonKat's:e 1 r.Pickup a passenger going to KonKat's.Go to Narrow Path Park:n 2 l.Switch to plan "g".[h]Go to KonKat's:e 1 r.Pickup a passenger going to Post Office.Go to Post Office:s 3 r 1 l.

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

ট্যাক্সি একটি বিপরীত ফাংশন নেই তাই এই খুব দ্রুত বেলুন। যুক্তিটি হ'ল:

  1. স্ট্রিংগুলিকে অক্ষরে বিভক্ত করুন
  2. অ্যারে বিপরীত
  3. একটি পিরিয়ড না পাওয়া পর্যন্ত প্রতিটি মধ্য দিয়ে Iterate করুন, প্রতিটি একটি ফিফোর অ্যারেতে সঞ্চয় করে
  4. অ্যারে খালি করুন (কারণ কেবলমাত্র একটি লাইফোর অ্যারে উপলব্ধ রয়েছে)
  5. লিফোর অ্যারেতে ফিফোর অ্যারে ফেলে দিন
  6. LIFO অ্যারে এবং আউটপুট সংবিধান

3

ভিম, 5 বাইট

$F.d0

ব্যাখ্যা: সর্বশেষে .লাইনে সন্ধান করুন, এর আগে সমস্ত কিছু মুছুন

আর একটি, দীর্ঘতর, তবে আমার মতে 9 বাইটের সাথে এখনও আকর্ষণীয় পন্থা (নতুন লাইনের পিছনে লক্ষ্য করুন)

d/.*\./e

এটি একটি একইভাবে কাজ করে, 5 বাইট (আবারো, নতুন লাইনের পিছনে পিছনে):

d?\.


2

ব্রেন-ফ্লাক , 84 বাইট

এর জন্য +2 অন্তর্ভুক্ত -rc

(()){{}([((((()()()){}())()){}{}){}]({}<>)<>)({()(<{}>)}{})}{}{{}}<>{}{({}<>)<>}<>

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

# Push 1 to start the loop
(())

# Start loop
{{}

  # If TOS == 46 i.e. '.'
  ([((((()()()){}())()){}{}){}]({}<>)<>)({()(<{}>)}{})
  # ^------------------------^ ^-------^ 
  #           This is 46         Also, copy TOS to other stack

# End loop after the first '.'
}{}

# Delete everything from this stack
{{}}

# Delete the '.' that got copied
<>{}

# Copy everything back to reverse it to the correct order
{({}<>)<>}<>

2

জাপট , 6 5 বাইট

q'. o

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

ব্যাখ্যা

 q'. o
Uq'. o
Uq'.    # Split the input at "."
     o # Return the last item

যখন আপনাকে কেবল অ্যারের শেষ আইটেমটি ফেরত দিতে হবে, আপনি তার oজায়গায় ব্যবহার করতে পারেন gJ। (কিছুক্ষণ আগে @ ওবরকনের কাছ থেকে সেই কৌশলটি শিখেছি)
ইটিএইচ প্রোডাকশনগুলি


2

অক্টাভা, 24 বাইট

@(x)strsplit(x,'.'){end}

নামে একটি বেনামি ফাংশন তৈরি করে ansযা স্ট্রিংটিকে ইনপুট হিসাবে গ্রহণ করতে পারে

অনলাইন ডেমো

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