যে সংখ্যাগুলি আসলে অক্ষর


42

একটি অ-নেতিবাচক পূর্ণসংখ্যার ইনপুট দেওয়া হয়েছে, এমন একটি প্রোগ্রাম লিখুন যা সংখ্যাটিকে হেক্সাডেসিমালে রূপান্তরিত করে এবং সত্যের মান প্রদান করে যদি সংখ্যার হেক্সাডেসিমাল ফর্মটিতে কেবলমাত্র অক্ষর Aথাকে Fএবং অন্যথায় একটি মিথ্যা মান থাকে।


পরীক্ষার মামলা

10
==> True (A in hexadecimal)

100
==> False (64 in hexadecimal)

161
==> False (A1 in hexadecimal)

11259375
==> True (ABCDEF in hexadecimal)

0
==> False (0 in hexadecimal)

বোনাস: -40 বাইটস যদি আপনার প্রোগ্রামটি Only lettersউপরে বর্ণিত চ্যালেঞ্জের জন্য প্রিন্ট করে , Only numbersযদি সংখ্যার হেক্সাডেসিমাল সংস্করণে কেবলমাত্র অঙ্ক থাকে 0-9এবং Mixযদি হেক্সাডেসিমাল সংখ্যায় অন্তত একটি সংখ্যা এবং কমপক্ষে একটি বর্ণ থাকে।


এটি কোড গল্ফ। স্ট্যান্ডার্ড বিধি প্রয়োগ। বাইটস মধ্যে সংক্ষিপ্ত কোড। ফাংশন বা সম্পূর্ণ প্রোগ্রাম অনুমোদিত হয়।


2
বর্তমানে গল্ফিকালে একটি উত্তর খসড়া করছেন।
সুপারজেডি ২৪

আমার বর্তমান ধারণা: বেস 16 স্ট্রিংয়ে NaN
প্রচ্ছন্ন

@ কিউস আপনার ভাষার পছন্দ অনুসারে এটি কাজ করতে পারে
সুপারজেডি ২৪

3
অবাস্তব বোনাস (আবারও): কেবল স্ট্রিংটি MixOnlynumbersletters21 টি অক্ষর
edc65

3
আপনি "ধনাত্মক পূর্ণসংখ্যা ইনপুট" বলছেন তবে 0 এটি একটি পরীক্ষার কেস।
xnor

উত্তর:


22

পাইথ, 43 - 40 = 3 বাইট

?&K@J.HQG-JG"Mix"%"Only %sers"?K"lett""numb

পরীক্ষা স্যুট

এটি বোনাস অর্জন করে। Only numbersএবং Only lettersভাগ্যক্রমে কেবল 4 টি বর্ণ দ্বারা পৃথক। মুদ্রণ-স্টাইল বিন্যাসটি ব্যবহার করা হয় %

নির্বাচন ব্যবস্থা উভয় দ্বারা হেক্সের ছেদটি Gবর্ণমালার সাথে , বর্ণমালা নিয়ে এবং বিয়োগ করে নেওয়া হয় G। যদি দু'টিই মিথ্যা না হয়ে থাকে তবে এটি একটি মিশ্রণ, যদি ছেদটি মিথ্যা হয় তবে এটি সংখ্যা এবং যদি বিয়োগটি মিথ্যা হয় তবে তা অক্ষর।


1
এই পাইথ অদ্ভুত। আপনি যদিও একটি নেতিবাচক স্কোর পেতে পারে খুব শীতল হবে।
KaareZ


12

জেলি , 6 বাইট

b16>9P

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

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

b16>9P  Input: z

b16     Convert the input to base 16.
   >9   Compare each resulting digit with 9; return 1 iff greater.
     P  Take the product of the resulting Booleans.

এখানে কি 16 টি বিল্ট ইন নেই বা এটি কোনও জিনিস নয়?
ক্যালকুলেটরফলাইন

1
সেখানে এখন. এই প্রথম জেলি উত্তর অন্যতম ...
ডেনিস

11

টিস্ক্রিপ্ট , 11 বাইট 13 15 16

xT(16)O(Sz)

