আসুন কিছু মাটির পিএইচ রসায়ন শিখি!


14

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

         সংজ্ঞা | পিএইচ পরিসীমা
                             |
    ------------------------- + + ------------------------ -----   
    আল্ট্রা অ্যাসিডিক | 3.5 এর নিচে
    ------------------------- + + ------------------------ ------
    চরম অ্যাসিড | 3.5 এবং 4.4 এর মধ্যে
    ------------------------- + + ------------------------ ------
    খুব জোরালো অ্যাসিডিক | 4.5 এবং 5.0 এর মধ্যে
    ------------------------- + + ------------------------ ------
    জোরালো অ্যাসিড | 5.1 এবং 5.5 এর মধ্যে
    ------------------------- + + ------------------------ ------
    পরিমিত অ্যাসিড | 5.6 এবং 6.0 এর মধ্যে
    ------------------------- + + ------------------------ ------
    অল্প অ্যাসিড | 6.1 থেকে 6.5 এর মধ্যে
    ------------------------- + + ------------------------ ------
    নিরপেক্ষ | 6.6 এবং 7.3 এর মধ্যে
    ------------------------- + + ------------------------ ------
    সামান্য ক্ষার | 7.4 এবং 7.8 এর মধ্যে 8
    ------------------------- + + ------------------------ ------
    পরিমিতর ক্ষার | 7.9 এবং 8.4 এর মধ্যে
    ------------------------- + + ------------------------ ------
    দৃr়ভাবে ক্ষারীয় | 8.5 এবং 9.0 এর মধ্যে
    ------------------------- + + ------------------------ ------
    খুব দৃ strongly়ভাবে ক্ষারীয় | 9.0 উপর

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

  • ভাসা
  • ডবল
  • আপনার ভাষার স্ট্যান্ডার্ড দশমিক সংখ্যা ডেটা টাইপ
  • দড়ি

এবং আপনাকে অবশ্যই একটি স্ট্রিং আউটপুট করে ডিনমিনেশনকে উপস্থাপন করবে। রসায়ন সম্পর্কিত বিল্ট-ইনগুলি নিষিদ্ধ (দুঃখিত, গণিত!)

আনুমানিক বিধি: আপনি যে পিএইচটি পান সেটি যদি কোনও একটি বর্ণের উপরের সীমানা এবং পরবর্তী একের নীচের সীমানার মধ্যে (যেমন 7..৮ এবং 9.৯ এর মধ্যে) হয় তবে এটি দুটির মধ্যে নিকটতম মানের সাথে সান্নিধ্য হয়: যদি পিএইচ ≥ উপরের দিকে প্রথম + 0.5, তারপরে এটি দ্বিতীয় সম্প্রদায়টি গ্রহণ করতে হবে, তবে যদি পিএইচ <প্রথম + 0.5 এর উপরের সীমানা হয় তবে এটি প্রথমটি গ্রহণ করা উচিত (উদাহরণস্বরূপ 7.85 প্রায় 7.9 এর সাথে সংযুক্ত, তবে 7.84999 প্রায় 7.8 এর সাথে সংযুক্ত)। স্পষ্টতার জন্য পরীক্ষার কেসগুলি দেখুন।

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

ইনপুট -> আউটপুট

6.40 -> সামান্য অ্যাসিড
8.399 -> মাঝারি পরিমাণে ক্ষারীয়
3.876 -> চরম অ্যাসিড
10.60 -> খুব দৃ strongly়ভাবে ক্ষারীয়     
0.012 -> আল্ট্রা অ্যাসিডিক
7.30 -> নিরপেক্ষ
7.85 -> মাঝারিভাবে ক্ষারীয় (আনুমানিক নিয়ম প্রয়োগ করা হয়)
7.849 -> সামান্য ক্ষারীয় (আনুমানিক নিয়ম প্রয়োগ করা হয়)
6.55 -> নিরপেক্ষ (আনুমানিক নিয়ম প্রয়োগ করা হয়)

এটি , তাই সংক্ষিপ্ততম বৈধ জমা (বাইটে) জয়!

* অ্যান্ড্রু যে সাথে আসে নি, এটি উইকিপিডিয়া !


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

হ্যাঁ এটি সত্যিকারের অম্লতা স্তরের সাথে কাজ করে না। লেবুর রসের চেয়ে আরও বেশি অম্লীয় হ'ল অতি অম্লীয়
ধ্বংসাত্মক লেবু

@ আবিষ্কারযোগ্য লেমন যদি লেবুর রস আল্ট্রা অ্যাসিডিক হয় তবে ফ্লুওরন্টিমনোনিক অ্যাসিড , যা −31.3 এর মতো আচরণ করে এটি মোট পারমাণবিক বোমা :))
মিঃ এক্সকোডার

