Giriş
Yardım et! Yanlışlıkla TI-84 hesap makinemi penceremin dışına çıkardım (nasıl olduğunu sorma) ve bozuldu. Yarın bir matematik sınavım var ve bulabildiğim tek hesap makinesi şu düğmelerle bir tane:
7 8 9 +
4 5 6 -
1 2 3 *
0 = /
Matematik sınavım ifadeleri değerlendirmek için bir inceleme sınavı. Böyle bir ifadeyi almak 1+(5*4)/7
ve onu yedek hesap makinemde çözmek için gereken tuş vuruşlarına dönüştürmek için bir programa ihtiyacım var . (Ve merak ediyorsanız, bu aslında başıma geldi).
Meydan okuma
İhtiva eden, boş olmayan bir giriş bir dizge sadece karakterler 0-9
, (
, )
, +
, -
, *
, ve /
çıkış, bir boşluk ile ayrılmış dizede tuş (örneğin. 1 + 3 / 3 =
). Çıktının sonunda her zaman eşit bir işaret bulunmalıdır. Standart boşluklara izin verilmez.
Örnekler:
- Giriş:,
1+(5*4)/7
Çıkış:5 * 4 / 7 + 1 =
- Giriş:,
6*(2/3)
Çıkış:2 / 3 * 6 =
- Giriş:,
(7-3)/2
Çıkış:7 - 3 / 2 =
Bu zorluğu kolaylaştırmak için:
- Girişin, hesap makinesinin temizlenmesini gerektirmeyen bir dizi tuş vuruşuna sahip olduğunu varsayabilirsiniz (
1-(7*3)
bulmanız gerekeceği için geçerli değildir7 * 3
, daha sonra hesap makinesini temizlemenizi gerektirir1 - 21
. Yukarıdaki tüm örnekler geçerlidir. , kullanıcının hesap makinesini temizlemesini ve bir numarayı hatırlamasını gerektirmeyen sürekli çıkış). - İlk varsayımdan geçmeyecek
/
bir girdi olduğu gibi, a'dan sonra sadece tek bir tamsayı olacağını varsayabilirsiniz21/(7*3)
. - Her zaman
*
bir tamsayı ile sol parantez arasında bir ilişki olacağını varsayabilirsiniz (Geçerli:,6*(7)
Geçersiz:)6(7)
. - Girişin her zaman tam sayı çıktı ürettiğini varsayabilirsiniz.
- Girişin yalnızca üç parantez düzeyine sahip olduğunu varsayabilirsiniz.
Sigara örnekler
2-(14/2)
yapmanız gereken gibi14 / 2
, daha sonra temizleyin , sonra2 - 7
.36/(2*3)
yapmanız gereken gibi2 * 3
, daha sonra temizleyin , sonra36 / 6
.1024*4/(1*2+2)
yapmanız gereken gibi1*2+2
, daha sonra temizleyin , sonra1024 * 4 / 4
.
Bonuslar
- -5% eğer programınız parantez çarpımını tanırsa (bunu bilir
6(7)=6*(7)
). - -5% programınız ondalık sayılarla giriş imkanı varsa (
3.4
,2.75
,7.8
) ve çıkış içerir.
: (a olmalıdır olarak.
bu durumda Boş hesap makinesinde anahtarı). - -5%, eğer programınız sınırsız parantez seviyesini kullanabilirse.
Bu kod golf , bayt cinsinden en kısa kod (bonuslar dahil) kazanır!
Liderler
Burada hem düzenli bir lider tablosu hem de kazananların dile göre genel bir bakış oluşturması için bir Stack Snippet'i var.
Cevabınızın göründüğünden emin olmak için, lütfen aşağıdaki Markdown şablonunu kullanarak cevabınızı bir başlık ile başlatın:
## Language Name, N bytes
Gönderinizin N
büyüklüğü nerede ? Puanınızı artırmak varsa, olabilir onları içinden vurarak, başlığa eski hesapları tutmak. Örneğin:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Başlığınıza birden fazla sayı eklemek istiyorsanız (örneğin, puanınız iki dosyanın toplamı olduğundan veya tercüman bayrağı cezalarını ayrı ayrı listelemek istediğiniz için), gerçek puanın başlıktaki son sayı olduğundan emin olun :
## Perl, 43 + 2 (-p flag) = 45 bytes
Dil adını, daha sonra büyük afiş snippet'inde görünecek bir bağlantı da yapabilirsiniz:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
var QUESTION_ID=61751,OVERRIDE_USER=141697;function answersUrl(e){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"http://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>
6(7)
olmayacak, aynı zamanda işaret söylüyor ?
içinde 6?(7)
hep bir olacaktır *
.