বেশ সহজ. এটি টিস্ক্রিপ্ট ২.০ ব্যবহার করে। আপনি গিথুব থেকে এই সংস্করণটি পেতে পারেন

ব্যাখ্যা

        // Implicit: x = input, Sz = alphabet
xT(16)  // input -> hex
O(Sz)   // Only letters?

এটি অনলাইনে চেষ্টা করুন (ওয়েবে সামান্য সংশোধিত সংস্করণ যা কাজ করে)


3
ডাউন-ভোট কি দীর্ঘায়িত হওয়ার কারণে? এই উত্তরটির সাথে অন্য কোনও ভুল আছে যা সম্পর্কে আমি অবগত নই? অথবা কেউ এই উত্তরটি ব্যক্তিগতভাবে পছন্দ করে না?
ডাউনওয়েট

2
আমি বলব না 16 বা 13 বাইট দীর্ঘ!
লুইস মেন্ডো

23
আপনাকে স্বীকার করতে হবে যে আপনার পোস্টগুলি নিখুঁতভাবে লোভনীয়।
ডেনিস

10

পাইথন, 24 বাইট

lambda n:min('%x'%n)>'9'

ইনপুটটিকে একটি হেক্স স্ট্রিং ( 0xউপসর্গ ব্যতীত) রূপান্তর করে '%x'%n। উপরে রয়েছে '9'কিনা তা দেখে এর সমস্ত অক্ষর (কোন বর্ণগুলি minহ'ল ) এর চেয়ে বড় কিনা তা দেখুন '9'


পাইথন কীভাবে অক্ষর / সংখ্যা পরিচালনা করে তা আমি জানি না, তবে এর ASCII কোডটি '9'54 is তাই আপনি যদি লিখতে পারেন তবে আপনি ...>54বাইট সংরক্ষণ করতে পারেন।
CompuChip

@ কমপুকশিপ পাইথন অক্ষর বা স্ট্রিংগুলিকে সংখ্যা হিসাবে বিবেচনা করে না। আসলে পাইথন 2 এগুলিকে সমস্ত সংখ্যার চেয়ে বড় বলে মনে করে।
xnor

8

এমএটিএল , 10

i16YA1Y2mA

উদাহরণ

>> matl i16YA1Y2mA
> 240
0
>> matl i16YA1Y2mA
> 255
1

ব্যাখ্যা

i       % input                         
16YA    % convert to string representation in base 16
1Y2     % predefined literal: 'A':'Z'
m       % true for set member             
A       % all

বোনাস চ্যালেঞ্জ: 53-40 = 13

i16YA1Y2mXKA?'Only letters'}Ka?'Mix'}'Only numbers']]

উদাহরণ

>> matl
 > i16YA1Y2mXKA?'Only letters'}Ka?'Mix'}'Only numbers']]
 > 
> 255
Only letters

>> matl
 > i16YA1Y2mXKA?'Only letters'}Ka?'Mix'}'Only numbers']]
 > 
> 100
Only numbers

>> matl
 > i16YA1Y2mXKA?'Only letters'}Ka?'Mix'}'Only numbers']]
 > 
> 240
Mix

ব্যাখ্যা

i                       % input                                                 
16YA                    % convert integer to string representation in base 16
1Y2                     % predefined literal: 'A':'Z'
m                       % true for set member       
XK                      % copy to clipboard K                 
A                       % all                                   
?                       % if (top of the stack)                 
  'Only letters'        % string literal                                        
}                       % else                 
  K                     % paste from clipboard K      
  a                     % any                
  ?                     % if (top of the stack)      
    'Mix'               % string literal    
  }                     % else                                                  
    'Only numbers'      % string literal           
  ]                     % end             
]                       % end          

2
হুমমম এ কি? মতলব মনে হচ্ছে এখন কিছু নিউক শক্তি পেয়েছে!
Abr001am

@ আগওয়া 1001 হাহাহা। বাছাই করুন
লুইস মেন্ডো


8

সি, 46 43 37 বাইট

এখন আরও পুনরাবৃত্তি! (ধন্যবাদ ডেনিস):

F(x){return(x%16>9)*(x<16?:F(x/16));}

