Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
196
Cevap
12718
Tıklama
8
Öne Çıkarma
Cevap: Reddit, HN, Euler, DH gibi sitelerden iş görüşmesi soruları + ödev soruları (6. sayfa)
T
6 yıl
Yarbay
Konu Sahibi

Kodu denedim fakat ufak bir eksiği var: 1,2,3,3 serisini artan olarak degerlendirdi. artan seri deki şartımız önceki eleman < sonraki eleman yani şart < olmalı =< değil. C++'daki 'is_sorted' fonksiyonu da örneğin =< ile çalışıyor yani o fonksiyon da işe yaramaz.

Bu işi Raku'da (eski adıyla Perl 6) tek satırda yapabiliyorsun:

< Resime gitmek için tıklayın >

say [<] prompt("Seri gir: ").split(" ");

Kodun açıklaması:
sağdaki prompt("Seri gir: ").split(" ") Python'daki input().split(" ") ile aynı işi yapıyor yani kullanıcının girdiği seriyi tutuyor.

onun solundaki [<] ise 2 operatörün birleşimi [ ] indirgeme operatörü ve içine aldığı < ise indirgeme şartını ileten operatör ve bu operatör kombinasyonu seri boyunca elemanları < ile karşılaştırarak sonucu iletiyor.

Fakat bu [ ] operatörünün bir özelliği daha var: Matematikte "birleşme özelliği" vardır. Bu operatör, zincirleme birleşme özelliğine (chaining-associativity) default olarak sahip oyüzden seri boyunca < kontrolünde sadece 1 eleman uymasa tüm işlem negatif veriyor. Default zincirleme birleşme özelliğ yerine, soldan birleşme özelliğ de atayabilirsin. Veya içerdeki operatörü < değil de <= yapabilrsin ki o durumda senin Python kodu ile aynı sekilde sonuç verir.





< Bu mesaj bu kişi tarafından değiştirildi Tuğkan-0153 -- 19 Kasım 2019; 12:25:40 >

< Bu ileti mini sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @rekteo
H
6 yıl
Binbaşı

inputta sonda ',' koyulan case icin yaptim. 1,2,3,3, de 0 veriyor sonda ',' yoksa son sayiyi saymiyor.

perldeki mantikla 2 satira indirdim, cirkin oldu ama :
a=input().split(",")
print(not(False in [a[k]<a[k+1] for k in range(len(a)-2)]))


sonraki donem perl dersi var. bakalim bu trickleri gorecek miyiz.


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @vonderplanitz
T
6 yıl
Yarbay
Konu Sahibi

Çıktı verirken sonda virgül olabilir fakat veri girişnde olması için pek rastlanan şey değil. Sona da virgül koyunca doğru calıştı. 2 satırlık versiyon o kadar kötü sayılmaz. Üniversitede Perl dersinde bu trick'leri göstereceklerini pek sanmam. Ayrıca Raku gösterileceğini de pek sanmam, bahsettikleri ders Perl 5'tir.





< Bu mesaj bu kişi tarafından değiştirildi Tuğkan-0153 -- 19 Kasım 2019; 12:26:36 >

< Bu ileti mini sürüm kullanılarak atıldı >


Bu mesajda bahsedilenler: @rekteo
P
6 yıl
Yarbay

bunu nerede ve ne için kullanacağınız öğrene bilir miyim !?


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @vonderplanitz
T
6 yıl
Yarbay
Konu Sahibi

Konunun kağıt üstündeki amacı soruları en pratik kod ile çözmek Fakat asıl amacı programlamcılık becerilerini geliştirmek. Unutulan bazı programcılık yöntemlerini hatırlamak.

Dolayısıyla soruların gerçek hayatta kullanılması şart değil.





< Bu mesaj bu kişi tarafından değiştirildi Tuğkan-0153 -- 19 Kasım 2019; 12:27:48 >

< Bu ileti mini sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @SEO19
P
6 yıl
Yarbay

basit kod yazmak denince akla api gelir konu orada biter gider.

programlamayı geliştirmek diyorsanız

asm seviyesine inilmesi daha mantıklı olur !

ne kadar çok kod o kadar çok kontrol anlamına gelir.

amaç eğer performans ise !


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @vonderplanitz
T
6 yıl
Yarbay
Konu Sahibi