ওহ, আমি দেখতে পেয়েছি আপনি কোথায় ভুল করেছেন। ৩.৫ পিএইচ আলট্রা অম্লীয় নয়, তবে আপনি যে মাটিতে গাছ লাগাচ্ছেন তার মাটি 3.5 পিএইচ হয় তবে এটি আলট্রা অ্যাসিডিক। আমি যা বলতে চাইছি তা হল এই টেবিলটি মাটির ph- কে বোঝায়
ধ্বংসাত্মক লেবু

1
পাইথন বা সুইফট-এর উত্তরের জন্য ব্রাউন পয়েন্ট করেছেন :)
মিঃ এক্সকডার

উত্তর:


6

জেলি ,  77 73  71 বাইট

“£RĿÐƭðṚ°ƲṂṾẒ=ʂXḣsịɠ<»Ḳµ,Ṛ;€"“¡D⁺“a&»j“¿<z»W¤ṙ3
×20<“FYeoy³ƓɗʋṆ‘Sị¢⁾. y

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

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

কিভাবে?

“ ... »Ḳµ,Ṛ;€"“¡D⁺“a&»j“¿<z»W¤ṙ3 - Link 1, name list: no arguments
“ ... »                          - compression of "Ultra Extremely Very.strongly Strongly Moderately Slightly"
       Ḳ                         - split at spaces
        µ                        - monadic chain separation, call that adjectives
          Ṛ                      - reverse adjectives
         ,                       - pair these two lists
              “¡D⁺“a&»           - compression of [" alkaline"," acidic"]
             "                   - zip with:
           ;€                    -   concatenate for €ach
                             ¤   - nilad followed by links as a nilad
                       “¿<z»     -   compression of "Neutral"
                            W    -   wrap in a list
                      j          - join
                              ṙ3 - rotate left by 3: ["Strongly alkaline","Moderately alkaline","Slightly alkaline","Neutral","Slightly acidic","Moderately acidic","Strongly acidic","Very.strongly acidic","Extremely acidic","Ultra acidic","Ultra alkaline","Extremely alkaline","Very.strongly alkaline"]

×20<“FYeoy³ƓɗʋṆ‘Sị¢⁾. y - Main link: number, pH
×20                     - multiply by 20
    “FYeqy³ƓɗʋṆ‘        - code-page indexes = [70,89,101,111,121,131,147,157,169,180]
   <                    - less than? (vectorises)
                        -   i.e.: pH < [3.5,4.45,5.05,5.55,6.05,6.55,7.35,7.85,8.45,9]
                S       - sum
                  ¢     - call last link (1) as a nilad
                 ị      - index into (1-indexed and modular)
                        - ...note that the sum is never 11 or 12, so "Ultra alkaline" and
                        -    "Extremely alkaline" wont be fetched, but that a sum of 0
                        -    fetches "Very.strongly alkaline", as required.
                   ⁾.   - literal list of characters ['.', ' ']
                      y - translate (replace any '.' with a ' ' i.e. for "Very.strongly")
                        - if running as a full program, implicit print

আমি সর্বদা 05AB1E এবং জেলি এর মধ্যে প্রতিযোগিতা উপভোগ করি ... মাত্র 2 বাইট দূরে
মিঃ এক্সকডার

3
জেলি 05AB1E মারছে?!?!?!
এরিক আউটগলফার


4

সি # (.নেট কোর) , 236 বাইট

p=>{var l=new[]{70,89,101,111,121,131,147,157,169,180,280};var a="Ultra,Extremely,Very strongly,Strongly,Moderately,Slighty, acidic,Neutral, alkaline".Split(',');int i=0;for(;p*20>=l[i];i++);return i==6?a[7]:i<6?a[i]+a[6]:a[12-i]+a[8];}

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

এই সমাধানটি p14 এর চেয়ে বেশি হতে পারে না বলে বিবেচনা করে ।


4

টি-এসকিউএল, 305 299 বাইট

DECLARE @ char(999)=REPLACE(REPLACE(REPLACE(REPLACE('SELECT TOP 1i FROM(VALUES(''Very s$#9&S$#8.4&Moderately#7.8&Slightly#7.3&Neutral'',6.5&Slightly@6&Moderately@5.5&S$@5&Very s$@4.4&Extremely@3.4&Ultra@-1))x(i,j),t WHERE j<a','#',' alkaline'','),'@',' acidic'','),'&','),('''),'$','trongly')EXEC(@)

