Fransız plakaları


41

Kum havuzu

Fransız Plakaları

Fransız plakaları , belirli bir sayı ve harf şeklini izleyerek sıralı olarak gelir:AB-012-CD

Meydan okuma

Belirli bir sayı için, ilgili fransız plaka numarasını veren bir program veya işlev yazın . Programınız, link verilen sayfada belirtilen özel durumlarla ilgilenmemelidir. 26*26*1000*26*26 => 456 976 000Mümkün olan tüm plakaları veya dilinizin destekleyebildiği ölçüde üretebilmesi gerekir .

Numaralandırma sistemi aşağıdaki gibidir:

  • AA-000-AA ila AA-999-AA (ilk önce sayılar artar);
  • AA-000-AB ila AA-999-AZ (sonra sağdaki son harf);
  • AA-000-BA ila AA-999-ZZ (sonra sağdaki ilk harf);
  • AB-000-AA ila AZ-999-ZZ (sonra soldaki son harf);
  • BA-000-AA ila ZZ-999-ZZ (sonra soldaki ilk harf).

Giriş

  • Plaka sayısının tamsayı olarak gösterilmesi

Çıktı

  • İlgili fransız plaka numarası

Ek bilgi

  • Harfler büyük olmalı
  • Plakları oluşturmak için hem 0 hem de 1 tabanlı indekslemeyi kullanabilirsiniz (AA-000-AA'nın karşılık gelebileceği 0veya 1tüm diğer test durumlarının aynı endekslemeyi kullandığı varsayımıyla).

Bu kod golf , her dilde kazanılan en kısa cevap!

Test durumları (0 tabanlı dizin oluşturma)

          0 -> AA-000-AA
          1 -> AA-001-AA
        999 -> AA-999-AA
       1000 -> AA-000-AB
    675 999 -> AA-999-ZZ
    676 000 -> AB-000-AA
456 975 999 -> ZZ-999-ZZ

2
Zorlu bir varyasyon oluşturmak istiyorsanız, doğrudan Wikipedia'dan gelen bazı gereksinimler şunlardır: "Bu rakam, kullanılmayan üç harfi içermez: Sırasıyla 1, 0 ve V ile karıştırılabilecekleri için I, O ve U. Aynı zamanda SS kombinasyonunu da dışlıyor çünkü Nazi örgütünü ve WW'yi geçici bir levhaya işaret ettiği için ilk grup mektupta hatırlatıyor. "
Eric Duminil

4
@EricDuminil Ben meydan okuduğumuza yeni getirdiği kısıtlamalar eklediği için bunu bilerek dışladım. Ama yapması ilginç olabilir, ancak "bonus puan" ile bile bu kuralları uygulamanın
faydası

Yanıtlar:


17

Saf Bash (harici dosya yok), 64

  • @NahuelFouilleul sayesinde 2 bayt kurtarıldı
x={A..Z}
eval f=($x$x-%03d-$x$x)
printf ${f[$1/1000]} $[$1%1000]

Çevrimiçi deneyin! - 7 test evresinden geçmek yaklaşık 10 saniye sürüyor.

  • 1. satır bir dizgenin değişkene basit bir atamasıdır.
  • Satır # 2, henüz belirtilmemiş olan 456,976 olası harf kombinasyonunun tümü için bir tane printf formatı dizgisi dizisi oluşturmak için kullanılan bir ayraçtır. eval(X) bir değişken genleşme ayracı genişleme önce meydana sağlamak için gereklidir.
  • Satır # 3, uygun format dizesini almak için diziyi dizine alır ve basamak bölümünü parametre olarak alır.


13

Perl 5 (-ap), 47 bayt

$_=AAAA000;$_++while$F[0]--;s/(..)(\d+)/-$2-$1/

Çevrimiçi deneyin!


PHP , 74 bayt

for($a=AAAA000;$argn--;$a++);echo preg_replace('/(..)(\d+)/','-$2-$1',$a);

Çevrimiçi deneyin!


2
PHP için +1, PHP'deki harfleri artırabileceğimizi biliyordum, ancak harf ve rakamların bir kombinasyonunu artırabileceğimizi bilmiyordum. PHP her gün beni şaşırtıyor! Ve teşekkürler, yeni bir şey öğrendim.
Gece2


8

Ruby, 61 59 55 bayt

->n{s='AA-AA000-';eval's.succ!;'*n;s[2]+=s[5,4];s[0,9]}

Ayrıca 55 bayt:

->n{s='AA-AA000-';eval's.succ!;'*n;s[2]+=s.slice!5,4;s}

Çevrimiçi deneyin!

Bu bir sayacı başlatır AA-AA000-, nzamanını arttırır ( bunu yapan kodun bir dizesini n ve evaling ile çarparak ) ve ardından 3.nden sonraki son 4 karakteri taşır.


->n{s=('AA-AA000-'..?Z*9).step.take(n)[-1];s[2]+=s.slice!5,4;s}daha uzun ama kısaltmanın mümkün olup olmadığını merak ediyorum.
Eric Duminil

Teoride, ->n{s=[*'AA-AA000-'..?Z*9][n];s[2]+=s.slice!5,4;s}çalışması gerekir ve sadece 50 bayt uzunluğundadır, ancak önce her olası plakayı oluşturur. : - /
Eric Duminil

1
"s + = s.slice! 3,2", 50 bayt için
GB

O zaman bu da çalışması gerekir: 45 bayt
GB

7

PHP , 96 84 79 bayt

-5 byte Ismael Miguel 'in güzel yorumlarına teşekkürler .

for($s=AAAA;$x++^$argn/1e3;)$s++;printf('%.2s-%03u-'.$s[2].$s[3],$s,$argn%1e3);

Çevrimiçi deneyin!

PHP'deki harfleri artırabileceğiniz gerçeğinden faydalanıyorum! Böylece AAAA++olur AAABve AAAZ++olur AABA. Tamsayı bir parçası alarak harflerin kaç kez artırılması gerektiğini hesaplarım input/1000. Ardından dört karakter uzunluğunu artırın, ilk iki ve son iki karakter otomatik olarak plakanın sol ve sağ tarafı olacak.

Örneğin 675999harf artışlarının sayısının girişi için (int)(675999 / 1000) = 675, öyle AAAAolacaktır AAZZ.

Son olarak, orta sayı hesaplanır input%1000ve her şey printf yardımı ile belirtilen formatta yazdırılır . %.2sdizginin ilk iki karakterini yazdırır %03u, soldaki sayıyı 3 sıfır ile doldurur.


2
@Elcan Üzgünüz, sorunları 12 bayt pahasına düzeltti.
Dağınık

1
%0.2sSenin yerine yazabilirsin %.2s. Bu size 1 byte kazandırır. (Küçük bir ipucu olarak: belirli sayıda ondalık basamağa sahip bir ondalık sayı çıkarmak istiyorsanız %.2f, aynı şekilde çalıştığı gibi (ya da başka herhangi bir değiştirici) yapabilirsiniz)
Ismael Miguel

1
@IsmaelMiguel Teşekkürler, bırakabileceğimizi bilmiyordum 0. Düzenleme: dökümanlara bakıldığında, ilk etapta bile ihtiyacım olmadı gibi görünüyor: P
Night2

1
Evet, onları düşürebilirsiniz. Ayrıca, $x++^$argn/1e3bunun yerine yapabilir $x++<(0^$argn/1e3)ve 4 bayt kaydetmelisiniz. Bu kadar olana kadar döngülenecek ($x++^$argn/1e3) === 0ve 0ne zaman $xve $argn/1e3aynı tam sayı olduğunda ( ^bu sayılar tam sayıya çevrilecektir). Bunu sandbox.onlinephpfunctions.com/code/…
Ismael Miguel

1
@ IsmaelMiguel Tekrar teşekkürler, çok zekice bir fikir. Bu cevabı JS cevaplarından daha kısa yaptınız ve bu bir başarı oldu: P
Night2 11

7

C, 88 86 bayt

# tanım d (b) a / b /% 1000 26 + 65
f (a) {printf ( "% c% c% 03d-%% c c" d (17576), d (676), bir% 1000, D (26), d (1));}

Oldukça basit, alanları çıkarmak için bölme ve modülleme kullanır, harfleri ASCII karakterlerine eşlemek için harflere 'A' ve sayılar için printf biçimlendirmesi kullanır.

Çevrimiçi deneyin!



6

05AB1E , 25 22 20 bayt

Au2ããs₄‰`UèX₄+¦'-.øý

-2 bayt (ve tüm listeyi oluşturmayarak performansı arttırdı) @Grimy sayesinde .

0 tabanlı indeksleme.

Çevrimiçi deneyin veya tüm test durumlarını doğrulayın .

Açıklama:

Au            # Push the lowercase alphabet, and uppercase it
  2ã          # Create all possible pairs by taking the cartesian product with itself:
              #  ["AA","AB","AC",...,"ZY","ZZ"]
    ã         # Get the cartesian product of this list with itself:
              #  [["AA","AA"],["AA","AB"],...,["ZZ","ZZ"]]
s             # Swap to push the (implicit) input
 ₄‰           # Take the divmod-1000 of it
              #  i.e. 7483045 becomes [7483,45]
    `         # Push these values separated to the stack
     U        # Pop and store the remainder part in variable `X`
      è       # Index the integer part into the list of letter-pairs we created earlier
              #  i.e. 7483 will result in ["AL","BV"]
X             # Push the remainder part from variable `X` again
 ₄+           # Add 1000 to it
   ¦          # And remove the leading 1 (so now the number is padded with leading 0s)
              #  i.e. 45 becomes 1045 and then "045"
    '-.ø     '# Surround this with "-" (i.e. "045" becomes "-045-")
        ý     # Join the two pairs of letters by this
              #  i.e. ["AL","BV"] and "-045-" becomes "AL-045-BV"
              # (after which the top of the stack is output implicitly as result)

Son bölüm ( s₄‰`UèX₄+¦'-.øý) I₄÷èI₄+3.£.ý'-ýeşit baytlık bir alternatif olabilir:
Çevrimiçi deneyin veya tüm test durumlarını doğrulayın .

I₄÷           # Push the input, integer-divided by 1000
   è          # Use it to index into the letter-pairs we created earlier
              #  i.e. 7483045 becomes 7483 and then ["AL","BV"]
I₄+           # Push the input again, and add 1000
   3.£        # Only leave the last three digits
              #  i.e. 7483045 becomes 7484045 and then "045"
            # Intersperse the pair with this
              #  i.e. ["AL","BV"] and "045" becomes ["AL","045","BV"]
        '-ý  '# And join this list by "-"
              #  i.e. ["AL","045","BV"] becomes "AL-045-BV"
              # (after which the top of the stack is output implicitly as result)

1
20 Au2ããI₄‰`UèX₄+¦'-.øýveya ile Au2ããI₄÷èI₄+3.£'-.øý.
Grimmy

1
@Grimy Teşekkürler! Ve şimdi de tüm listeyi oluşturup dizine ekleyerek çok daha hızlı. :)
Kevin Cruijssen

6

J , 56 49 46 bayt

226950 A.'--',7$_3|.4,@u:65 48+/(4 3#26 10)#:]

Çevrimiçi deneyin!

FrownyFrog sayesinde -3 bayt

Her şey 7 iç içe geçmiş trenden başka bir şey değil - eğer eğlenceli değilse, nedir?

  ┌─ 226950                                            
  ├─ A.                                                
  │        ┌─ '--'                                     
──┤        ├─ ,                                        
  │        │      ┌─ 7                                 
  └────────┤      ├─ $                                 
           │      │   ┌─ _3                            
           └──────┤   ├─ |.                            
                  │   │    ┌─ 4                        
                  └───┤    │     ┌─ ,                  
                      │    ├─ @ ─┴─ u:                 
                      └────┤                           
                           │     ┌─ 65 48              
                           │     ├─ / ───── +          
                           └─────┤                     
                                 │       ┌─ '4 3#26 10'
                                 └───────┼─ #:         
                                         └─ ]         

1
Güzel! Permütasyon kullanmak, sonuçta ortaya çıkan dizgiyi biçimlendirmek için iyi bir yoldur.
Galen Ivanov


@ FrownyFrog teşekkürler!
Jonah



5

R , 101 bayt

b=0:3;a=scan()%/%c(10^b,1e3*26^b)%%rep(c(10,26),e=4);intToUtf8(c(a[8:7],-20,a[3:1]-17,-20,a[6:5])+65)

Çevrimiçi deneyin!

Sadece gerekli aritmetik hesaplamaları yapar. Yardımcı vektörü yeniden kullanmama izin vererek vektöre aişe yaramaz bir değer ekleyerek 5 bayt kurtardım .a[4]b

Örneğin ikinci karakteri ( Bin AB-012-CD) düşünün . Bu karakter her değişiyor26×26×1000=676000nn %/% 676000 %% 26%/%%%


4

Jöle ,  26  22 bayt

ØAṗ2,`ØDṗ3¤ṭŒp⁸ị2œ?j”-

Karakter listesini veren bir tamsayı (1-indeksli) kabul eden bir monadik Link ... Tüm plakaları ilk oluşturduğu için deli-yavaş!

Çevrimiçi deneyin! (tamamlanmış olmaz)
Veya azaltılmış alfabe sürümünü deneyin(harfler için sadece "ABC").


Zamanında tamamlanan kod için burada modüler aritmetik ve sayısal baz dekompresyonu kullanarak tek plakayı oluşturan 32 bayt tam program (0 indeksli):

dȷ+“©L§“£ż’µḢṃØAṙ1¤ḊŒHW€jDḊ€$j”-

Bunu dene!


Göründüğü gibi kısa çizgileri özlüyor, bu yüzden şimdilik meydan okuma kurallarına uymuyor: P
Elcan

1
Ah, onları bir tür ayırıcı olarak görmezden geldim! Bu yöntemler için oldukça fark yaratır :(
Jonathan Allan

Bunun için üzgünüm: c Yine de Jelly'de yapıldığını görmek çok güzel!
Elcan

Bunları eklemek için 7 byes eklendi, şimdi daha kısa bir genel yöntem olduğundan eminim ...
Jonathan Allan

Oops, thanks @Grimy - 3 yaşındayken golf de olabilir: p - Jonathan Allan 1 dakika önce
Jonathan Allan


3

Kömür , 33 bayt

Nθ¹✂I⁺θφ±³≔⪪⍘⁺X²⁶¦⁵÷θφα²η¹⊟ηM⁹←⊟η

Çevrimiçi deneyin! Bağlantı, kodun ayrıntılı bir versiyonudur. Açıklama:

Nθ

Numarayı giriniz.

¹

Bir yazdırma -.

✂I⁺θφ±³

Sayıya 1000 ekleyin, sonucu dizeye alın ve son üç basamağı yazdırın.

≔⪪⍘⁺X²⁶¦⁵÷θφα²η

Sayıyı 1000'e bölün ve ardından 26⁵ ekleyin, böylece büyük harfli alfabe kullanarak özel tabana dönüştürme işlemi daha sonra harf çiftlerine bölünmüş olan 6 uzunluğunda bir dizeyle sonuçlanır.

¹

Bir yazdırma -.

⊟η

Son harf çiftini yazdır.

M⁹←

Plaka numarasının başına gidin.

⊟η

İstediğiniz harflerin kalanını yazdırın.



3

Excel, 183 167 155 147 bayt

@Neil sayesinde -16 bayt. (6 kullanarak E3)

@Keeta sayesinde -12 bayt. ( TRUNCyerine QUOTIENT)

@Jonathan Larouche sayesinde -8 bayt ( INTyerine TRUNC)

=CHAR(65+INT(A1/17576E3))&CHAR(65+MOD(INT(A1/676E3),26))&"-"&TEXT(MOD(A1,1E3),"000")&"-"&CHAR(65+MOD(INT(A1/26E3),26))&CHAR(65+MOD(INT(A1/1E3),26))

5 bölüm birleştirir:

CHAR(65+INT(A1/17576E3))
CHAR(65+MOD(INT(A1/676E3),26))
TEXT(MOD(A1,1E3),"000")
CHAR(65+MOD(INT(A1/26E3),26))
CHAR(65+MOD(INT(A1/1E3),26))

Mu MOD(QUOTIENT(A1,1E3),26)çalışmıyor? Ayrıca, neden 1E3için 1000değil 26E3vs?
Neil

TRUNC'u tamamen sökerek ve bölmeyi MOD'un içine getirerek daha da fazla tasarruf edin. = KAR (65 + A1 / 17576E3) CHAR (65 ± MOD (A1 / 676E3,26)) "-" & METİN (MOD (A1,1E3), "000") ve "-" & CHAR (65 ± MOD (A1 / 26E3,26)) & CHAR (65 + MOD (A1 / 1E3,26)), 127 bayta indiriliyor.
Keeta

QUOTIENT’i çıkarmak istemiştim. Başlangıçta, virgül yerine virgül yerine / işaretini değiştirmemi öneriyordum.
Keeta

@Keeta, 127 baytlık çözümünüz bazı değerler için başarısız oluyor: eg 456 975 996->[Z-996-ZZ
Wernisch

@Keeta, Görünüşe göre CHAR(65+)sessizce kadar ondalık keser %.9999997614649. Bundan daha büyük yuvarlanır. Karşılaştırma CHAR(65+24.9999997614649)ve CHAR(65+24.999999761465).
Wernisch

2

Temiz , 107 bayt

import StdEnv
A=['A'..'Z']
N=['0'..'9']
$n=[[a,b,'-',x,y,z,'-',c,d]\\a<-A,b<-A,c<-A,d<-A,x<-N,y<-N,z<-N]!!n

Çevrimiçi deneyin!

N. $ :: Int -> [Char]Sıfıra indeksli plakanın verilmesini tanımlar .


2

Japt , 21 bayt

Müstehcen yavaş! Cidden, onu çalıştırmayı bile deneme!

Dün gece bu işi yapmak için savaşırken yanlış yaptığım yeri anlamamı sağladığı için Kevin'in şapkasının ipucu .

;gBï ï ïq#d0o ùT3 û-5

Deneyin - sayı aralığını sınırlar 000-005.

;gBï ï ïq#d0o ùT3 û-5     :Implicit input of integer
 g                        :Index into
; B                       :  Uppercase alphabet
   ï                      :  Cartesian product with itself
     ï                    :  Cartesian product of the result with itself
       ï                  :  Cartesian product of that with
         #d0              :    1000
            o             :    Range [0,1000)
              ùT3         :    Left pad each with 0 to length 3
                  û-5     :    Centre pad each with "-" to length 5
        q                 :  Join the first element (the 2 pairs of letters) with the second (the padded digit string) 

2

İleri (gforth) , 94 bayt

: x /mod 65 + emit ; : f dup 1000 / 17576 x 676 x ." -"swap 0 <# # # # #> type ." -"26 x 1 x ;

Çevrimiçi deneyin!

0 endeksli. Giriş yığının üstünden alınır

Kod açıklaması

\ extract out some common logic
: x             \ start a new word definition
  /mod          \ divide first argument by second and get both quotient and remainder
  65 +          \ add 65 (ascii A) to quotient
  emit          \ output
;               \ end word definition

: f             \ start a new word definition
  dup 100 /     \ duplicate input and divide by 1000
  17576 x       \ divide by 26^3 and output ascii char
  676 x         \ divide by 26^2 and output ascii char
  ." -"         \ output "-"
  swap 0        \ grab original number and convert to double-cell number
  <# # # # #>   \ convert last 3 chars of number to a string
  type ." -"    \ output string followed by "-"
  26 x          \ divide result of last mod by 26 and output ascii char
  1 x           \ output ascii char for remaining amount
;               \ end word definition

2

T-SQL, 135 bayt

select concat(CHAR(65+(@i/17576000)),CHAR(65+(@i/676000)%26),'-',right(1e3+@i%1000,3),'-',CHAR(65+(@i/26000)%26),CHAR(65+(@i/1000)%26))



1

Python 3 , 89 bayt

lambda n:h(n//676)+f"-{n%1000:03}-"+h(n)
h=lambda x:'%c%c'%(x//26000%26+65,x//1000%26+65)

Çevrimiçi deneyin!

Mypetlion sayesinde -1 bayt


1
1 bayt kaydetmek chr(x//26000%26+65)+chr(x//1000%26+65)için değiştirin '%c%c'%(x//26000%26+65,x//1000%26+65).
mypetlion

1

MATLAB , 113 bayt

c=@(x,p)char(mod(idivide(x,1000*26^p),26)+65);
s=@(n)[c(n,3),c(n,2),num2str(mod(n,1000),'-%03d-'),c(n,1),c(n,0)]

açıklamalar:

İlk hat (bir kömürü üretecek bir işlev tanımlamak Aiçin Z), 2 girişlerin işlevini. xBir plaka numarasına dönüştürülecek indeks numarası ve p26 (yani 26^p) için üs olarak kullanılacak bir tam sayı . Bu ikinci giriş, ilk alfanümerik plaka basamağının hesaplamalarını ( p=3) aşağıya ( ) doğru ayarlamanızı sağlar p=0.

Örneğin, ikinci basamak için, her 1000 * 26 * 26 yinelemede çevrilmiş, işlem: mod(idivide(x,1000*26^2),26)0 ile 25 arasında bir dizin döndür, daha sonra char65 ekleyerek bir ASCII'ye dönüştürülür (dizin 0temellidir)

İkinci satır basitçe karakterleri bir araya getirir. Her alfanümerik karakter, fonksiyon kullanılarak hesaplanır c(x,p), sayısal karakter bir moduloişlemle basit bir şekilde hesaplanır ve dizgeye dönüştürülür.

Plaka numarasını oluşturan dizgenin her bileşeni aşağıdaki gibidir:

digit #     |    how often is it cycled             |  code
----------------------------------------------------------------
digit 1     | cycle every 1000*26*26*26=1000*26^3   | c(n,3) 
digit 2     | cycle every 1000*26*26   =1000*26^2   | c(n,2) 
digit 3,4,5 | cycle every iteration                 | num2str(mod(n,1000),'-%03d-')
digit 6     | cycle every 1000*26      =1000*26^1   | c(n,1) 
digit 7     | cycle every 1000         =1000*26^0   | c(n,0) 

MATLAB'ı çevrimiçi olarak denemenize izin veremediğimden ( düzenleme: aslında çevrimiçi deneyebilirsiniz ), MATLAB kullanıcılarının sınama durumlarını doğrulama olanağına sahip olacağım:

% chose some test cases
n = uint32([0;1;999;1000;675999;676000;456975999]) ;

% work out their plate numbers
plates = s(n) ;

% display results
fprintf('\n%10s | Plate # \n','Index')
for k=1:numel(n)
    fprintf('%10d : %s\n',n(k),plates(k,:))
end

çıktılar:

     Index | Plate # 
         0 : AA-000-AA
         1 : AA-001-AA
       999 : AA-999-AA
      1000 : AA-000-AB
    675999 : AA-999-ZZ
    676000 : AB-000-AA
 456975999 : ZZ-999-ZZ

Varyant: Sayıya karakter dönüştürmeye izin verme sprintfveya fprintfonunla ilgilenme seçeneğinin mümkün olduğunu unutmayın. İşlevin basitleştirilmesine izin verir c, ancak genel olarak bu uygulamada birkaç bayt ile sonuçlanır (119 bayt):

c=@(x,p)mod(idivide(x,1000*26^p),26)+65 ;
s=@(n)sprintf('%c%c-%03d-%c%c\n',[c(n,3),c(n,2),mod(n,1000),c(n,1),c(n,0)]')

1

q , 78 bayt

{sv["-","0"^-4$($:[x mod 1000]),"-"]2 2#(|).Q.A mod[x div 1000*26 xexp(!)4]26}

                                                    x div 1000*26 xexp(!)4     / input (floor) divided by 1000*26 ^ 0 1 2 3
                                                mod[                      ]26  / mod 26
                                           .Q.a                                / alphabet uppercase, indexed into by preceeding lines, for x=1000, we'd get "BAAA"
                                    2 2#(|)                                    / reverse and cut into 2x2 matrix ("AA";"AB")
               ($:[x mod 1000]),"-"                                            / string cast x mod 1000 and append "-"
            -4$                                                                / left pad to length 4, "  0-"
    "-","0"^                                                                   / fill nulls (" ") with "0" and prepend "-"
 sv[              x                ]y                                          / join elems of y by x

1

C (gcc) , 136 106 105 bayt

#define P(i)s[i]=65+x%26;x/=26;
z;s[]=L"  -%03d-  ";f(x){z=x%1000;x/=1e3;P(9)P(8)P(1)P(0)wprintf(s,z);}

Çevrimiçi deneyin!

-7 gelen bayt celingcat 'in çözeltisi ilave ile, -23 bunu ilham

Ceilingcat en -1 bayt çözeltisi değiştirerek char[]a wchar_t[]dolaylı dökümint[]

0 tabanlı endeksleme kullanır.

Açıklama / Ungolfed:

int s[] = L"  -%03d-  "; // Pre-made wide-string with dashes and ending null byte
                         // and wprintf directive for digits
int z;                   // Temporary variable to store the digit part
void f(int x) {
    z = x % 1000;        // The digits represent x % 1000
    x /= 1000;           
    s[9] = 'A' + x % 26; // Place least significant letter
    x /= 26;             // Divide off least significant letter
    s[8] = 'A' + x % 26; // Place second letter
    x /= 26;             // Divide off second letter
    s[1] = 'A' + x % 26; // Place third letter
    x /= 26;             // Divide off third letter
    s[0] = 'A' + x;      // Place fourth letter (Don't need to % 26 because x < 26 now)
    wprintf(s, z); // Print finished string (with x%1000 replacing %03d)
}

@ceilingcat Teşekkürler! Bu fikri kullanarak makrodan ave bparametrelerini kaldırdım ve 106 byte'a
düştüm



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.