A olmadan A harfi


69

Senin görevin, "A" harfini tek başına, başka bir şey olmadan, takip etmemeniz durumunda, bir programda ve / veya snippet'te bunu yapamazsanız izleyen yeni satırlar dışında göstermektir. Dönen koda (yazdırma yerine) izin verilir.

Küçük ve "A" harfi yani unicode olduğunu (kabul edilebilir bir büyük versiyonları Hem U + 0061 veya unicode U + 0041 . Unicode izin verilir olmayan diğer karakter kodlamaları, ama her iki durumda da kodun elde edilen çıktının gerekir Latince harfi "A" olmalı ve herhangi bir bakış açısı ya da homolif olmadı)

Seçtiğiniz karakter kodlamasından bağımsız olarak, kodunuzda aşağıdaki karakterlerden hiçbirini kullanmamalısınız:

  • Büyük veya küçük harf olsun " A ".

  • " U ", küçük harf veya büyük harf.

  • X , büyük veya küçük harf olsun.

  • +

  • &

  • #

  • 0

  • 1

  • 4

  • 5

  • 6

  • 7

  • 9

Hile, boşluklar, vb izin verilmez.

Bu olduğu için, tüm kuralları izleyen bayt cinsinden en kısa çözüm kazanandır.


Geçerlilik Denetleyicisi

Bu Yığın Parçacığı, kodunuzun sınırlı karakterleri kullanmadığından emin olmak için denetler. Bazı karakter kodlamaları için düzgün çalışmayabilir.

var t = prompt("Input your code.");