ইনপুট পূর্ব বিদ্যমান টেবিল মারফত টি দিয়ে DECIMAL(4,1)কলাম একটি , আমাদের ইনপুট / আউটপুট নিয়ম অনুযায়ী

DECIMAL(4,1)ডেটা টাইপের কারণে মানটি ইনপুট সারণিতে প্রবেশ করার পরে যে কোনও "আনুমানিক নিয়ম" রাউন্ডিং হয়, সুতরাং আমার কোড দ্বারা সুস্পষ্টভাবে পরিচালনা করার দরকার নেই।

স্পেস-সেভিংয়ের কাজ REPLACESসম্পাদন করার পরে , এটি একটি সাধারণ এসকিউএল কোয়েরি যা আমাদের মূল্যবোধের তালিকার সাথে আমাদের ইনপুট টেবিলে যোগ দেয়:

SELECT TOP 1 i
FROM(VALUES
    ('Very strongly alkaline',9),
    ('Strongly alkaline',8.4),
    ('Moderately alkaline',7.8),
    ('Slightly alkaline',7.3),
    ('Neutral',6.5),
    ('Slightly acidic',6),
    ('Moderately acidic',5.5),
    ('Strongly acidic',5),
    ('Very strongly acidic',4.4),
    ('Extremely acidic',3.4),
    ('Ultra acidic',-1)
) x(i,j), t
WHERE j<a

আমি অর্ডারটি বিপরীত করি তাই TOP 1প্রথমটি আমাদের ইনপুট মানের থেকে কম less

এমনকি এই ফর্মটি (লাইন ব্রেক এবং অতিরিক্ত স্থানগুলি সরিয়ে দেওয়ার পরে) 318 বাইটে বেশ ভাল । এর মাথার উপরে যোগ করার পদ্ধতি DECLARE, REPLACESএবং EXECশুধুমাত্র সমস্ত পুনরাবৃত্তি বাক্যাংশ সঙ্গে এটা মূল্য হয়ে যায়।

সম্পাদনা : বিভিন্ন মানগুলিতে অপ্রয়োজনীয় ".0" অপসারণ করে 6 বাইট সংরক্ষণ করুন


3

05AB1E , 81 80 79 77 76 74 বাইট

'Ĉ“¢³¿™ly³¾‚Òw““³¾§ÓªÅ“«#¦¦’šÉaƒ£’«Š’w¡Îic’«)˜™'wð:I•t{~À•ST+.¥70+20/‹Oè

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

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

ব্যাখ্যা

'Ĉ                   # push the string "neutral"
“¢³¿™ly³¾‚Òw“         # push the string "slightly moderately strongly veryw"
“³¾§ÓªÅ“              # push the string "strongly extremely ultra"
«                     # concatenate the top 2 items on the stack
 #                    # split on spaces
  Â                   # push a reversed copy
   ¦¦                 # remove the first 2 elements of the copy ("ultra", "extremely")
’šÉaƒ£’«              # append the string "walkaline" to each ("walk"+"a"+"line")
        Š             # move down 2 places on the stack
’w¡Îic’«              # append the string "wacidic" to each ("w"+"acid"+"ic")
        )˜            # wrap stack in a list and flatten
          ™           # title case each
           'wð:       # replace each instance of "w" with a space