Amaç performans değil, daha doğrusu No.1 öncelikli değil, amaç basit fakat (cogu kez) temel matematik gerektiren soruları kısa ve net kod ile çözmek.

Örnein sort fonksiyonu kullanmadan artan seriyi kontrol etmek sorusunu kısa ve net kodlayabiliyor musun? Soru budur. Bu veya önceki diger soruları önce kod ile yanıtlayamıyorsan yoruma gerek yok.



< Bu ileti mini sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @SEO19
P
6 yıl
Yarbay

matematik & mantık diye bir programı dili olsa inan ki

dünyanın en verimli programlama dili bu olurdu.

mantık konusunda eşleştirme yöneticileri zaten klasik bunda sorun yok

matematik noktasında da aslında sıkıntı yok 4 fonksiyonla bütün işler yapıyor

+ - x / sorun şu ki bu dille her şeyi tanımlayabilmek varken.

fonksiyonlu dillerin fonksiyon terimleri amaçı hep unutturuyor.

keşke yeni bir programlama dili yazsanız !

işte burada verdiğiniz emeğe değer.


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @vonderplanitz
T
6 yıl
Yarbay
Konu Sahibi

Raku (eski adı Perl 6) için modern bir matematik dili denilebilir. Matematikte operatör önceliği diye bir nes vardır örneğin 1 + 2 / 2 'de bölü operatörü artıya göre öncelikli değil mi, Raku 'da (1 + 2) / 2 gibi operatör önceliğini soldan birleşimli olacak şekilde yeniden tanımlayabiliyorsun. Kalkulüsteki 'sonsuz seri' yapısını da Raku 'da tanımlayabiliyorsun, örneğin 'phi' denilen altın oran sayısı, sonsuz seri biçiminde gösteriliyor Raku'da da onu özdeş biçimde göstererek saydırabiliyorsun. "Unicode Alphabetics" desteği sayesinde matematik gösterimleri direkt kodun içinde kullanabiliyorsun, örneğin alttaki SS'te Rj gösterimi. Bu kod 17.yy matematikçilerinden Pierre de Fermat 'ın teorimini kullanarak cok büyük sayıların asal olup olmadığını denetliyor:

< Resime gitmek için tıklayın >

Görüldüğü gibi Raku'da ile birçok matematiksel programlama yöntemi kolaylıkla kullanılabiliyor sen "keşke matematik & usbilim programlama dili diye bir nes olsa" diyorsun :)

Bu arada Raku matematiklsel programlamayı yoktan bulmuş (Arapça: sıfırdan icat etmiş) değil, hepsini direkt Haskell programlama dilinden almış dolayısıyla bu işin öncüsü öncüsü Haskell'dir ancak Raku bu işi pratikleştirmiştir.





< Bu mesaj bu kişi tarafından değiştirildi Tuğkan-0153 -- 11 Ağustos 2022; 11:12:55 >

< Bu ileti mini sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @ProjectMan
P
6 yıl
Yarbay

her programlama dili farklı bir yol izler ona göre piyasadaki rakibi olmayan bir kulvarda koşmaya çalışır.

2. olarak daha önceki yazınızda daha kısa kod yazmaya odaklı bir yorumunuz vardı.

kısa kod yazmak ezbere dayalı bir sistem haliyle tembel bir toplum yaratır.

tek becerisi kpss sorularında başarı yakalamak olur. ve 90 puanla hademeli seçen bir insanlar topluluğu oluşturur.

programlama ; fonksiyon parametrelerini ezberlemek değil ! programlama bilmeden matematik diliyle hayatı sayılarla ve mantıklaştırılmış gruplarla tanımlayıp matematiksel işlemlere çevire bilmekten ibarettir.

şimdide perl konusuna atlamışsınız neyse konuyu hak vermek anlamıyla tamam olay perl dersiniz,
ama diğer dillere geri dönüş olursa ortada diğer diller değil programlama ile program dilinin ingilizce olması
aslında insanların hem ingilizce hemde o dilin kendi mantığına göre matematiksel lugat girme şekli farklı