if (/[AaUuXx+&#0145679]/.test(t)) {
  alert("Contains a disallowed character!");
} else {
  alert("No disallowed characters");
}

İzin verilmeyen bir karakterinizin bulunmadığından emin olan bu Yığın Parçacığı JSFiddle'da da mevcuttur .

Liderler Sıralaması


7
@ColdGolf İşlevlere "evet" diyorsunuz, ancak işlevler görüntülenmiyor, genellikle dönüyorlar.
xnor

2
Sadece ayeterince iyi içeren bir değişkenle mi bitiyor ?
Ton Hospel

1
Demek istediğim bu değildi. Değişken atama yapan varsayılan kod, yasak karakterlerden hiçbirini içermez. Sadece neyin "baskıdan başka yollarla göster" ile kapsandığını anlamaya çalışıyorum. Eğer "bir fonksiyondan dön" tamamsa, "değişkene atama" dan ne haber?
Ton Hospel,

1
Neden bu özel karakterler?
kullanıcı253751

7
Abariz nedenlerden dolayı @ immibis . UUnicode kaçış dizeleri (için \u0041olan A), Xaltıgen kaçış dizeleri (için \x41), +Unicode ordinals (için U+0041), &HTML varlıklar için, #ben aslında bilmiyorum için, 65ondalık sıra ise A, 41altıgen sıra ise A, 97ondalık sıra olduğu ave 0önceki nedenlerden birkaçı için.
Mego

Yanıtlar:


86

Artı, 1 bayt

o

Pluso Esolangs Sayfa .

Pluso tek iki komutları kullanan 1. değeri ile başlar akümülatör içerir p akümülatörü (mod 27) artırır ve o 1-26 temsil eden bir büyük ASCII karakter, AZ ya da boşluk (mevcut olduğu değeri yazdırır Sırasıyla AZ, ve 0 alanı temsil eder).

Akümülatör 1 de başlar, komut O önceden ile p çıktısı A .


14
PPCG'ye Hoşgeldiniz! Bağlantının ne nedenle olursa olsun ölmesi durumunda, açıklamayı cevabınıza koymanızı tavsiye ederim.
TheBikingViking,

Açıklama eklendi. Moderatör onayı bekleniyor.
KPM

2
Tavsiye için teşekkür ederim (ve hoş geldiniz), kısa bir açıklama eklemek için cevabımı güncelledim.
cdw,

Sadece seni 666'da görmem için oy verdim. Bunun için üzgünüm.
Aidan F. Pierce

5
Bu öncelikli kontrol yapamadığı için "esolang" testinde başarısız olmaz mı?
Magic Octopus Urn

155

Python 2,14 bayt

print`3<3`[~3]

İfadesi 3<3Boole verir Falseve backticks onun dize gösterimini verir 'False'. Buradan mektubu çıkarmak için kalır a. Python 0 dizinli, bu yüzden yasaklanmış bir karakter olan adizinde 1. Olarak ifade edilebilir 3-2, ancak daha kısa bir yol var. Python arkadan endekslemeye izin verir -1, son giriş için indeks , -2ondan önceki giriş için vb. Dizin istiyoruz -4, ancak 4aynı zamanda yasaklı bir rakam. Ama biz olarak ifade edebiliriz ~3bit tamamlayıcı kullanılarak ~verir -n-1için ~n.


7
Bu gerçekten harika bir çözüm. Ayrıca, yapamadık [2]yerine [~3]?
DJMcMayhem

6
@DJMcMayhem 0 dizinli maalesef, gerekecek [1].
xnor

4
... neden 1ve 4'yasaklı' sayılar?
Chris Cirefice

4
Meydan okuma kuralları öyle diyor.
Xnor

20
Şimdi "~ 0" kullanarak "arkadan sıfır dizinli ilk öğe" olarak okunmayı bile düşünüyorum. Python'da neden "-1"
yazısını


48

PHP, 9 6 bayt

<?=O^_^Q;

9 bayt için: @Ton Hospel'in cevabından ilham alındı . Ayrıca, biraz Kaomoji gibi görünme avantajı da var. :-)

6 bayt geliştirilmiş sürüm:

<?=~¾;

¾ 0xBE altıgen kodu vardır ki burada (o dosyayı kaydetmek için önemlidir Latin-1 kodlama , değil UTF-8!).


Alternatif bir versiyon f^E^b.
Ismael Miguel,

Evet, 9 bayt çözümler bol. Y ^ '8' ve x ^ '9' ile başladım, maalesef sayıların dizgiye aktarılması gerekiyor ya da XOR olacak ve sonuçta ortaya çıkan tür bir tamsayı olacak.
YetiCGN

23
Yüz için +1^_^
Cyoce

6 Byte sürümü yazdırılmıyor A. Basar =A.
UTF-8

1
Şimdi bu bilmecenin cevabını biliyorum: UTF-8'de "kesir dörtte üçü" kod noktası iki bayt olarak kodlandı: 0xC2 0xBE , 0xBE, ISO- 8859-1'deki ile aynı . Bunu, UTF-8 ile SSH yoluyla erişdiğim linux kutumdaki bir dosyaya kaydettiğimde, dosyanın 7 bayt olduğunu fark ettim . Bu yüzden, betiği Latin-1 kodlamasıyla kaydedin; 6 bayt olacak ve =karakter çıktısını almayacak
YetiCGN


32

brainfuck, 16 bayt

-[-[---<]>>-]<-.

Bu, Esolang'ın 159'a yönelik beyin fırtınası algoritmasına dayanıyor .

Çevrimiçi deneyin!


3
Bu .... bu sihirbazlık.
Conor O'Brien,

3
Bu çözüm, tüm beyin avcısı tercümanlarında desteklenmeyen ve bir çökmeye neden olacak olan -1 indeksindeki hücreyi kullanır. Burada fatiherikli.github.io/brainfuck-visualizer/…
Cody

37
@Cody PPCG'de diller, uygulamalarıyla tanımlanır. İstediğiniz gibi davranan bir tercüman olduğu sürece geçerli bir çözümdür.
Dennis,

3
Yasaklı karakterlerden kaçınmanız ne kadar zordu?
Hagen von Eitzen

1
@HagenvonEitzen Ben önleyebilecek bir algoritma bulmak için biraz kazmak zorunda kaldı +. ( A'yı yazdırmanın en kısa yolu olacaktır >+[+[<]>>+<+]>.), ancak Esolang'daki sabitlerin listesi sayesinde, çok zor değil.
Dennis,

30

JavaScript (ES6), 17 16 14 bayt

Neil sayesinde iki bayt kurtarıldı!

_=>` ${-_}`[2]

İkinci karakteri döndürür NaNolduğunu a.

Bu A, 43 42 bayt için bulabildiğim en kısa şey.

_=>`${[][`constr${`${!_}`[2]}ctor`]}`[-~8]

Obfuscator olmak kod golf ile yardımcı olmadığını kim söylüyor? Ben değil!

açıklamalar

Birincisi, derinlemesine.

_=>` ${-_}`[2]

-_NaN, çünkü _tanımsız. Bunu bir dize olarak almak için aşağıdakilerden birine ihtiyacınız olacaktır:

-_+""
`${-_}`
(-_).toString()

Sonuncusu çok uzun ve ilk kullanır +. Bu yüzden ikincisini kullanıyoruz. Şimdi, adizinde 1. Bu hiç iyi değil, çünkü 1yasak. Bununla birlikte, bir şablon dizgisi olarak, dizini oluşturması için bir boşluk koyabiliriz 2, böylece bizi de bırakabiliriz ` ${-_}`.


İkincisi, derinlemesine.

_=>`${[][`constr${`${!_}`[2]}ctor`]}`[-~8]

Bu bir sarhoş oldu.

_=>`                                `[-~8]

Bu, iç şablon dizesinin 9. karakteridir, -~89'a eşittir. Bu durumda, bu şablon dizesi sadece dizileme içindir. Bu, aşağıdakiler arasında yayılan iç denklemdir ${...}:

[][`constr${`${!_}`[2]}ctor`]

Bunu biraz daha genişletelim:

(new Array())[`constr${`${!_}`[2]}ctor`]

Bu özellik boş bir diziden alır. Bu özellik, elbette bir şablon dizesidir, ancak etrafında bir metin vardır. Bu kabaca eşdeğerdir:`constr${${!""}[2]}ctor`

"constr" + `${!_}`[2] + "ctor"

İç sırayla eşdeğerdir:

(!_).toString()[2]

!_olduğu true(nedeniyle _olduğu undefinedve !undefined === true) ve bir dizgelenmiş "true". İkinci karakterini alıyoruz u; açıkça ukodumuzu koymaktan kaçınmak için bu yoldan gelmeliyiz .

Yani, bu iç bit eşittir:

"constr" + "u" + "ctor" === "constructor"

Böylece, Dizinin kurucusunu, Arrayfonksiyonunu alıyoruz . Bunu açıkça yasaklayamadım çünkü yasak içeriyor A. Şimdi, Arrayfonksiyonun dizilimi verimlidir "function Array() { [native code] }".

Orijinal koda dönelim:

_=>`${[][`constr${`${!_}`[2]}ctor`]}`[-~8]

Bu gördüğümüz gibi:

_=>Array.toString()[-~8]

Eşittir:

_=>Array.toString()[9]

Sonunda eşdeğer:

_=>"A"

1
@ColdGolf Sorun değil.
Conor O'Brien,

2
Bir açıklama eklemek için bir şaşırtmacanın ilkelerine aykırı olur mu? Bunun nasıl çalıştığını merak ediyorum.
trichoplax

2
@trichoplax Burada metotlarımı ortaya çıkarmanın zarar vermeyeceğini düşünüyorum;) İkisine de bir açıklama ekledim.
Conor O'Brien,

1
@ OldBunny2800 No. ayasaklanmış bir karakterdir ve içindedir toUpperCase.
Conor O'Brien,

3
Bunun ilk başta Perl olduğunu sanıyordum.
Ağustos'ta

29

Altıgen , 4 bayt

Ayyy lmao? Golf dili olmayan bir dil için oldukça golf sahası. Kod:

B(;@

Çevrimiçi deneyin!

Daha okunabilir bir form:

 B (
; @ .
 . .

Bu B, 66 olan harfin ASCII değerini geçerli bellek kenarına yerleştirir. Birini kullanarak çıkarır (ve birlikte yazdırır ;. Bundan sonra, program kullanılarak sonlandırılır @.

Zorunlu yol resmi:

görüntü tanımını buraya girin


8
"daha okunabilir" + hexagony = ???
Charles,

18

Jöle , 3 bayt

ØWḢ

Çevrimiçi deneyin!

Nasıl çalışır

ØWḢ  Main link. No arguments.

ØW   Yield "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_".
  Ḣ  Head; extract the first character.

Jöle, 4 bayt

l-ṾṂ

Çevrimiçi deneyin!

Nasıl çalışır

l-ṾṂ  Main link. No arguments.

l-    Take the logarithm of 0 with base -1. Yields (nan+infj).
  Ṿ   Uneval; yield the string representation, i.e., "nanıinf".
   Ṃ  Take the minimum, returning 'a'.

1
Çok kötü, ikinci yaklaşım daha uzun. ._.
Dennis,

6
İkinci yaklaşımı eklediğiniz için teşekkürler. Çok güzel
trichoplax

18

Aslında 2 bayt

úF

Çevrimiçi deneyin!

Açıklama:

úF
ú   lowercase English alphabet
 F  first element

yazar mısın Bu dili daha önce görmedim.
loa_in_

Birkaç kez zorluklarla karşılaştığını gördüm. Sanırım sitedeki golf dillerinden herhangi birinin en zekice adı var :-) Son zamanlarda Suits'i izliyorum ve çok Harvey olduğunu düşünüyorum.
corsiKa


12

Bubblegum , 1 bayt

"

veya

B

Herkes var olduğunu unutmuş gibiydi ...


Daha önce hiç Bubblegum kullanmamıştım, belki de cehaletimi affedersiniz, ama Bubblegum için dokümanları nerede bulabilirim? Ayrıca, her iki cevabınızla bubblegum.tryitonline.net denedim ama hiçbir şey çıkmadı gibi görünüyor.
Kevin Cruijssen,

1
@KevinCruijssen Doc: esolangs.org/wiki/Bubblegum TIO, kaynak kodunun sadece altıgenini kabul ediyor gibiydi, öyleyse şöyle deneyin: bubblegum.tryitonline.net/…
jimmy23013

Ah, bu benim sorunum; hexdump kullanılmıyor. Tek baytlık yanıtla en kısa olduğun için teşekkürler ve +1 (Pluso ile bağlı).
Kevin Cruijssen,

@KevinCruijssen 1 bayt Pluso cevabı var. Yine de garip bir site kuralıyla ilgili bazı problemleri var.
jimmy23013

10

Perl, 9 8 bayt

xor'a hala izin var, ama saydeğil. 9 bayt için:

print$/^K

Ancak STDERR'ye çıktı kullanmak 8 bayt verir:

die~"\x9e\xf5"

Değiştirin \x9eve \xf5değişmez sürümleri ile. Veya aşağıdakileri kullanarak yürütülebilir dosyayı oluşturun:

perl -e 'printf q(die~"%s"),~"a\n"' > a.pl

@ColdGolf: Bu bana açık değil. Yani say, argümanın yapımı yasak karakterleri kullanmadığı sürece baskı yapmak için (a) kullanabilir miyim?
Ton Hospel

"Ancak, kodunuzda aşağıdaki karakterlerden hiçbirini kullanmamalısınız: * A (büyük veya küçük harf). Bundan, ben print "No using the letter with code point 65";.
haykam

@ColdGolf bu soruya herhangi bir şekilde cevap vermek anlamına mı geliyor?
Hobiler

10

> <> , 6 bayt

'|;o-$

bu bir karakter dizisi yaratır, geri döner ve tekrar tersten oluşturur, ilk 2 yığın öğesini döndürür ve çıkarır: '|' (124) eksi ';' (59) 'A' (65)

Çevrimiçi deneyin


2
Güzel! '$-o;|Neredeyse aynı olanı aldım ama zıplamadan. ( |;o-$'ayrıca çalışır.)
randomra

1
@randomra oh doğru! Bu kesinlikle daha hızlı, çok güzel bir iş olurdu
torcado 21:16

10

Ruby, 15 12 bayt

$><<to_s[-3]

1
Sen 2 byte değiştirerek kaydedebilirsiniz $><<için p yaparp to_s[-3]
Ephi

@Ephi argümanlarını pçağırır inspect, bu nedenle çıktı diskalifiye olur.
Jordan,

Bu zorluğun bir bölümünü özledim, ilginç bir bilgi olduğunu düşündüğüm gibi yorumlara izin vereceğim :)
Ephi

10

Java, 55 bayt

void f(){System.err.write('c'-2);System.err.println();}

Kodun yazdırması gerektiğinden, yerleşik iki yazardan biri gereklidir. System.outolduğu gibi, çünkü içeriyor u. System.errAncak çalışır.

Bir sonraki engel, Java'nın kullanımı charve int. charİçerdiği ave 'c' - 2terfi ettiği için oyuncu seçimi yapılamıyor çünkü intbaşka bir mekanizma gerekiyor. System.erra, PrintWriterbir olan, write(char)bir yöntem değil write(int). 'c' - 2Oraya koymak onu charalçı olmadan zorlar .

Sonunda, programı her çalıştırdığımda, tamponun System.errolması gerektiği gibi çalkalamadı ve program hiçbir şey yazdırmadı. Bu yüzden el ile yıkamak zorunda kaldı. Ancak, System.err.flush()buna izin verilmiyor, bu yüzden println()altta yatan akışı dolaylı olarak silen, ben çağırdım .


9

MATL, 5 bayt

YNVH)