I                     # push input
 •t{~À•               # push the base 255 compressed number 920006021
       ST+            # split to list of digits and add 10 to each
          .¥          # undelta (compute increments from 0)
            70+       # add 70 to each
               20/    # divide each by 20
                  ‹   # compute input less than for each
                   O  # sum
                    è # use this to index into list of strings

এটি আশ্চর্যজনকভাবে 05AB1E এর জন্য দীর্ঘ
মিস্টার এক্সকোডার

পার্টিতে দেরীতে হলেও তবুও কৌতূহল: কেউ কি এই ভাষায় সরাসরি প্রোগ্রাম করে (এমনকি কেবল কোড গল্ফিংয়ের জন্য হলেও) বা এটি কোনও "সংকলক" এর আউটপুট?
avl42

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

1
@ এমিগনা আমি "ব্যাখ্যা" না করে "অনুবাদিত" বলব (এটি বিপরীত অর্থের
একধরণের

@ অ্যানটোলিগ: হ্যাঁ, আপনি ঠিক আছেন are আমি সবসময় কোনও কারণে ব্যাখ্যা করা ভাবি, সম্ভবত পাইথনের কারণে। এটি একটি অনুবাদিত ভাষায় অনুবাদ করা হয়েছে :)
এমিগানা

2

রেটিনা , 228 বাইট

$
.00
\.(.)\.?(.).*
$1$2
.+
$*
1{900,}
VA
1{845,}
STA
1{785,}
MA
1{735,}
SLA
1{655,}
Neutral
1$
1 acidic
1{605,}
SL
1{555,}
M
1{505,}
ST
1{445,}
V
1{350,}
Extremely
1+
Ultra
M
Moderately
V
Very sT
T
trongly
L
lightly
A
 alkaline

এটি অনলাইন চেষ্টা করুন! লিঙ্কে পরীক্ষার স্যুট অন্তর্ভুক্ত। ব্যাখ্যা:

$
.00
\.(.)\.?(.).*
$1$2

দশমিক বিন্দু এবং তার পরে দুটি অঙ্ক বাদে দশমিক বিন্দু এবং সমস্ত দুটি মুছে ফেলার পরে অতিরিক্ত দশমিক বিন্দু এবং দুটি শূন্যের প্রত্যয় করে ইনপুটটি 100 দ্বারা গুণান।

.+
$*

অ্যানারিতে রূপান্তর করুন।

1{900,}
VA
1{845,}
STA
1{785,}
MA
1{735,}
SLA

সমস্ত ক্ষারগুলি হ্যান্ডেল করুন, সংক্ষেপে রূপান্তর করুন যা পরে প্রসারিত হবে।

1{655,}
Neutral

নিরপেক্ষ হ্যান্ডেল করুন।

1$
1 acidic

যে কোনও কিছুই বাকি থাকতে হবে অ্যাসিডিক। (তবে পিএইচ 0.001 এর ক্ষেত্রে 1 টি ছেড়ে দিন)

1{605,}
SL
1{555,}
M
1{505,}
ST
1{445,}
V
1{350,}
Extremely
1+
Ultra

সমস্ত অ্যাসিড হ্যান্ডেল করুন।

M
Moderately
V
Very sT
T
trongly
L
lightly
A
 alkaline

সংক্ষিপ্ত বিবরণ প্রসারিত করুন।


বাহ, আমি মনে করি এটি নিচে নেমে কিছুটা সময় নিয়েছে ...
মিঃ এক্সকডার

2

পাইথন 2 , 202 বাইট

-15 বাইটস @ জোনাথন অ্যালানকে ধন্যবাদ

lambda k:'Neutral_Slightly_Moderately_Strongly_Very strongly_Extremely_Ultra'.split('_')[abs(sum(round(k*10)>ord(i)for i in'",27<AINT')+(k>9)-(3.45<k<3.5)-6)]+(' acidic'*(k<6.55)or' alkaline'*(k>=7.35))

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


2
আপনি আমার ব্রাউন পয়েন্ট নিয়েছেন।
মিঃ এক্সকোডার

2

জাভাস্ক্রিপ্ট (ES6), 192 189 185 184 বাইট

k=>([...'09544474540'].some(n=>(i--,k-=++n)<0,i=7,k=k*10-33.5),'Neutral,Slightly,Moderately,Strongly,Very strongly,Extremely,Ultra'.split`,`[i<0?-i:i]+(i?i>0?' acidic':' alkaline':''))

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


1

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

=CHOOSE((A1<6.55)+(A1<6.05)+(A1<5.55)+(A1<5.05)+(A1<4.45)+(A1<3.5)+(A1>=7.35)+(A1>=7.85)+(A1>=8.45)+(A1>9)+1,"Neutral","Slightly","Moderately","Strongly","Very Strongly","Extremely","Ultra")&IF(A1<6.55," acidic",IF(A1>=7.35," alkaline",""))

0

জাভাস্ক্রিপ্ট, 222 209 বাইট

x=>'Very strongly,Strongly,Moderately,Slightly,Neutral,Extremely,Ultra'.split(',',7,x-=0.049)[x>9?0:x>8.4?1:x>7.8?2:x>7.3?3:x>6.5?4:x>6?3:x>5.5?2:x>5?1:x>4.4?0:x>3.5?5:6]+(x<6.5?' acidic':x>7.3?' alkaline':'')

তবুও একটু গল্ফ করছে

var f = x=>'Very strongly,Strongly,Moderately,Slightly,Neutral,Extremely,Ultra'.split(',',7,x-=0.049)[x>9?0:x>8.4?1:x>7.8?2:x>7.3?3:x>6.5?4:x>6?3:x>5.5?2:x>5?1:x>4.4?0:x>3.5?5:6]+(x<6.5?' acidic':x>7.3?' alkaline':'')

console.log(f(6.40));
console.log(f(8.399));
console.log(f(3.876));
console.log(f(10.60));
console.log(f(0.012));
console.log(f(7.30));
console.log(f(7.85));
console.log(f(7.849));
console.log(f(6.55));


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