özetle ortada programlayı evrensel bir dil haline getirmek yerine programlamayı kişisel ve farklı bir noktaya götüren
evrensellikten öte yöreselliğe çeken program geliştiricileri ortada, onlar için ingilizce ana dili ama bizim için yabancı bir dil. ne zaman tüm dünyadaki insanlar için ana dil gibi bir dil daha doğrusu %100 matematik dili temelli bir programlama diliyle programlama yapılırsa işte o dil evrensel anlamda güzel bir ortak dil olur.

ama yinede o dile yine çamur atacaklar yok yavaş çalışıyor diyenler olacaktır.


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @vonderplanitz
T
6 yıl
Yarbay
Konu Sahibi

Güncel konu başlığı olan sort fonksiyonu kullanmadan artan seriyi kontrol etmek problemini C++ ile çözdüğüm 21 sıralık kod.
< Resime gitmek için tıklayın >

Görüldüğü gibi her bir durum için (Arapça: daim) kısa kod yazmıyorum.

Koddaki sregex_token_iterator klası C++'ye yeni eklenen özellik olup (Arapça: ve) C++'da 30+ yıldır olmayan string 'split' / dize 'bölme' fonksiyonunun işini yapıyor.

Ancak kodun esas yeri (Arapça: kısım) olan artan seri denetleme fonksiyon şablonu / template yine tek sıra :)





< Bu mesaj bu kişi tarafından değiştirildi Tuğkan-0153 -- 11 Ağustos 2022; 11:15:30 >

< Bu ileti mini sürüm kullanılarak atıldı >


Bu mesajda bahsedilenler: @ProjectMan
T
6 yıl
Yarbay
Konu Sahibi

1 den 9'a dek (Arapça: kadar) sayıların (Arapça: rakamların) herbirini yalnızca (Farsça: sadece) bir kez içerecek biçimde (Arapça: şekilde)

123456789
123456798
123456879
123456897
123456978
123456987
123457689

...

987654321

permütasyonlarından (sayıları büyüklüklerine göre sıralayarak) 111.111nciyi bulunuz.





< Bu mesaj bu kişi tarafından değiştirildi Tuğkan-0153 -- 11 Ağustos 2022; 11:16:56 >

< Bu ileti mini sürüm kullanılarak atıldı >

T
6 yıl
Yarbay
Konu Sahibi

Şöyle bir çözüm var.(Alıntıdır)
< Resime gitmek için tıklayın >

Burada herhangi bir algoritma geliştirmeden yalnızca veri yapısı kullanarak çözmüş. Sayıların permütasyonlarını Ağaç/tree veri yapısında tanımlamış. Ağacın kökü tüm verilenlerin tüm sayılarını içeriyor, ağacın her bir dalı ise daha önce bakılmış sayıların dışındaki (Arapça: haricindeki) öteki (Arapça: diğer) tüm sayıları içeriyor. Ağaçta tek bir sayı kalana dek rekürsif olarak sürüyor (Arapça: devam ediyor) Ağaçta tek sayı kalınca digits[0] daki sayı çözüm oluyor.





< Bu mesaj bu kişi tarafından değiştirildi Tuğkan-0153 -- 11 Ağustos 2022; 11:19:46 >

< Bu ileti mini sürüm kullanılarak atıldı >

D
6 yıl
Yüzbaşı

quote:

Orijinalden alıntı: Tuğkan-0153

8 karakterli kombinasyonları Raku (eski adıyla Perl 6) kullanarak 1 anda buldurdum.

Kod biraz karışık görünmekle beraber, Perl bilenlere tanıdık gelecektir.

< Resime gitmek için tıklayın >
Vayyy hocam Emacas kullanıyoruz. :) Yıllar sonra bu forumda gördüm şunu sonunda. Yok Python, Atom, VSCode, yok Sublime bilmem ne. Bu işlerde ne kadarlık bir tecrübeniz var, bir de yaşınızı alabilir miyim sakıncası yoksa eğer. :)


Bu mesaja 1 cevap geldi.
T
6 yıl
Yarbay
Konu Sahibi

Emacs Java ile C# 'deki autocomplete özelliklerini bile çalıştırıyor; bellekte yalnızca 40MB harcıyor, Win-OSX-Linux-FreeBSD dörtlüsünde sorunsuz calışıyor, ayrıca Terminal modu da var, dolayısıyla SSH ile uzaktan bağlantı yaptığında uzaktaki bilgisayarda emacs acıp tüm bu özellikleri kullanabiliyorsun. O yüzden default editörüm oldu. Emacs ten önce VIM kullanıyordum. 40 lı yaşlardayım fakat 40'lı yaşlardaki kişilerden hem görüntü hem de öteki açılardan ayrıyım. Görüntü derken giyim değil, modayı izlemem.