Çevrimiçi Deneyin

açıklama

YN      % Creates a NaN value (not a number)
V       % Convert it to a string
H)      % Grab the second letter ('a')
        % Implicitly display the result

Orijinal cevabım, önceden tanımlanmış değişmezi lY2kullanan 'A'...'Z've sonra ilk elemanı seçen basit bir yaklaşımdı 'A'.

lY2l)

9

Javascript, 18 bayt 16 bayt 12 bayt 11 bayt

` ${!2}`[2]

Modifiye dayanarak jsfuck temelleri (nasıl değiştirileceği anlamaya vardı +ile -).

Ungolfed?

Eh, en azından yorum içeren bir sürüm (bu sürümün çalışmayacağına dikkat edin):

` ${      // whitespace to make "a" the third letter
  !2      // returns false
}`        // convert to string "false"
[2]       // index the third letter in " false" (note the whitespace)

Eski çözüm:

`${![]}`[-(-!![])]

Parantezleri, eksi işaretleri arasında boşluk bırakabilirsiniz.
PurkkaKoodari

@ Pietu1998: Fark ettim 3böylece izin sıkıcı eski ile her şeyi değiştirilir 3-2olsun1
slebetman

Conor O'Brien'ın cevabı sayesinde bir bayt kurtarıldı
slebetman