বোনাস: এমনকি ছোট (33 বাইট), তবে ব্যর্থ x = 0:

F(x){return!x?:(x%16>9)*F(x/16);}

b;F(x){for(b=x;x;x/=16)b*=x%16>9;return b;}

F()গ্রহণ করে intএবং হয় 0(মিথ্যা) অথবা শূন্য (সত্য) হয় না

আমি বোনাস অর্জনের চেষ্টাও করি নি, "MixOnly lettersnumbers"23 বাইট একা নিই , নতুন শর্তটি অনুসরণ করতে 9 অতিরিক্ত বাইটের দরকার হবে, printf()এটি 8 বাইট, যা 40 পর্যন্ত যোগ করে, প্রচেষ্টাটি বাতিল করে দেয়।

পরীক্ষার মূল:

#include <stdio.h>

int main() {
  int testdata[] = {10, 100, 161, 11259375, 0};
  for (int i = 0; i < 5; ++i) {
    int d = testdata[i];
    printf("%d (0x%x) -> %s\n", d, d, F(d)?"yep":"nope");
  }
}

কি ?:? ||এটি সংকলন পেতে আমাকে এটির সাথে প্রতিস্থাপন করতে হয়েছিল । এছাড়াও, তুমি কি প্রতিস্থাপন দ্বারা একটি বাইট সংরক্ষণ *একটি সঙ্গে &এইভাবে এড়ানো ()বাম গুলি (যদিও আপনি তারপর একটি স্পেস যোগ আছে)?
নীল

@ নীল a?:bএকটি জিএনইউ এক্সটেনশন যা মূল্যায়ন করে aযদি aসত্যবাদী মান হয় না, অন্যথায় b। নাল পয়েন্টারগুলির মতো হ্যান্ডেল করতে আসে send(message ?: "(no message)");। আমি জানি এটি পোর্টেবল নয় তবে কোড গল্ফে কোড বহনযোগ্যতা কখনই উদ্বেগ নয় :)
স্টেফানো সানফিলিপো

@ স্টেফানোসানফিলিপো এটি করে আপনি এটি 33বাইটে নামাতে পারবেন : F(x){x=(x%16>9)*(x<16?:F(x/16));}এটি একটি (জিসিসি) বাগের অপব্যবহার করে যেখানে কোনও ফাংশনে কোনও রিটার্ন ভেরিয়েবল না থাকলে এবং মূল তর্কটি সেট করা হয়, এটি কিছু ক্ষেত্রে মূল যুক্তিকে স্বয়ংক্রিয়ভাবে ফিরিয়ে দেবে ( কী যুক্তিযুক্ত ছিল তার উপর ভিত্তি করে), এবং এটি এর মধ্যে অন্যতম ঘটবে! অনলাইনে এটি ব্যবহার করে দেখুন: বিট.ly
অ্যালবার্ট রেনশো

8

পাইথন 3, 30 29 বাইট

1 বাইট সিসেরেক এবং পাইথন 3 কে ধন্যবাদ ছিনিয়ে নিয়েছে ।

lambda n:hex(n)[2:].isalpha()

সরল lambdaএবং কাটা।



7

গণিত, 32 বাইট