< Bu mesaj bu kişi tarafından değiştirildi Tuğkan-0153 -- 11 Ağustos 2022; 11:36:7 >

< Bu ileti mini sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @Dentrax
D
6 yıl
Yüzbaşı

quote:

Orijinalden alıntı: Tuğkan-0153

Emacs Java ile C# 'deki autocomplete özelliklerini bile çalıştırıyor; bellekte yalnızca 40MB harcıyor, Win-OSX-Linux-FreeBSD dörtlüsünde sorunsuz calışıyor, ayrıca Terminal modu da var, dolayısıyla SSH ile uzaktan bağlantı yaptığında uzaktaki bilgisayarda emacs acıp tüm bu özellikleri kullanabiliyorsun. O yüzden default editörüm oldu. Emacs ten önce VIM kullanıyordum. 40 lı yaşlardayım fakat 40'lı yaşlardaki kişilerden hem görüntü hem de öteki açılardan ayrıyım. Görüntü derken giyim değil, modayı izlemem.
Ben de Spacemacs kullanıyorum 2 yıldır yaklaşık. VIM plug-in ile tabii ki. Emacs tuş kombinasyonları kanser etmişti. Ama şu sıralar hem Editörü hem de VIM 'i değiştirsem mi diye düşünüyorum. Siz bu yollardan geçmişsiniz, ne tavsiye edersiniz? Bir de keşke erkenden şöyle şöyle yapsaydım vb. gibi dediğiniz bir şey oldu mu hiç? Bir de "diğer açılardan farklıyım" dediniz, biraz açabilir misiniz? :)

İnternette farklı kişilerden, bloglardan, videolardan vb. kendim için fikirler çıkartmak için notlar alıyorum sadece. Cevaplamak istemezseniz alınmam. :)



T
6 yıl
Yarbay
Konu Sahibi

Yeni soru:
< Resime gitmek için tıklayın >
Bu soruda isterseniz matematiksel ön işlem yapabilirsiniz (= soruyu yalnızca matematik kullanarak çözebilirsiniz)





< Bu mesaj bu kişi tarafından değiştirildi Tuğkan-0153 -- 11 Ağustos 2022; 11:37:7 >

< Bu ileti mini sürüm kullanılarak atıldı >

T
6 yıl
Yarbay
Konu Sahibi

Kullanıcının girdiği sözcükteki imlere . (benek) ekleyerek yazdıran program yazınız. Örnek:
Girilen sözcük: hello
Çıktı: h.e.l.l.o.





< Bu mesaj bu kişi tarafından değiştirildi Tuğkan-0153 -- 11 Ağustos 2022; 11:37:49 >

< Bu ileti mini sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.
S
6 yıl
Yüzbaşı

python
 
print("".join([e+'.' for e in input("Girin: ")]))



< Bu ileti mini sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @vonderplanitz
T
6 yıl
Yarbay
Konu Sahibi

for döngüsünü Python closure olarak yorumluyor oluşan generator object'i [ ] içine alınca dizi oluyor, join'leyince de çıktı veriyor. Oldukça pratik ancak denediğimde input yerine raw_input gerekti.

Raku'da işlem:

prompt("Girin: ").comb.map(*~'.').join.say

comb, prompt 'un döndürdüğü string'i dizi yapıyor, map( * ~ '.') dizinin her elemanına '.' ekliyor. map fonksiyonuna parametre olarak verilen * Raku aracılığıyla parametre, dolayısıyla (h e l l o) listesindeki elemanları gösteren değişken olarak yorumlanıyor ~ (tilde) imi Raku'da string ekleme operatörüdür dolayısıyla h. e. biçiminde liste üretilir. Sonrasında join parametresiz parantezsiz cağırılarak dizi elemanlarınden string yapılıyor, en sonda, her nesnede tanımlı metod olan say ile sonuç basılıyor...





< Bu mesaj bu kişi tarafından değiştirildi Tuğkan-0153 -- 11 Ağustos 2022; 11:40:4 >

< Bu ileti mini sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @seyfi84