1
Alınma ama bu benim cevabım. Bunun dışında NaN yerine false kullanıyorsunuz ve bir işlev kullanmıyorsunuz.
Conor O'Brien,

8

Vim, 16 13 11 10 tuş vuruşlarını

İki anahtarı kaydettiği için H Walters'a teşekkürler

Başka kaydettiğiniz için DJMcMayhem'e teşekkürler!

:h%<cr>jvyZZp
:h%<cr> #open help for percent
jvy     #move down one char (to the letter "a"), visual mode the character, yank
ZZ      #exit help for percent
p       #put yanked character

Çok güzel bir yaklaşım!
YetiCGN

2
3 bayt kaydet; yerine :h<cr>, dene :h%<cr>. Bu fazladan bir karakter, ama %imlecinizi bir a üzerinde tuttuğunuzda yardım alırsınız . Buradan Yani yerini alabilir 33llile j.
H Walters,

Açık yazım hatası için özür dilerim ( 2 bayt kurtar )
H Walters

Başka bir tane kaydetmek ZZyerine kullanabilirsiniz :q<cr>.
DJMcMayhem

8

R, 27 12 bayt

EDIT: Yeni sürüm, @Jarko Dubbeldam'dan mükemmel bir fikir

LETTERS[T*T]

Oldukça komik bir meydan okuma!