Tr@DigitCount[#,16,0~Range~9]<1&

ব্যাখ্যা:

                               &   A function returning whether
Tr@                                 the sum of elements of
   DigitCount[ ,  ,         ]        the numbers of
                   0~Range~9          zeros, ones, ..., nines in
                16                    the hexadecimal expansion of
              #                       the first argument
                             <1     is less than one.

7

জাভাস্ক্রিপ্ট, ES6, কোন regexp, 28 বাইট

F=n=>n%16>9&&(n<16||F(n>>4))

এই 27-বাইট সংস্করণটিও রয়েছে তবে এটি বিপরীত মানটি দেয়।

F=n=>n%16<10||n>15&&F(n>>4)

নিস! আপনি এটি 23 বাইটের জন্য এটির মতো পুনর্বিন্যাসও করতে পারেন:F=n=>!n||n%16>9&F(n>>4)
ব্যবহারকারীর16565

@ user81655 - দুর্ভাগ্যক্রমে, সংস্করণটি 0 এর জন্য সত্য দেয়, তাই এটি ভুল।
জোকি

ওহ ঠিক আছে, আমি অনুমান করি যে তখন সবচেয়ে কম হবে F=n=>n%16>9&&n<16|F(n>>4)
ব্যবহারকারী 81655

@ ইউজার ৮১65৫৫ আমি নিশ্চিত যে আপনাকে শর্ট সার্কিট করতে হবে ||, তবে আমি মনে করি আপনি সে ক্ষেত্রে ব্যবহার &না করে পালিয়ে যেতে পারবেন &&
নীল

@ নীল কেন? আপনি এটি পরীক্ষা করেছেন?
ব্যবহারকারী 81655

7

জুলিয়া, 18 বাইট

n->isalpha(hex(n))

এটি একটি বেনামে ফাংশন যা কোনও পূর্ণসংখ্যা গ্রহণ করে এবং একটি বুলিয়ান দেয়। এটি কল করার জন্য, এটির একটি নাম দিন f=n->...

ইনপুট ব্যবহার করে একটি হেক্সাডেসিমেল স্ট্রিং রূপান্তরিত হয় hex, তাহলে আমরা কিনা তা পরীক্ষা করুন তার সম্পূর্ণরূপে ব্যবহার বর্ণমালা গঠিত isalpha


6

জাভাস্ক্রিপ্ট ES6, 29

কোনও বোনাস নেই

n=>!/\d/.test(n.toString(16))

-40 এর নতুন মান সহ বোনাস এখন আরও কাছাকাছি ... তবে যথেষ্ট নয়। বোনাস স্কোর 70 71 - 40 => 30 31

n=>/\d/.test(n=n.toString(16))?1/n?'Only numbers':'Mix':'Only letters'

পরীক্ষার স্নিপেট (ইনপুট বাক্সের ভিতরে একটি নম্বর টাইপ করুন)

#I { width:50%}
<input id=I oninput="test()"/><br>
Hex <span id=H></span><br>
Result <span id=R></span>



@ ক্যাটস এয়ারফ্লুফি যদি এন 'এ' এর মতো সংখ্যা না হয় (এটি এই চ্যালেঞ্জের পুরো বিষয়), ~n == -1যখন-n-1 == NaN
এডসি 65



4

জাভা, 46 44 38 বাইট

i->i.toHexString(i).matches("[a-f]+");

খুব সহজ ওয়ান-লাইনার যা পূর্ণসংখ্যাকে হেক্সাডেসিমাল স্ট্রিংয়ে রূপান্তরিত করে এবং সমস্ত অক্ষর অক্ষর কিনা তা নির্ধারণ করার জন্য রেজেক্স ব্যবহার করে।

-2 বাইটস @ ইঞ্জিফুয়েডকে ধন্যবাদ।


"[a-f]+"2 বাইট সংরক্ষণ করতে হবে।
ইঞ্জিফুয়াড

516 এর জন্য ব্যর্থ ..
ক্যালকুলেটরফলাইন


ভাল এখন এটি নির্ধারণ করে যে স্ট্রিংটিতে একটি হেক্স লেটার রয়েছে , তাই +এটি বাইটের অপচয় waste
ক্যালকুলেটরফলাইন

@CatsAreFluffy নং matches ফেরৎ সত্য সমগ্র স্ট্রিং দেওয়া Regex দ্বারা মেলানো যাবে যদি। [a-f]প্লাস চিহ্ন ছাড়া এটি ভুল হয় কারণ এটিতে একের অধিক অক্ষর থাকা সম্পূর্ণ স্ট্রিংয়ের সাথে মেলে না ; এটি কেবলমাত্র যদি একটি বৈধ অক্ষর উপস্থিত থাকে would
টিএনটি


3

রুবি, 19 বাইট

->n{!('%x'%n)[/\d/]}

Ungolfed:

-> n {
  !('%x'%n)[/\d/]
}

ব্যবহার:

f=->n{!('%x'%n)[/\d/]} # Assigning it to a variable
f[0]
=> false
f[10]
=> true
f[100]
=> false
f[161]
=> false
f[11259375]
=> true

বোনাস সহ, 70 - 40 = 30 বাইট

->n{'%x'%n=~/^(\d+)|(\D+)$/;$1?'Only numbers':$2?'Only letters':'Mix'}

ব্যবহার:

f=->n{'%x'%n=~/^(\d+)|(\D+)$/;$1?'Only numbers':$2?'Only letters':'Mix'}
f[10]
=> Only letters
f[100]
=> Only numbers
f[161]
=> Mix

দেরীতে, তবে '%x'%n!~/\d/একটি সমাধানের জন্য একটি সংক্ষিপ্ত চেক এবং সমাধান দুটিতে কাঁচা বাইট গণনা রয়েছে 75, না 75
মান ইঙ্ক

3

পার্ল, 69 - 40 = 29 বাইট

$_=sprintf"%X",<>;print s/\d//?$_?"Mix":"Only numbers":"Only letters"

2

সিলোন, 55 বাইট

Boolean l(Integer n)=>!any(formatInteger(n,16)*.digit);

সোজা ... আমরা nএকটি হেক্সাডেসিমাল সংখ্যা (যা একটি স্ট্রিং উত্পাদন করে) হিসাবে ফর্ম্যাট করি , সেই স্ট্রিংয়ের প্রতিটি অক্ষরকে .digitনম্বরটি (যা এটি একটি অঙ্ক হলে সত্য প্রত্যাবর্তিত হয়) কল করে , তারপরে কোনওটি সত্য কিনা তা পরীক্ষা করে দেখুন, তবে এটিকে অবহেলা করুন।

বোনাস সহ সংস্করণটির 119-25 = 94 এর অনেক বেশি স্কোর রয়েছে :

String c(Integer n)=>let(s=formatInteger(n),d=s*.digit)(every(d)then"Only numbers"else(any(d)then"Mix"else"Only letters"));

আমি নিশ্চিত না যে কীভাবে কেউ বোনাস সংস্করণটি নো-বোনাস সংস্করণের চেয়ে ভাল করার পক্ষে যথেষ্ট সংক্ষিপ্ত করে তুলতে পারে এমনকি এমন একক স্ট্রিংয়ের দৈর্ঘ্য 28 একসাথে রয়েছে। সম্ভবত এমন একটি ভাষা যা সত্যবাদী / মিথ্যা মান তৈরি করতে সত্যই শক্ত করে তোলে।

এখানে একটি ফর্ম্যাট সংস্করণ:

String c(Integer n) =>
        let (d = formatInteger(n,16)*.digit)
    (every(d) then "Only numbers"
                else (any(d) then "Mix"
                    else "Only letters"));

2

মরিচা, 70 বাইট

fn f(n:i32)->bool{format!("{:x}",n).chars().all(|c|c.is_alphabetic())}

কারণ, আপনি জানেন, জাভা জং।

এটি আসলে বেশ মার্জিত, যদিও:

format!("{:x}", n)         // format n as hex (:x)
  .chars()                 // get an Iter over the characters
  .all(                    // do all Iter elements satisfy the closure?
    |c| c.is_alphabetic()  // self-explanatory
  )

তবে এটি একটি লজ্জার বিষয় যা ফাংশন সংজ্ঞা বয়লারপ্লেট এত দীর্ঘ ....: পি


আমার একটা পরিকল্পনা আছে. আরও বন্ধ!
ক্যালকুলেটরফলাইন


2

সিরিয়াসলি, 12 বাইট

4ª,¡OkúOkd-Y

হেক্স ডাম্প:

34a62cad4f6b
a34f6b642d59

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

এটি অন্যান্য স্ট্যাক ভাষার উত্তরগুলির মতো। সিরিয়াসলি এখনও স্ট্রিং বিয়োগকে সমর্থন করলে এটি কেবল 7 বাইট হবে।

সম্পাদনা: গুরুতরভাবে এখন স্ট্রিং বিয়োগ সমর্থন করে এবং নিম্নলিখিত 7 বাইট সমাধান এখন কাজ করে:

ú4╙,¡-Y

হেক্স ডাম্প:

a334d32cad2d59

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


1
11: 4╙,¡#S;ú∩S=(অথবা অথবা , অনেকগুলি উপায় বানান :16:দুই বাইটে: পি)
ঐ মেগো

আমি এসআই ভাবো জানি না।
কুইন্টোপিয়া

2

05 এ বি 1 , 2 বাইট (প্রতিযোগী নয়)

কোড:

ha

হা! তাও দুটো বাইট! দুঃখের সাথে অ-প্রতিদ্বন্দ্বিতা করা হচ্ছে কারণ এই ভাষা চ্যালেঞ্জ পোস্ট করার পরে :(

ব্যাখ্যা:

h   # Convert input to hexadecimal
 a  # is_alpha, checks if the value only contains letters

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


1
hdÔ©1åi•4?ŸâτΛ•}®0åi•4?ŸàpÕTà•}®g2Qi•²Bon 36B` বোনাসের ফলে ... আরও 6 টি! উওউ বোনাস!
ম্যাজিক অক্টোপাস উরান



2

স্মাইলব্যাসিক 3.2.1, 78 বাইট

INPUT V FOR I=0 TO 9
IF INSTR(HEX$(V),STR$(I))>-1 THEN ?"FALSE"END
NEXT?"TRUE"

আমি এখানে কোনও অ-এসসিআইআই অক্ষর দেখতে পাচ্ছি না (কিছু না থাকলে); এই কাউন্টারটি স্থির সিদ্ধান্ত গ্রহণকারী এবং এটি বলে 81
বিড়াল

1
এটি কার্যকর নয় যে বাস্তবায়নটি ইউটিএফ -16 অভ্যন্তরীণভাবে ব্যবহার করে; বিশ্বের অন্যান্য জায়গাগুলিতে তারা পাশাপাশি ইউটিএফ -8 অক্ষর হতে পারে 0-127, সুতরাং আপনার বাইট গণনা 81
বিড়াল

প্রতিক্রিয়াটির জন্য ধন্যবাদ, নিশ্চিত ছিল না যে "বাইটস" বলতে চাইলে প্রতি চার্জে আমার 2 টি গণনা করা উচিত। 81 এটি।
শামুক_১

আসলে, বর্তমান + + 10 / -0 ঐক্যমত্য (যা উপায় দ্বারা, আমি এখন সঙ্গে মতানৈক্য) আমরা সবসময় যে একজন দোভাষী ব্যবহারসমূহ এনকোডিং ব্যবহার করা আবশ্যক নয়। আপনি যদি একমত না হন তবে দয়া করে এই প্রশ্নে একটি ভিন্ন মতামত পোস্ট করুন।
lirtosiast

@ থমাসকওয়া পিএফটি, ঠিক আছে, উফ, এখন আমি আরও ভাল করে জানি। আমি বুঝতে পারি নি যে সে সম্পর্কে conক্যমত্য রয়েছে এবং আমি মেটাতে বেশ কিছুটা সময় ব্যয় করি।
বিড়াল

1

জাপট, 12 বাইট

!UsG r"[a-f]

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

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

!UsG r"[a-f] // Implicit: U = input integer, G = 16
 UsG         // Convert U to a base-16 string.
     r"[a-f] // Replace all lowercase letters with an empty string.
!            // Take the logical NOT of the result.
             // This returns true for an empty string; false for anything else.

আমি মনে করি !!UsG r"\\dএকটি বাইট কাজ এবং সংরক্ষণ করতে পারে
ডাউনগোট

@ ডাউনগোট ভাল পর্যবেক্ষণ, তবে যে কোনও সংখ্যায় একটি চিঠি রয়েছে তার পক্ষে এটি সত্য returns
ইটিএইচ প্রডাকশনগুলি

1

গেম, 41 অক্ষর

*=@c{@radix{10;16;*}}
c:<D>=f@end;?=;\Z=t

জেমায় কোনও বুলিয়ান নেই, সুতরাং এটি কেবল "টি" বা "চ" আউটপুট করে।

নমুনা রান:

bash-4.3$ echo -n '11259375' | gema '*=@c{@radix{10;16;*}};c:<D>=f@end;?=;\Z=t'
t
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.