Temel olarak, bu 26th, büyük harfleri içeren ters çevrilmiş vektörün elemanını alır ( LETTERSbu, R'nin yerleşik vektörüdür)

Önceki sürüm s (aynı bayt sayısı) :

L=LETTERS;rev(L)[length(L)]
rev((L=LETTERS))[length(L)]

1
Biraz geç, ama biraz para kazanabilirsiniz LETTERS[T*T]. Sayısal işlemler yaparken Tdeğerlendirir 1.
JAD


Bu teknik olarak bir çözüm değildir
yazıyor

8

> <> , 7 4 bayt

Teal pelikan sayesinde 3 byte kurtarıldı

"-o.

Çevrimiçi deneyin!

açıklama

"-o."   # pushes the string "-o."
-       # subtracts the charcode of o from the charcode of . (dot), 111-46=65
o       # prints as character
.       # tries to pop 2 coordinates to jump to, but as nothing is left on the stack
        # the program ends in an error

Ben yapardı"B"1-o;
DanTheMan

@DanTheMan Daha açık bir çözüm olmalıydı. Bunu neden düşünmedim merak ediyorum: P
Emigna

@DanTheMan: - Dan'in gönderdiği şeyi bırakmak, bunu daha da azaltabilir; "1-o; B veya daha iyisi" + o; her iki durumda da bu 5 baytı yapma izni verilir :) - 4 bayt bile hatalı yapabilirsiniz; "-o.
Teal pelikan

@Tealpelican: Bu harika! Dizeleri kullanmak genellikle bu gibi zorluklarda en
kısadır

Dan'in yorumunu gördüğümde, bana bunun gibi daha eski bir meydan okumayı hatırlattı, bu yüzden aynı kavramı kullandı :)
Teal pelikan

7

Vim, 2 Tuş vuruşları

vim -u NONEsonra aşağıdakini çalıştırın ( -u NONEözelleştirmeyi kapatır)

i<up>

Vim uyumlu modda çalıştırıldığında ok tuşları doğru şekilde yorumlanamaz. aşağıdakileri insert modunda bırakarak <up>yorumlanır <esc>OA. Hangisi ayrılacak (birkaç yeni satırla)

A

iekleme modunu başlatır.
<up>insert modundan çıkar, yukarıdaki satırı açar ve tamponun içine A girer

Bununla vahşi yaşamda karşılaşan insanlara örnek. https://stackoverflow.com/questions/6987317/while-moving-the-cursor-across-a-vim-process-open-in-a-tmux-session-every-now-a/6988748#6988748


Okuduğum gibi güldüm. Bu iyi iş. Tanıdığım, ama düşünemediğim bir şeyin silahlandırılması.
udioica

6

Brainfuck, 192 19 bayt

----[>---<----]>--.

Hella baytları kurtarmama yardım ettiğin için @NinjaBearMonkey'e teşekkürler

-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -----------------------------------------.

Brainfuck'ta iyi değilim, bu yüzden daha kısa bir çözümden eminim, ancak 0'ın altına düşürerek, baytı yuvarlayarak çalışır ve 'A' seviyesine gelene kadar devam eder, sonra yazdırır.


1
ciddi bir rakip değil. Eğer gerçekten golf oynarsanız, düşürücü oylarını tersine çevirebilir
Yok

Sadece 65'e kadar saymak 65'den fazla artı saymak için daha kısa olmaz mı?
NinjaBearMonkey 19:16

2
'+' giremez, bu yüzden geriye gitmek zorunda kaldım
Cody

Üzgünüm, bunu görmedim. Yine de , 191 yapmanın çok daha kısa yolları var .
NinjaBearMonkey

2
Bu 192 baytlık bir çözümdü, yeni bıraktım ve silmek yerine üstü çizdim, çünkü 192'den 19'a kadar komik olacağını düşündüm
Cody

6

JavaScript (ES6), 21 bayt

_=>(8^2).toString(22)

Başlangıçta falsebunu yapmak için dizgeye dönüştürmeye çalıştım , fakat o zamanlar 23 byte aldı. O zamandan beri daha kısa bir yolla geldim, ki bu 14 bayt için:

_=>`!${!2}`[2]

AKurallara göre büyük harf alabileceğinizi sanmıyorum , çünkü bunlardan birine String.fromCharCodeveya .toUpperCase()ikisine birden ihtiyacınız var a.


JSF kullanarak büyük harf veya bilgisayarlı özellikleri kullanarak bir türev alabilirsiniz
Downgoat

1
@Downgoat Conor O'Brien zaten nasıl olduğunu gösterdi.
Neil

6

C, (19?) 24 bayt

Dennis'e teşekkürler:

f(){printf("%c",88-23);}

Aynı uzunluk:

f(){printf("%c",'C'-2);}

Ayrıca küçük harf sağlar:

f(){printf("%c",'c'-2);}

Bir vardır 19 bayt bir kusuru vardır parametresini, değiştirici bir fonksiyonu olarak çözeltisi:

g(int*p){*p='C'-2;}

//Usage:

main(){
  int c; //cannot be char
  g(&c);
  printf("%c\n",c);
}

Eğer cilan edilmiş char, gbütün değiştiren intbir hata mesajı ile iptal etmek için diğer modifiye edilmesi değerleri veya programm neden yığın çökertildi böylece. Aşmak için tek yol beyan etmektir int c;içinde mainve birlikte yazdırmak "%c", ama bu bir kaçamak gibi hissediyor.

eski çözümler

f(){printf("%c",'B'-2/2);} //26 bytes
f(i){i='B';printf("%c",--i);} //29 bytes
f(){int*i="B";int j[]={*i-(2/2),2-2};printf("%s",j);} //53 bytes

Sadece bir fonksiyon, çünkü mainyasak.


3
88-23birkaç bayt kaydetmelisiniz.
Dennis,

Küçük harf a için (333-33) / 3-3 kullanabilirsiniz. 'C'-2 kadar kısa değil, ama 3er. 33 * 3-2 de mümkündür.
rici

Eğer printf yerine write () kullanıyorsanız, bir program yapabilirsiniz; hiçbir libc ile bağlantı kurmamanızı sağlamak için derleme adımlarını belirtin; _start yoksa, ilk sembol atlanır ve _exit'e izin verilir, bu yüzden güvenlidir. En azından bir gcc sürümü, write () işlevini hiç işlev çağrısı olmadan doğrudan sisteme optimize eder.
Joshua,

IDE'nize bağlı olarak, böyle bir şey yapabilirsiniz: printf("%c",~'ɦ');"A" nın vurgulu işarete sahip olmasına rağmen, heh
Albert Renshaw

@AlbertRenshaw ɦ2 baytlık bir karakterdir
Karl Napf

6

dc, 4 bayt

833P

UCHAR_MAX taşması , 65'e inmeden önce altı kez üç kez masanın üzerinden geçer .


6

Lua, 36 bayt

Standart Lua fonksiyonlarının BİRÇOK kurallarından uzak alınır beri bu tek biraz zaman aldı (tüm math, string.char, string.match, pairs, hatta next)

Bu, Lua'nın _VERSIONgenellikle "Lua" ile başlayan (örneğin Lua 5.1, veya diğer sürümler için benzer) olan bir geneline sahip olmasından yararlanır;

print(({_VERSION:find("..(.)")})[3])

{...}[3]Grubuna sonuçları olduğunu findda eşleşen endeksleri içeren ve eşleşen karakter üçüncü madde (dönüş a)


1
print(({type{}:find".(.)"})[3]) 31 bayt
Egor Skriptunoff

6

Haskell, 10 bayt

Bir işlev olarak (veya daha doğrusu girdi gerektirmeyen bir ifade)

f=pred 'B'

hile yapar. Ideone'da dene. Bir program içermesi gerektiği için tam bir program mümkün değildir main.


Bunun geçerli olduğunu sanmıyorum. Görev "yazdırmak" veya "görüntülemek" gerektirir A. İşlevleriniz sadece onu döndürür ve bağlı program, putCharkullandığı programı görüntüler u.
nimi

Haklısın, ancak kurallar güncellendi ve şimdi bir işlevden geri dönmek tamam gibi görünüyor.
Laikoni

Hayır, kurallar hala söylüyor printve / veya display.
nimi

2
Dennis, baskı yerine bir işlevden geri dönmenin tamam olup olmadığını sordu ve OP evet ile yanıt verdi, ancak daha sonra sorunun güncellenmiş ifadesi hala bunu yansıtmıyor. Sanırım daha fazla açıklama için hala beklemeliyiz.
Laikoni

1
OP, Ayazdırılması / görüntülenmesi ve iade edilmemesi gerektiğini onayladı .
nimi


5

dC, 8 7 bayt

Dennis sayesinde -1B

88 23-P

88'i iter, 23'ü iter, çıkarır, 65'i bırakır. Yığının (65) ASCII dizisi olarak yazdırılması, izleyen yeni çizgiyi gizler.

Düzenle:

Bunlar karşılaştığım diğer yollardan birkaçı. Temel olarak "sadece [238B-F]ve eklemesiz kullanarak 65 ve 97 sayılarını üret" oyunudur . İronik olarak, en uzun olanları en ilginç buluyorum.

_Fdd/r-oC 2-n  # involves changing the base
2_2/8d*3*2/-P
Idd2/2/-2*on   # also changes base
2d8r^r_2/-P
8d*2_2/-P
B 3d**2-P
33 3*2-P
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.