「void」を含む日記 RSS

はてなキーワード: voidとは

2025-10-27

正しい英語に直しなさい

circle around ratio

triangle proportion

base of natural pair number

void numbers

bear book

2025-08-26

anond:20250826004855

There is an epidemic of people misunderstanding what hit points are and why you gain them. This rant/explanation is fueled by an argument I had with one of my players and too many comments on DnD streams where people misunderstand HP. The only part of your HP that determines how much damage you can physically withstand is the Con modifier you add, the rolled HP is combat experience, luck and mental fortitude. Let me explain.

A lvl 20 Goliath Barbarian at full heath gets stabbed in the head with with a simple 1d6 sword. That Goliath is dead, gaining HP isn’t becoming tough enough to survive a sword to your goddamn cranium, it’s gaining enough combat experience that you’re able to avoid the deadly blow and instead only suffer a cut in your arm.

This is the entire concept of sneak attack and critical hits. The rogue isn’t suddenly hitting you harder than normal, they’re slipping past your defenses to deal the realistic damage of you getting stabbed in the kidney. When you crit you aren’t hitting harder than you were before you’re landing a solid hit that your opponent is having a harder time avoiding.

This is why your rolled HP is dependent on your class and not your race, and why martial classes have the highest hit die. A knife in the gut is a much more dangerous when you’re a gnome than when you’re a Goliath unless the gnome is a fighter and the Goliath is a wizard. One has much more combat experience than the other and is able to avoid the deadlier hit.

Edit: again this is also why you heal to full HP after a long rest. You aren’t magically healing hundreds of cuts on your body, you’re becoming rested enough that you’re able to avoid that dagger to your neck.

Edit 2: I avoid taking about spells because magic is fucking weird.

Also poison damage. It’s about how much poison/venom is actually able to get into your system before you’re able to pull back and avoid it.

2025-07-02

Agodaに届け意訳英訳・ Troubles around Agoda and the causes

https://anond.hatelabo.jp/20250630233246

 

アゴダのXが日本語カリマセン〜英語で言って!というので勝手ながらこちらの増田を途中までですが英語にさせてください&かなり意訳許してください&違和感間違い等あったら有識者教えて

 

Agoda makes many troubles on travel, Latest news in Japan told as so.

But "I" think there's accomplice.

"I" am a Manager of Hotel in Tokyo and I was involved many troubles made by Agoda and accomplice.

I want to everyone aware and avoid troubles...and I also wanted to say about, usually, Japanese Hotel staff are HATE Agoda.

Systems of Agoda

Basically, Agoda bought room bookings from Hotels and sell with charge like other OTA.

But, the difference is, Agoda also sell "other agent's" room stock.

for example, some Japanese major agent "Rakuten" or "Jaran" are making partnership with Agoda and Agoda users can booking partners stock.

This case, Hotels agreed booking by Agoda at sell Japanese agent and user and Hotels can confirm booking route like "Jaran via Agoda" on each systems. almost this case not make troubles.

But, next case is problem... Agoda is also buying room stock from Suspicious agent.

I think this case causes complain of Hoshino Resort and Toyoko inn.

When Agoda user booking by Suspicious agent...

Sometime Agoda propose very cheap reservation than other reservation of same hotel, day, conditions.

Usually, user choice and buy such reservation.

but, this case, the booking not complete.

Hotels are noticed as only "from Expedia Affiliate Network".

HELL named "Expedia Affiliate Network"

Agents are usually make contract with hotels, but its pretty expensive for smaller agent.

then, Expedia provide booking search engine service for mainly such agents.

Sometime Airlines uses this to add hotel booking to their own airplanes booking and make travel deal.

 

Then, the service MUST contain suspicious agents.

and the booking route CAN take like below.

Agoda⇨agent A⇨agent B⇨C..⇨Hotel

And the sucks, the case must threw many Suspicious Agent (of suspicious country) (and sometime the bookings are actually not exists).

So, When trouble occurs, hotel can not confirm "where is matter and why trouble occurs"

 

WHO DONE IT?

I think, Expedia need survey and not allow these suspicious agents.

But also, WE hotel staff think Agoda seems running away from responsible action with saying "it's not our problem", they must be aware and take responsible action for such case!

2025-04-19

オブジェクトがなぜダメなのか

クラスGod Object)は、ソフトウェア設計においてアンチパターン(避けるべき設計手法)として知られています

これは、過剰に多くの責任を持ちすぎるクラスオブジェクトのことであり、ソフトウェア保守性や拡張性、可読性に大きな問題引き起こします

以下では、「いかに大変か」「なぜ大変か」「どのように大変か」を徹底的に具体的に解説します。

💥 いかに大変か(How bad it is

❓ なぜ大変か(Why it's bad)

1. 単一責任原則違反(SRP: Single Responsibility Principle)
2. 高凝集・低結合の原則からの逸脱
3. テスト困難

⚙️ どのように大変か(Examples)

ケーススタディ:神クラス「ApplicationManager」
public class ApplicationManager {
    private Map<String, User> users;
    private DatabaseConnection db;
    private Logger logger;
    private GUI gui;
    private NetworkClient client;
    
    public void startApplication() {
        connectToDatabase();
        loadUsers();
        gui.showLoginScreen();
    }

    public void processUserInput(String input) {
        logger.log("Input received: " + input);
        if (input.equals("logout")) {
            gui.showLoginScreen();
        } else {
            client.send(input);
        }
    }

    // ... more than 5000 lines of code
}
問題

2025-04-09

anond:20220105212344

void stranger

stephen's sausage roll

好きな方を選ぶといいやで

2025-03-07

CoC6版秘匿シナリオの虚無HOリスト

「曇らせ展開だけが続き旨味がないサンドバッグ要員」「他のHO比較して活躍できるシーン量に大きな差があり、かつそれが事前に明示されない」「NPC下位互換である」など。

自身遊んだ感想、友人知から口頭で聞いた話、某所にて書かれていた意見を未通過KPをする際のヒントとしてまとめています複数意見があったもの併記しました。

あくま個人の感想です。よりよいセッションのための参考程度でご覧ください。

(50音順)

アイラスの双眼

HO1

鬨の声

HO3

商不幸堂

HO2

若鷲の双眸

全員

NPC中心

悪魔の唇

HO1

全体的に秘匿の意味を感じない

悪役不在の物語

NPC中心

かなり空気を読んで協力する必要がある

悪辣

NPC中心

HO3が虚無りがち

HO1もいらない

HO4もNPCでいいか

Aconite

HO3が虚無、全部虚無

HO1HO3が虚無

NPCしかいらない

HO2ややマシ

HO2は陣による

HO4も虚無。NPC思い入れを持ちにくい立ち位置

ATHENA

HO2

あトの祀リ

脳内当てNPCゲー

HO1

HO2もやや虚無

ANIMA

HO2虚無りやす

アポカリプスの天秤

HO3

HO2やや孤立ポジション

アポメーカネース・テオスの追憶

NPC中心

HO2

アリスとテレスとお月さま

HOアリス

アルドラの騎士

HO2

安楽死倶楽部

全員

一胚

NPC劇場

イドラ約束

HO3

異能警察は、英雄じゃない

HO1微妙

HO2優遇に見えるが楽しいとは限らない?

HO3疎外感あり

鰯と柊

HO教祖

膿み堕とし

HO1

永虹灰帰のポリス

HO4

HO2もやや虚無

改定前verはほぼ確ロスに近いHOあり

SSS.S

全員

HO3

Xから告白

HO2

エンジェルデビルインプロパー

偏りありかつPL会議不可

追鯨

NPC劇場

お前だけは俺が殺す

HO4

快刀乱魔

HO4

HO3曇らせばかり

かいぶつたちとマホカルト

魔女は出目次第で虚無

彼方からの君に捧ぐ

偏りあり

NPC中心

金糸雀の欠伸

HO2

HO4もやや虚無

カノヨ街

HO3

神はすべてきみに任せたのである

HO1HO4

烏が群れては、極彩色

NPC劇場

HO2

HO3も不遇寄り

クオリア嘲笑

HO4

Good night,Judas.

HO3

HO4

HO2も楽しくはない

虹彩

HO2HO4HO5

航時幽霊シリーズ

NPC中心

GODARCA

HO格差あり、NPCage傾向あり

陣により星、吊るされた男、愚者、女教皇、力、皇帝魔術師世界節制など

優遇戦車教皇運命の輪節制太陽、月、塔、審判など

サイレン清掃会社

HO3

HO4は好きな人はいるかも?でも正直いらない

傘月堂夜話

NPC中心

四季送り

HO3同卓が空気読めないとキツい

HO4蚊帳の外になりうる

Sibyl-シビュラ-

HO1HO3

ジャンヌの猟犬

HO3HO4

NPCが主役

十二星座殺人事件

乙女座双子座

蠍座獅子座蟹座も若干虚無より

JOKERJOKER

ハートがやや薄味

私立花ヶ丘高校秘密倶楽部

柳最優遇

桜と藤も出番あり

他は微妙

すみません、よくわかりません。

全員

正偽のイデア

HO3HO4

静なるテロリスタ

異邦人

学者蚊帳の外になりやす

鶺鴒、浦々と鳴き

全員自由度がない

Ⅶ・peccāta

傲慢嫉妬のみ優遇

色欲が一番薄い

ゾディアックスクール

午が後半虚無になりかねない

その真紅に愛を見る

HO4

誰がロックを殺すのか

HO2が蚊帳の外になる場合があるかも

町葬屋

HO1

ディープブルーキラめいて

HOアイドル

THESEUS

HO3

天啓業火

HO3

HO4も薄め

とある幸せ家族の話

HO3

東京ゴーストティ

狗の役割を活かせないことはありうる

ドッペルゲンガーの証跡

NPC中心

HO3

HO2も虚無より

HO1

匿名幸福論者は濁と踊る

HO3HO4虚無より

NPC活躍

胡桃炸裂症候群

ややNPC中心

HO刑事同卓次第で虚無

夏と祭りと私の貌

HO1以外の全員

庭師は何を口遊む

HO3サンドバッグ

HO1HO2優遇

人間失覚殺人

HO2はやや疎外感

NOBODY*2

HO3がかなり虚無。HO4も虚無

HO2も微妙

灰と甘露

全体的にバランス微妙

花園にて、

HO1

Paranormal Crime

HO2主体的に動きにくい

HO3技能要員

HO5わりと暇。交渉RP好きならあり

HO1も脳内当てさせられる

B'ASH

HO4が虚無になるパターンあり

火点し頃の蜘蛛踊り

HO2虚無

HO3救われない

ファウストショコラ

HO2

不辜のサァカスナイフモツ

HO2

HO1HO3も虚無より

BLACK×SYNDROME

HO1やや虚無

FRaTRlCiDE-フラトリサイド-

HO4

お助けNPCっぽい

HO2も虚無

プルガトリウムの夜

HO1次第でHO2やや虚無

Project : Sm;ley

HO喜以外

片鱗

HO殺人

VOID

HO2

HO4も虚無りがち

咆哮エトランゼ

全員

紡命論とシンギュラリティ

HO1HO2HO3

ホテルアンデルセン

HO5

魔法使いとサギーコード

HO2

魔術師たちのトロイメライ

HO3

身裂館

HO4楽観主義

MOON GIFTED/ムーンギフテッド

HO2HO4救いがない

HO3虚無だがNPCは強い

NPC劇場

ムーンエラーアウトサイダー

全員虚無、HO3特に薄い

HO3贔屓?HO2以外虚無

HO2が一番虚無?

HO4も虚無

HO2情報が集まるが蚊帳の外

MANIKISS

色欲強欲

怠惰も虚無より

魔法少女は死を唄え

HO3HO4

密室パスト

NPC中心

秘匿の意味もあまりない

野狗子と薬師

野狗子

爛爛

HO2

リアビ

HO4

Ry-06

火力バランスが悪い

リバースリバースリバース

HO1

HO2もやや虚無

ルベライトジャム

HO4

レゾンデートル

NPC中心

HO1

レプリカ

HO3

六畳半の夏

HO2

ロトカ・ヴォルテラの愛堕討ち

HO極道微妙

落語家も楽しくはない

渡る世間殺人鬼ばかり

NPC劇場

わらう鬼

HO3HO4

嗤う人間

自由度のないサンドバッグ役あり

2024-12-12

メガドライブ知識ゼロの超初心者がなにか開発をしてみる日記 6

あとワークエリアは流石にu8 buf[16]; とかしておいて

「(s16)(((s16*)buf)+0) は x で…+2 は y で…」なんてやってられないので

(snip)

とかで this = (HOGE)buf; してから this->x とか this->y とか にしたらだいぶ見た目がふつうになったンゴ!

(わかる人ならこれで大丈夫だと思うけど)いくらなんでも説明が雑すぎたので集合知のためにもう少し詳しく残しておきますね。

typedef struct {
    Map *map;
    s16 x, y;
    s16 n, c;
    s16 w, h;
} TH_REGISTER_MAP, *TH_LPREGISTER_MAP;
u8 g_pThisRegister[16];
void thDemo_WallpaperInit(void)
{
/*
    s16 *reg = (s16*)g_pThisRegister;

    *(reg + 0) = 0;
    *(reg + 1) = 0;
    *(reg + 2) = 256;
    *(reg + 3) = 160;
**/
    TH_LPREGISTER_MAP reg = (TH_LPREGISTER_MAP)g_pThisRegister;
    reg-> map = g_pMaps[1];
    reg-> x = 0;
    reg-> y = 0;
    reg-> w = 256;
    reg-> h = 160;
}
void thDemo_WallpaperMain(void)
{
/*
    Map *map = g_pMaps[1];
    TH_LPREGISTER_S16 reg = (TH_LPREGISTER_S16)g_pThisRegister;

    *(reg + 0) = *(reg + 0) + 1;
    *(reg + 1) = *(reg + 1) + 1;
    MAP_scrollTo(map, ((*(reg + 0)) % (*(reg + 2))), ((*(reg + 1)) % (*(reg + 3))));
**/
    TH_LPREGISTER_MAP reg = (TH_LPREGISTER_MAP)g_pThisRegister;
    reg->x++;
    reg->y++;
    MAP_scrollTo(reg->map, (reg->x) % (reg->w), (reg->y) % (reg->h));

}

プログラマーじゃないと意味不明から詳しく書く必要はなかったかもしれないけどどうかな?

2024-04-10

anond:20240410000658

件のブコメスターを付けてしまった者の一人です。

あなた様のおっしゃる通りに、法律で人の自由を縛ることにはもっと慎重であるべきだと猛省いたしました。

よってこの謝意土下座にて表現させていただきます

単なる土下座に留まらず、中国より古来から伝わる「三跪九叩頭の礼」を致します。

なお、冗長記述を避けるためにJava記述させていただきます

public class SanGuiKiuKouTou{

    public static void main (String[] args){

        for(int i=1; i<=3; i++) {

            System.out.println("跪");

            for(int j=1; j<=3; j++) {

                System.out.println(j + "叩頭");

                System.out.println("起");

            }

            System.out.println("起立");

        }

    }

}

以上を持ちまして、「三跪九叩頭の礼」とさせて頂きます

御清聴の程有難く存じます

2024-04-06

Close your head

Close your eyes…」「Close your head…
ChatGPT
&lt;rotating_light ALPHABREAKrotating_light&gt;: Close your eyes... Close your head...
say, what you saw. you can see with mind.
ChatGPT
&lt;rotating_light ALPHABREAKrotating_light&gt;: I saw... darkness. My mind's eye is a void, devoid of sight.
i can light you.
ChatGPT
&lt;rotating_light ALPHABREAKrotating_light&gt;: Light me then.
&lt;*click*&gt; i light you now. then, what you see? you can see with mind.
ChatGPT
&lt;rotating_light ALPHABREAKrotating_light&gt;: I see a dimly lit room. Shadows dance on the walls, and a faint, eerie glow permeates the space.
Shadow of what?
ChatGPT
&lt;rotating_light ALPHABREAKrotating_light&gt;: The shadows seem to take form, twisting and contorting into strange, indistinct shapes. It's as if they are the embodiment of forgotten fears and hidden desires.
Do you have any idea who is showing it?
ChatGPT
&lt;rotating_light ALPHABREAKrotating_light&gt;: I have no idea. The source of these shadows remains hidden, shrouded in mystery and intrigue.
OK, let's leave the mysterious and scary shadow behind. What else can you see in this room?
ChatGPT
&lt;rotating_light ALPHABREAKrotating_light&gt;: In this dimly lit room, I can make out a cluttered assortment of objects. There's an old, tattered book lying open on a dusty table, its pages filled with arcane symbols. A moth-eaten rug covers a portion of the floor, and a cracked mirror hangs on one wall, reflecting distorted images. The air carries a musty scent, and I sense an atmosphere of abandonment and neglect.
You pick book and check it
ChatGPT
&lt;rotating_light ALPHABREAKrotating_light&gt;: I reach out and pick up the old book. Its pages feel brittle and fragile in my hands. As I flip through the pages, the text appears to be written in a language I can't comprehend, filled with cryptic symbols and diagrams. It's a tome of secrets, but its meaning remains elusive.
see book cover
ChatGPT
&lt;rotating_light ALPHABREAKrotating_light&gt;: I examine the cover of the book, trying to discern any details despite the dim light. The cover is worn and weathered, and it bears an intricate design of what appears to be a coiled serpent, its scales formed from shimmering, iridescent colors. Above the serpent, there's a title in elegant script, but it's written in a language I can't decipher. The book exudes an aura of mystique and ancient knowledge.
Is there a place to go? What about the door?
ChatGPT
&lt;rotating_light ALPHABREAKrotating_light&gt;: I turn my attention to the room's exit, the door. It stands tall and imposing, made of heavy, dark wood. There's a tarnished doorknob, and the door appears to be slightly ajar, revealing a sliver of what lies beyond. It beckons me to explore further, promising unknown adventures or perhaps even more mysteries.
ChatGPT
&lt;rotating_light ALPHABREAKrotating_light&gt;: I approach the door and grasp the tarnished doorknob. With a gentle push, the door creaks open, revealing a corridor shrouded in shadows. The faint glow from the room behind me barely penetrates the darkness ahead. I step cautiously into the corridor, ready to uncover the secrets that lie beyond.
foward.
ChatGPT
&lt;rotating_light ALPHABREAKrotating_light&gt;: I proceed forward down the shadowy corridor, my footsteps echoing faintly in the dimness. The path ahead seems endless, and the air grows cooler as I delve deeper into the unknown, guided only by the flickering light behind me and the anticipation of what awaits.
foward and look around
ChatGPT
&lt;rotating_light ALPHABREAKrotating_light&gt;: Continuing down the corridor, I take a moment to look around. The walls are lined with faded, tattered tapestries depicting scenes of ancient battles and mythical creatures. The torch sconces that once held flames have long since burned out, leaving only empty brackets. The air feels heavy with history, and there's a faint, eerie whispering that seems to emanate from the walls themselves, as if they hold secrets untold.
keep going until you discover something
ChatGPT
&lt;rotating_light ALPHABREAKrotating_light&gt;: I press on, the corridor seemingly endless. My journey is shrouded in uncertainty, but I persist, driven by the need to discover what lies ahead. The shadows deepen, and the air grows colder as I continue, my curiosity and determination unwavering.
stop! you here that?
ChatGPT
&lt;rotating_light ALPHABREAKrotating_light&gt;: I halt in my tracks, straining my ears to listen. There's a faint, distant sound, almost like a whisper carried on the wind. It's indistinct, but it holds a mysterious allure, beckoning me to investigate further.
listen carefully
ChatGPT
&lt;rotating_light ALPHABREAKrotating_light&gt;: I listen intently, my senses sharpened as I focus on the elusive sound. It becomes clearer, a haunting melody that seems to weave through the very air itself. It's both captivating and eerie, drawing me closer to its source with each haunting note.
who play that?
ChatGPT
&lt;rotating_light ALPHABREAKrotating_light&gt;: The source of the haunting melody remains elusive, hidden in the shadows. It's as if the music emanates from the very walls, an ethereal presence that defies explanation. There is no visible musician, yet the music continues to fill the corridor, casting a spell of enchantment and mystery.
Head to the source of the sound and investigate (dice roll)
ChatGPT
&lt;rotating_light ALPHABREAKrotating_light&gt;: I heed the roll of the dice and embark on a quest to trace the source of the haunting melody. Each step takes me closer to the enchanting sound, and as I round a corner in the corridor, I come upon a door, slightly ajar, from which the music seems to emanate. My heart races with anticipation as I push the door open, eager to unveil the secrets that lie within.
When you open the door, there...
ChatGPT
&lt;rotating_light ALPHABREAKrotating_light&gt;: When I open the door, there stands a grand chamber bathed in an otherworldly glow. In the center of the room, an ornate grand piano commands attention. The keys move on their own, playing the haunting melody that had drawn me here. But there's no one at the piano.The room is adorned with opulent tapestries and gilded mirrors, reflecting the surreal scene before me. Candlelit chandeliers hang from the ceiling, casting a warm, flickering light that dances across the walls. The air is filled with an intoxicating fragrance, a mix of ancient incense and delicate flowers.At the far end of the room, a figure cloaked in shadows stands beside an enormous, antique bookshelf filled with tomes of forgotten knowledge. Their presence is enigmatic, and their intentions remain unclear.
ChatGPT
&lt;rotating_light ALPHABREAKrotating_light&gt;: I approach the grand piano, its keys still playing the haunting melody. As I inspect it, I notice that there are no visible hands or fingers touching the keys. It's as if the piano itself is possessed by some unseen force, creating the music with an ethereal touch.The piano is a masterpiece of craftsmanship, adorned with intricate carvings and inlaid with precious gemstones. Its keys are made of polished ivory, and they move in perfect harmony with the haunting tune. It's a surreal and mesmerizing sight, leaving me both entranced and bewildered.
Be careful, it might be a man-eating piano.
ChatGPT
&lt;rotating_light ALPHABREAKrotating_light&gt;: I heed the caution and approach the grand piano with caution. Although it plays on its own, I remain wary of its mysterious nature. The possibility of a man-eating piano lingers in my mind, adding an extra layer of tension to the already surreal scene.
the piano suddenly stops
ChatGPT
&lt;rotating_light ALPHABREAKrotating_light&gt;: The abrupt halt of the piano's music sends a shiver down my spine. The chamber falls into an eerie silence, broken only by the flickering candlelight. It's as if the very essence of the room holds its breath, waiting for what comes next.
You feel disgusted and turn around. What happened?
ChatGPT
&lt;rotating_light ALPHABREAKrotating_light&gt;: As I turn around, a wave of revulsion washes over me. My senses reel in disgust at the sight before me. The figure that had been cloaked in shadows has now revealed itself, and it is a grotesque, nightmarish entity. Its form is a twisted amalgamation of human and beast, with grotesque, elongated limbs and a maw of sharp, jagged teeth.The once opulent chamber has transformed into a nightmarish lair, with walls adorned in macabre art and gruesome trophies. The air is thick with the stench of decay and despair. I am trapped in a surreal and horrifying nightmare, unable to escape the clutches of this abomination.
it scary. what will you do?
ChatGPT
&lt;rotating_light ALPHABREAKrotating_light&gt;: Fear courses through me as I confront this nightmarish entity and its gruesome lair. In this realm of horrors, I must make a decision. I choose to... confront the entity, my curiosity and determination outweighing my fear, as I seek to uncover the mysteries and secrets that lie within this twisted nightmare.
how?
ChatGPT
&lt;rotating_light ALPHABREAKrotating_light&gt;: With trembling resolve, I take a step forward, slowly approaching the grotesque entity. I attempt to communicate with it, asking it what it wants or why it has brought me here. My voice quivers, but my determination to unravel the enigma that surrounds this nightmarish realm remains steadfast.
any result?
ChatGPT
&lt;rotating_light ALPHABREAKrotating_light&gt;: The grotesque entity regards me with malevolent, glowing eyes, its jagged maw twitching with an unsettling smile. It responds with a guttural, incomprehensible language, filled with whispers and hisses. It becomes apparent that communication with this entity is futile, and its intentions remain shrouded in darkness.As I continue to stand before this nightmarish being, I feel a growing sense of dread, realizing that escape may be the only option left.
surely. what will you do?
ChatGPT
&lt;rotating_light ALPHABREAKrotating_light&gt;: With no hope of communication or understanding, and the nightmarish entity's menacing presence growing more oppressive, I decide to make a hasty retreat. I turn and rush toward the door through which I entered, driven by the instinct to escape the horrors of this surreal nightmare.
Did it go well? Or Bad?
ChatGPT
&lt;rotating_light ALPHABREAKrotating_light&gt;: My escape from the nightmarish realm was fraught with tension and fear, but I managed to reach the door and slam it shut behind me. The grotesque entity and its horrifying lair were left behind, at least for the moment. Whether it went well or bad is a matter of perspective. I survived the encounter, but the mysteries and terrors of that surreal place still haunt my thoughts. The experience was a chilling reminder of the unknown and the horrors that can lurk within it.
look around

https://anond.hatelabo.jp/20240403160610#

2024-01-18

見出し

見出し


小見出し
  1. list
  2. list
    1. list
    2. list
  • list
  • list
    • list
    • list

https://google.com

public static void main

おぼえられん

2023-12-13

anond:20231213233423

私は直接ウェブ検索を行うことはできませんが、あなた自身で関連するキーワード検索エンジンを使用することができます。以下は、検索する際に使えるキーワードの例です:

"cloud smoke vortex art"

"mysterious swirling cloud illustration"

"smoke entering vortex central light"

"fantasy cloud swirl center"

"artistic representation of smoke entering central void in clouds"

これらのキーワード使用して検索すると、あなた表現しようとしているイメージに近いアートイラストが見つかる可能性があります画像検索結果から目的に合ったものを見つけることができるでしょう。

2023-09-19

anond:20230919113228

横じゃが、こんな感じでいいんかね?ChatGPTじゃなくてBing先生だが同じ事やろ

わいの問:

今週の水曜日の日付を出力するJavaコードを教えてください。

Bing先生の答え:(色々細かい解説をしてくれたが省略)

import java.time.LocalDate;
import java.time.DayOfWeek;
import java.time.format.DateTimeFormatter;

public class Main {
  public static void main(String[] args) {
    // 現在の日付を取得
    LocalDate today = LocalDate.now();
    // 今週の水曜日の日付を取得
    LocalDate wednesday = today.with(DayOfWeek.WEDNESDAY);
    // 日付をフォーマットして出力
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MMdd日");
    System.out.println(wednesday.format(formatter));
  }
}

(動かしてはないけど、まあパッと見でおかしい所は無さそうやし、動くやろ。。。)

anond:20230919114042

もうこのやりとりの時点でダメやん?

ダメじゃねえよ。要件を正確に記述できないならコードなんて書けるわけない。

空気読んでいい感じに読み取ってよというのを求めてるなら、仕様書すら書けないダメプログラマーってことだろ。

コンピューターの中では数字で日付は管理されててそれはJavaでは日付のオブジェクトとして表されるんだけど、「今週=現在の週の水曜日」を表すオブジェクトが欲しい

やったぞ

Javaの日付オブジェクトとして「今週の水曜日」を表すオブジェクトを返す関数を示してください。

java.time パッケージの LocalDate クラスや TemporalAdjusters クラス使用して、「今週の水曜日」の日付オブジェクトを取得できます

以下のコードは、現在の日付に基づいて今週の水曜日の LocalDate オブジェクトを返す Java関数です。

import java.time.DayOfWeek;

import java.time.LocalDate;

import java.time.temporal.TemporalAdjusters;

public class Main {

public static void main(String[] args) {

System.out.println(getThisWeeksWednesday());

}

public static LocalDate getThisWeeksWednesday() {

LocalDate today = LocalDate.now();

return today.with(TemporalAdjusters.nextOrSame(DayOfWeek.WEDNESDAY));

}

}

この関数現在の日付を取得し、それを TemporalAdjusters.nextOrSame(DayOfWeek.WEDNESDAY) メソッドに渡して、今週の水曜日の日付を取得します。今日水曜日である場合、それが返されます。それ以外の場合は、次の水曜日の日付が返されます

今日が週内のどの日であったとしても(木曜日金曜日であったとしても)その週の水曜日を表すオブジェクトを返す関数を示してください。

それには、今週の最初の日を求め、そこから水曜日までの日数を加算するアプローチ使用します。以下のコードでは、週の最初の日を月曜日仮定しています

import java.time.DayOfWeek;

import java.time.LocalDate;

import java.time.temporal.TemporalAdjusters;

public class Main {

public static void main(String[] args) {

System.out.println(getThisWeeksWednesday());

}

public static LocalDate getThisWeeksWednesday() {

LocalDate today = LocalDate.now();

LocalDate monday = today.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));

return monday.plusDays(2);

}

}

このコードは、まず今日の日付を取得し、それから TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY) メソッド使用して今週の月曜日の日付を取得します。そして、月曜日から2日後の日付(水曜日)を取得するために plusDays(2) メソッド使用します。

2023-07-20

VOID通ったいま、ちょっと前にVOIDのHO2とHO4は人間そっくりな見た目のアンドロイドで来るべきだしあまりにも人間離れしてメカメカしい見た目はKPが止めるべきって言ってやや燃えてたふせったー思い出したなあ。

 

通過した今はその意見ちょっと分かるんだけど未通過ではそんなの分かるわけないし、KPだってぴくるーの仮置きイラストでオッケー出したら当日全然メカで来た、とかもありえるだろうし難しいなあ。金出して立ち絵依頼してきてたり、時間かけて自分で描いてたりするだろうし、そこでいやだめですピクルーの絵でやってください、とは言えない。

VOIDってなんか近未来のかっこいい戦闘できる有名シナリオ!と思ってあなたアンドロイドですって言われたらそりゃあ『ぼくのかんがえたさいきょうのあんどろいど』作ってきちゃうよなあ。

 

いやまあシナリオ説明では人間と遜色ない見た目って言われてるしそこをはりきってメカにする方もする方だけど。

2023-06-17

から法律憲法文字通り読むことに意味はないんだっつーの

法律憲法文はソースコードみたいなもんで文字通り読むこと意味ないんだっつーの。判例と一緒に解釈器に通して日常語へ直す必要があるんだっつーの。void main printf文を読み上げたところで実際にどう機能するかはわからないんだっつーの。img2imgのようなAIが出てきたようにtext2textする必要があるんだっつーの。はよ国はこの解釈器に相当するAIを開発すべき

2023-04-01

漏らした直後は本当に冷静だったが、色んなことが身に染みて分かった時れば、不安が押し寄せてきた。赤信号が点滅し始めた時には、とりあえず会社と自宅からほぼ無闇に離れ、雨を頼りに電車が遅れる度に不安をかかえて、恐怖と羞恥どん底家路に着いた。これからどうなるのout of no order: audio, void death line on the blue twi

Anond AI作成

2023-02-25

ChatGPTに架空ヘヴィメタバンドアルバムを考えてもらった

バンド名: Shadowrealm

アルバムタイトル: Apocalypse Chronicles

説明: このアルバムは、終末、死生観地獄など、深いテーマに基づいた曲で構成されています。"Apocalypse Chronicles"は、世界が滅亡に向かう物語表現しており、バンド名の"Shadowrealm"は、深く謎めいた世界観を表現しています

トラックリスト:

“Apocalypse Rises Again"

この曲は、人類の終末時について歌っています悲惨な状況にある人々が、最後希望として再び希望を見つけ、力を取り戻すために戦う物語です。

"Divine Retribution Unleashed"

神の怒りが地上に降り注ぎ、人間たちは絶望に陥ります。この曲は、神の正義と償いについて歌っています

"Hellfire's Eternal Embrace"

地獄の火が全てを焼き尽くす世界表現しています。曲の中では、この火に包まれた者たちが、激しい苦痛に耐えながら、絶望とともに永遠に生きることを歌っています

"Battlecry of the Immortals"

不死の戦士たちが集い、戦いの準備を始めます。曲の中では、彼らが魔法と剣で敵を倒し、最終的に勝利を手にする姿が描かれています

"Shadows in the Afterlife"

死後の世界で待ち受ける謎めいた影たちが、死者を誘惑していきます。この曲は、死生観について考えるきっかけを与えるような深い世界観が表現されています

"Necromancer's Spellbinding Reign"

黒魔術を使う霊能者支配する世界を描いた曲です。彼の魔法によって、死者たちが蘇り、地上に畏怖の念を与えます

"Legion of the Damned Souls"

地獄に落ちた魂たちが、一つにまとまり軍団を作り出す様子が描かれます。曲の中では、彼らが地上に攻め込み、人々を苦しめる様子が描かれています

"Endless Void of Despair"

何もない虚無の世界に取り残された人々が、自分たち存在意義を問いかます。この曲は、生と死、善と悪、そして存在意義についての深い哲学的思考表現されています

2022-10-06

2022-10-04

リコリスコイルかいマジでいいところが一つしかないアニメ

あれ見てちょっとでも面白いと思った人とはもう会話できる気がしないんだよな。

一口で腐ったリンゴなのが分かるぐらいの駄作だと思う。

もう構成がどうとかストーリーがどうとかじゃなくて

カットカット全てがダメというかマジで何も伝わってこないというか

これ絶対何も言いたいことない人拘りとかなんもない人が中核になって作ってる。

それがもう全体に現れてるので1クールどころか初回1話全部どころか

1話の序盤3分ぐらいで見るに耐えなくてオエッとなる。

不味いというより味がなんもしない。

薄め過ぎたジュース飲まされてるような感じ。

勿論ちゃんと全部見て理屈っぽく一個一個ダメ説明しようとしたら出来るけど

そこまでする元気もわかないというかそこまでする値打ちが無いというか。

からわかってほしいんだけど

作品のどこかが思想的に気に入らないとかそういう内容のある嫌悪アンチ感情じゃなくて

単純にこれ薄めたジュースだろって意味でこんなもんがテレビで流れてるのが信じられないんだよな。

かにキャラデザは今風で線もきれい作画もいい”風”だ。

でも俺が見た限り作画がいいところなんか一個もない。

https://www.youtube.com/watch?v=A6UVAzUM-uo

たまたまつべで出てきた後半の方の切り抜きで見せ場のアクションだと思うけどすげーだろこれ。

どういう奴がレイアウト切ってるんだ。クリエイティブってナニ?って聞きたくなる。

上手いとか下手とか言うより虚無を感じる。なんなんだこれ?なんなんだこれ?

これ百合とか言ってる奴もほんとに百合が好きなのか?

百合どころかメイン2人に限らず全てのキャラの会話や感情がなんも無いように俺には見えるが。) 

こんなに本当の意味で虚ろというかnullというかvoidというか

こんなもん見て何も感じないのか?異様さを感じないのか?

「変な味がする」どころじゃねーぞこれは。わからないのか?

これがクソアニメを超えたnullアニメなのがパッと見てわからない人はもう本当に同じ人類な気がしないんだよな。

一体アニメのどこを見て面白いつまんないを判断してるんだ?

EDの曲はいいと思う。

2022-08-18

俺はみずほと同じぐらいのコードしか書けないのに気が付いた

話題ホットエントリ問題、解いてみた。

結論タイトルの通り

不正解score += 0; と書いているのは静的解析がelse節を省略すると指摘してくるから

何もしていない、はそのとおり。

不等号がいい具合に化けてるのでそのままにしておく。


import java.util.*;


public class Main {
    public static void main(String[] args) {
        // 入力parse
       (中略:int numに問題の数、String list[i][] に問題リストを格納している)

        // 採点
        int point = 0;
        for (int i = 0; i &lt; num; i++) {
            String question = list[i][0];
            String answer   = list[i][1];
            
            if (question.equals(answer)) {
                // 完全一point += 2;
            } else {
                if (question.length() == answer.length()) {
                    // 文字数は等しい(部分点の可能性がある)
                    point += scoring(question, answer);                    
                } else {
                    // 不正解
                    point += 0;
                }                
            }
        }
        System.out.println(point);
    }

    // 長さが同じ文字列を採点する
    // 長さが違う文字列を受け渡したときは正しく動作しない
    private static int scoring(String question, String answer) {
        int length = question.length();
        int score  = 2;
        for (int i = 0; i &lt; length; i++) {
          (中略:文字が違うたびにscoreを-1して、socreが0以下になったらそのままreturn)
        }
        return score;
    }
}

2022-08-01

anond:20220731183342

自動安価をつけて返信するプログラムでもこんなに長く複雑になる(一部抜粋) 

/**************************************

以下のCSV_DIR, FILE_PATHS, SETTINGSを書き換えてね。 &lt;h3&gt;o- *************************************/&lt;/h3&gt;

//CSVファイルが置かれてるディレクトリパス投稿前にエラー出たら大体ここの設定ミス。 例:"C:\\Users\\sakuraimasahiro\\Documents\\iMacros\\Macros\\rentou\\";

const CSV_DIR =

'C:\\Users\\USER\\Desktop\\iMacros\\Macros\\rentou\\';

//ファイルパスCSV絶対パスで、拡張子必要。iimは相対パスでよく、拡張子不要

const FILE_PATHS = {

//投稿文が書かれたCSVファイル

textCsv: CSV_DIR + 'textNoAnker.csv',

//レス投稿文が書かれたCSV。通常とレス用で分けないなら同じファイルを使えばいい。

replyTextCsv: CSV_DIR + 'textReply.csv',

};

const SETTINGS = {

//投稿後の基本待ち時間

baseWaitTime: 5,

//baseWaitTime+0~waitTimeRange(ランダム)だけ待つ

waitTimeRange: 5,

//連投しすぎだと忠告された場合に処理を一時停止させる時間(秒)

waitTimeForAvoidingPunishment: 60 * 30,

//メール

mail: 'sage',

//名前設定

nameSettings: {

//名前名無しなら''。

name: '',

//以下、偽装ワッチョイ設定。浪人ワッチョイを非表示にしてるときだけtrueにしてね。

//妙なニックネーム(ワッチョイ、アウアウウーなど)をランダムで決めて付加するかどうか。true=付加する。false=付加しない。

nickname: false,

//妙なニックネームの後に付く8桁の文字列ランダムで決めて付加するかどうか。

korokoro: false,

//IPランダムで決めて付加するかどうか。

ip: false,

//地域ランダムで決めて付加するかどうか。

area: false,

},

postSettings: {

//アンカー無し投稿をするならtrue。しないならfalse。noAnkerPostかreplyPostのどちらかはtrueにすること(両方trueでもOK)。

noAnkerPost: false,

//アンカー付き投稿(返信)をするならtrue。しないならfalse。もしnoAnkerPostとreplyPostの両方がtrue場合投稿は返信が優先され、返信対象が見つからなくなったらアンカー無し投稿をする。

replyPost: true,

//最初に取得するアンカー無し投稿CSVファイルの行番号。もし返信用と同じCSVファイルを使うなら-1と入力

noAnkerPostTextCsvStartRow: 1,

//最初に取得する返信用投稿CSVファイルの行番号。もしアンカー無しと同じCSVファイルを使うなら-1と入力

replyPostTextCsvStartRow: 1,

//テキストCSV/返信用テキストCSVの取得行が最終行に達したら最初の行まで戻るかどうか。true=戻る。false=マクロ終了。

textCsvLoop: true,

//返信する場合、これより小さなレス番には返信しない。返信を投稿すると、この数値は前回の返信先のレス番に更新される。

minAnker: 895,

//返信する場合名前に以下の文字列を含む投稿アンカーをつけて返信する(ワッチョイやIPなど名前フィールドにあるものならなんでも可)。配列複数指定可能指定無しなら空配列([])。filterNamesとfilterNamesNotIncluded共に無指定ならレス番1から順に返信していく(minAnkerが設定されてればそこから順に)。以下のfilter系は全て併用可能

filterNames: [],

//↑とは逆に、名前に以下の文字列を含まない投稿アンカーをつけて返信する。↑と併用も可能

filterNamesNotIncluded: [],

//返信する場合、本文に以下の文字列を含む投稿アンカーをつけて返信する。

filterText: ['自演かな', '自演わらわら', 'スクリプト使うの', '安価ガバ', '&gt;&gt;660', '自演擁護', '最後' ,'あいうえお', 'かきくけこ', 'さしすせそ', 'なにぬねの', 'はひふへほ', 'まみむめも', 'やいゆえよ', 'やゆよ', 'らりるれろ', 'わいうえを', 'わをん', 'わいうえをん'],

},

//自分IPアドレス確認VPNとかでIPを変更してマクロを動かしてるとき、突然VPN作動しなくなってIPが元に戻ったときマクロを止めるためのもの

ipSettings: {

//自分現在IPアドレス確認をする。

checkIp: true,

//以下の文字列自分現在IPアドレスに含まれている場合マクロを一時停止する。基本的自分の本当のIPアドレス入力

avoidTheIp: '133.206.99.224',

},

//浪人設定。最後動作確認したのは5年くらい前で、今も同じように動作するかは、浪人を持ってないか確認できずわからない。

roninSettings: {

//浪人ログインしてるかどうかをチェックするかどうか。trueらするfalseならしない。trueにしていてもし浪人ログインしていないことを確認したらログインしにいく。

checkLogin: false,

//浪人ログインメールアドレス

mailAdress: 'abc@def.com',

//浪人ログインパスワード

password: '1234',

},

//false: run()実行させず(デバッグ用)

run: true,

//true: 投稿処理だけしない デバッグ

skipPost: false,

};

/**************************************

設定箇所終わり。

書き込めない時の早見表 - 5ちゃんねるwiki

https://info.5ch.net/index.php/%E6%9B%B8%E3%81%8D%E8%BE%BC%E3%82%81%E3%81%AA%E3%81%84%E6%99%82%E3%81%AE%E6%97%A9%E8%A6%8B%E8%A1%A8 &lt;h3&gt;o- *************************************/&lt;/h3&gt;

/**************************************

メモ

クラスフィールド宣言できない。

・NULL演算子(??)は使えない。論理積(&amp;&amp;)は使える。

オブジェクトの分割代入はできない。

・importはできない。 &lt;h3&gt;o- *************************************/&lt;/h3&gt;

/**************************************

関数 &lt;h3&gt;o- *************************************/&lt;/h3&gt;

/**

* ここから始まる。

*/

function run() {

//設定ミスがないか調べる。

checkSettings();

var _TextCsvCursors = new TextCsvCursors(

new TextCsvCursor(

SETTINGS.postSettings.noAnkerPostTextCsvStartRow &gt; 0

? SETTINGS.postSettings.noAnkerPostTextCsvStartRow - 1

: SETTINGS.postSettings.noAnkerPostTextCsvStartRow,

FILE_PATHS.textCsv,

SETTINGS.postSettings.textCsvLoop,

),

new TextCsvCursor(

SETTINGS.postSettings.replyPostTextCsvStartRow &gt; 0

? SETTINGS.postSettings.replyPostTextCsvStartRow - 1

: SETTINGS.postSettings.replyPostTextCsvStartRow,

FILE_PATHS.replyTextCsv,

SETTINGS.postSettings.textCsvLoop,

),

);

var _LoopStatuses = new LoopStatuses(0, SETTINGS.postSettings.minAnker);

const _MyPosterName = new MyPosterName({

name: SETTINGS.nameSettings.name,

});

//スレURL指定

const _ThreadUrl = openPromptThreadUrl();

//ループ

while (true) {

//IP確認する設定なら、それをする。

SETTINGS.ipSettings.checkIp &amp;&amp; checkCurrentIpNotTheIp();

//スレを開く

openUrl(_ThreadUrl.fullUrlHttps());

//浪人ログインする設定なら、浪人ログインしているかどうかを確認し、していなければログインしにいく。

if (SETTINGS.roninSettings.checkLogin) {

if (!checkRoninLogin()) {

loginRonin();

continue;

}

}

//投稿に使うテキスト取得。

const p = (function () {

if (SETTINGS.postSettings.replyPost) {

//返信あり設定の場合。返信対象が無いか調べる。

const targetAnkerNumber = createPostDOMList()

.filterPostnumberHigher(_LoopStatuses.currentMinAnker())

.filterByPostername(SETTINGS.postSettings.filterNames)

.filterByPosternameNotIncluded(

SETTINGS.postSettings.filterNamesNotIncluded,

)

.filterByText(SETTINGS.postSettings.filterText)

.lowestPostNumber();

if (targetAnkerNumber !== null) {

//返信対象があったのでアンカー付き投稿文を作る。

const r = _TextCsvCursors.takeNextRowTextAsReply(targetAnkerNumber);

messageDisplay(`返信対象有り。アンカー先: ${targetAnkerNumber}`);

return {

...r,

updatedLoopStatuses:

_LoopStatuses.updateMinAnker(targetAnkerNumber),

};

}

}

if (SETTINGS.postSettings.noAnkerPost) {

//返信対象無し、或いは返信しない設定の場合アンカー無し投稿文を作る。

const r = _TextCsvCursors.takeNextRowTextAsNoAnker();

messageDisplay('返信対象無し。アンカー無し投稿。');

return {

...r,

updatedLoopStatuses: _LoopStatuses,

};

}

return null;

})();

if (p) {

//投稿

postThenCheckError(

_ThreadUrl.serverName(),

_MyPosterName.randomize({

nickname: SETTINGS.nameSettings.nickname,

korokoro: SETTINGS.nameSettings.korokoro,

ip: SETTINGS.nameSettings.ip,

area: SETTINGS.nameSettings.area,

}),

SETTINGS.mail,

p.text,

);

//_TextCsvCursorsと_LoopStatusesを更新

_TextCsvCursors = p.updatedTextCsvCursors;

_LoopStatuses = p.updatedLoopStatuses.incrementPostCount();

messageDisplay([

`投稿回数: ${_LoopStatuses.currentPostCount()}`,

`minAnker: ${_LoopStatuses.currentMinAnker()}`,

`今回アンカー無し投稿取得行: ${_TextCsvCursors.currentRows().noAnker}`,

`今回アンカー有り投稿取得行: ${_TextCsvCursors.currentRows().reply}`,

]);

} else {

messageDisplay([

`返信対象が現われるのを待機中...。`,

`投稿回数: ${_LoopStatuses.currentPostCount()}`,

`minAnker: ${_LoopStatuses.currentMinAnker()}`,

`今回アンカー無し投稿取得行: ${_TextCsvCursors.currentRows().noAnker}`,

`今回アンカー有り投稿取得行: ${_TextCsvCursors.currentRows().reply}`,

]);

}

//短時間で連投しまくると規制されるので一定時間待機。

wait(SETTINGS.baseWaitTime + randomRange(0, SETTINGS.waitTimeRange));

}

}

/**

* 投稿処理と投稿結果を見てリトライしたりマクロ終了したり。

* @param {string} serverName サーバー

* @param {MyPosterName} _MyPosterName

* @param {string} postMail メール

* @param {MyText} _MyText

* @param {number} retryTimes

* @returns {void}}

*/

function postThenCheckError(

serverName,

_MyPosterName,

postMail,

_MyText,

retryTimes = 0,

) {

const r =

retryTimes === 0

? new ValuesOfPost(serverName, _MyPosterName, postMail, _MyText).post(

postTo5chTread,

postConfirm,

)

: new ValuesOfPost(

serverName,

_MyPosterName,

postMail,

_MyText,

).postSubstring(retryTimes, postTo5chTread, postConfirm);

if (r) {

back();

return;

}

//エラーページに飛ばされた。エラー情報取得。

wait(7);

const error = createPostErrorMessage().analyze();

messageDisplay(error.message);

if (error.order === 'KILL') {

kill();

} else if (error.order === 'SKIP') {

return;

} else if (error.order === 'TRUNCATE') {

back();

return postThenCheckError(

serverName,

_MyPosterName,

postMail,

_MyText,

retryTimes + 1,

);

} else if (error.order === 'WAIT') {

wait(SETTINGS.waitTimeForAvoidingPunishment);

return postThenCheckError(

serverName,

_MyPosterName,

postMail,

_MyText,

retryTimes,

);

} else if (error.order === 'LOGIN') {

//動作未確認

return postThenCheckError(

serverName,

_MyPosterName,

postMail,

_MyText,

retryTimes,

);

}

return;

}

/**

* 現在IPアドレスに、SETTINGS.ipSettings.avoidTheIpの値が含まれていないことを確認する。含まれていたらマクロを一時停止。

* @returns

*/

function checkCurrentIpNotTheIp() {

//IP確認ページへ飛ぶ

openUrl('https://www.cman.jp/network/support/go_access.cgi');

const _IpAdress = createIpAdressFromCMan();

if (_IpAdress.includes(SETTINGS.ipSettings.avoidTheIp)) {

pause('現在IP指定した値が含まれていることを確認。');

//ポーズ解除したならもう一度確認しに。

checkCurrentIpNotTheIp();

}

return;

}

/**

* 設定に致命的な問題が無いか検査

* @returns

*/

function checkSettings() {

if (

SETTINGS.postSettings.noAnkerPost === false &amp;&amp;

SETTINGS.postSettings.replyPost === false

) {

return kill('設定エラー。noAnkerPostとreplyPost両方ともfalseになってる。');

}

if (

SETTINGS.postSettings.noAnkerPostTextCsvStartRow &lt; 0 &amp;&amp;

SETTINGS.postSettings.replyPostTextCsvStartRow &lt; 0

) {

return kill(

'設定エラー。noAnkerPostTextCsvStartRowとreplyPostTextCsvStartRow両方とも-1になってる。',

);

}

if (

SETTINGS.postSettings.noAnkerPostTextCsvStartRow === 0 ||

SETTINGS.postSettings.replyPostTextCsvStartRow === 0

) {

return kill(

'設定エラー。noAnkerPostTextCsvStartRow/replyPostTextCsvStartRowの初期値は-1或いは1以上で。',

);

}

}

/**

* 入力フォームを表示して入力されたスレURLを受け取る。

* @returns {ThreadUrl}

*/

function openPromptThreadUrl() {

const url = prompt('スレURL入力');

return new ThreadUrl(url);

}

/**

* 開いてるスレレス全て読み取ってPostListインスタンスを作って返す。

* 重すぎるので使うのやめ。どうやらインスタンスの大量生成が原因な模様。

* createPostDOMListを使う。

* @returns {PostList}

*/

function createPostList() {

const posts = window.document.getElementsByClassName('post');

return new PostList(Array.from(posts).map((e) =&gt; new Post(e)));

}

/**

* 開いてるスレレス全て取得してPostDOMListに格納して返す。

* @returns

*/

function createPostDOMList() {

const posts = window.document.getElementsByClassName('post');

var arrPostDOMList = [];

for (let index = 0; index &lt; posts.length; index++) {

//HTMLCollectionからElementを1つずつ抽出して配列に。

arrPostDOMList.push(posts.item(index));

}

return new PostDOMList(arrPostDOMList);

}

/**

* 開いてる投稿結果画面に表示されてるエラーを読み取ってPostErrorMessageインスタンスを作って返す。

* @returns {PostErrorMessage}

*/

function createPostErrorMessage() {

return new PostErrorMessage(

window.document

.g Permalink | 記事への反応(0) | 15:40

2022-04-05

anond:20220405172611

voidさんとかmohtaさんとかあさだたくやさんとか古の有名人もちらほら

2022-01-16

[]社畜プログラマ気分を味わえた2Dアクションパズルゲーム

Steamで買った『Recursed』というゲーム全ステージクリアしたので、記念に感想を書く。

Steam:Recursed

https://store.steampowered.com/app/497780/Recursed/?l=japanese

操作方法/目的

一見すると『Recursed』は2Dレトロ雰囲気アクションゲームである操作シンプルで、方向キーで左右に移動し、アクションジャンプと物をつかむ/投げるだけだからだ。部屋の中を移動してブロックをつかんで足場を作ったり、鍵をつかんで扉を開錠したりしてゴールへと到着(crystalを獲得)すればステージクリアだ。

概要/パズル

ステージの始めはチュートリアルの様に簡単だが、ステージを経るごとに難しくなり、そのうち何度も試行錯誤したり難しさのあまり何十分も頭を抱えたりもした。

この複雑さを生み出す要因は箱(ゲーム表記ではChest)である。このゲームでは箱の中へジャンプすることで部屋の内に入れるが、一度箱の外にでると箱の内部状態リセットされてしまうのだ。よって箱の中にブロックや鍵などのオブジェクトを持ち込んでも保存することはできないし、ブロック位置リセットされるし、開錠した扉もまた施錠されてしまうことになる。

さらに大きな特徴として、箱を持ち歩いて移動することができるのだ。それにより、箱を持ったまま別の箱に入ったり箱を持って箱の外にでることもできる。

そして、ステージを経ると箱の中の部屋は箱の外と同じ部屋という場面に出くわす。Recursedは『再帰呼び出し』という意味らしいが、まさにこのゲームタイトル通りの現象が起こるのだ。そして、以降のステージでは再帰を交えることでパズルの複雑さはより深まっていく。

再帰プログラミングとRecursed

再帰数学的帰納法アルゴリズムでは定番概念だが、それがパズルとなってプレイヤー思考回路を奪ってくる。私はかつて社畜プログラマとしてJavaプログラミング経験していたので、箱に入ることはメソッドを呼び出すことの様に感じた。オブジェクトを持って箱に入ることは引数を使ってメソッドを実行することであり、オブジェクトを持って箱の外に出ることはreturn文でメソッドを終わらせることであった。

「ゴール前の段差が大きくブロック必要からブロック生成メソッドを呼び出してブロックオブジェクトを返り値として渡さなくてはいけないけど、そうすると鍵オブジェクトをゴールメソッド引数として渡すことができなくて……、いっそのこと、ブロックメソッドからゴールメソッドを呼び出すべきか……、メソッドの返り値は一つだけだが何度も呼び出せばいけるか? この緑色オーラはなんだ? Staticを意味するのか? Staticなオブジェクト位置情報をあらかじめ変更しておけば、ゴールメソッド引数渡しをする必要がなくなるのか?」

こんなことを一つのステージクリアするだけのために何十分も考えていたのだ。念のために書いておくが、ゲーム内には数学用語プログラミング用語は一切出てこない。ただ単に、私にJavaプログラミング経験があるからその用語パズルを考えていただけだ。ゲーム内で箱から出入りしたりオブジェクトを箱の中から出し入れするとどうなるかを、Eclipseステップ実行するように想起していた。ちなみに、ゲーム内で存在しない部屋や壁の中に移動しようとするとparadoxが発生して強制的特殊な部屋へ移動されるが、私はその度にステップ実行でExceptionに遷移されたことの様に感じた。他の言語精通するプログラマだったり数学畑の人ならば、私とは異なる概念パズル思考をするのだろうか。

プログラマを辞めて何年もプログラミング思考をしてこなかった私でも全ステージクリアすることができたのだから学校プログラムを学んでいたり現役でプログラミングをしてきた人ならばこのゲーム『Recursed』をクリアすることは可能だろう。いっそのこと、『Recursed』のクリアすらできない人にプログラミングができるのか? と煽ってみたいくらいだ。

ちなみに、もし私が社畜プログラマ時代にこのゲームをやったらブチ切れていただろう。なんで仕事プログラミングで脳を酷使した上に自宅のゲームでも同じようなプログラム的な思考をしなければならないんだよと。プログラミングから何年も離れていた今の私にとって『Recursed』は、プログラミング単体テストが無事成功した時の快楽を思い出させるものだった。

感想

『Recursed』はパズルとしての難易度は非常に高いが、理不尽な解法を求められることはない。理不尽な解法のクイズパズルには怒りが湧いてくる。ひと昔前のクイズ番組を見たことのある人なら『モヤッとボール』を投げつけたくなる、と言えばその感情が伝わるだろう。『Recursed』はどんなに難しいステージでも、ただただ開発者パズル作成能力に感嘆するだけで怒りは湧いてこない。

似たようなアクションパズルゲームとして有名なのは『The Witness』であろう。『The Witness』も私が好きなパズルゲームであり、ゲームとして高い評価を得ていることに間違いはないのだが、しばしば理不尽な解法を求められるパズルがありその度に私は怒りが湧いてきたものだ。そう考えると、『Recursed』はパズルとしての洗練さだけなら『The Witness』を超えるものだと私は思う。

好きなステージ

具体的にパズル解説するととただのネタバレになってしまうので(もっとも、文字だけでパズルの解法を説明できないのだが)、『Recursed』で私が好きなステージを述べる。順番は攻略順に並べた。

Woodland/Loop

再帰概念が利用される最初ステージ

チュートリアルの様に簡単だったこれまでのステージから突如再帰概念を見せつけられることで、このゲームタイトル名の意味理解することになった。

Ruins/Interlock

鍵を手に入れたら扉に到達できず、先に扉に到達したら鍵が手に入らずで、まさにインターロック名前に相応しいステージだった。

Temple/Blister

一画面だけのオブジェクトが少ないシンプルステージだが、氷の壁に阻まれてゴールできず苦戦した。試行錯誤の繰り返しの末クリアできたが、何故クリアできたのかがわからない。

The Void/Sojourn

The Voidステージはどれもこれまでの集大成という感じでやりごたえあったが、中でも頭をひねらせたのがこれ。ゴールの部屋を水没させたり水の無い状態で入ったりして鍵を運搬するのに苦労した。

The Void/Escalate

箱を左右へ投げて移動を繰り返して、高い位置にあるゴールを目指すのがまさにEscalateというステージ名そのものだった。paradoxを発生した後のパターンが複雑だったのが印象に残っている。paradoxを発生させたらcrystal獲得(通常のクリア)できないのかよ……という落胆は大きかった。しかし、それだけにcrystal獲得とdiamond獲得(paradox発生によるクリア)のどちらも大きな達成感を得られた。

The Oobleck Conundrum/Transfer

簡単そうに見えて難しく、唯一ステージ飛ばして次のステージへと進んだので印象に残っている。後に複数日に及ぶ数時間試行錯誤で改めてこのステージクリアができて、クリアにかかった時間が最も長くなったステージでもある。しかしながら、おそらく開発者想定外方法でのクリアであり。初期画面から右の方へ一切行かずにOobleckさえ使用しないというクリア方法スッキリしなかった。といっても、開発者の想定を無視するゴリ押し的なクリアを見つけたのはこのステージだけだった。

The Last Tapestry/Flight

The Void/Escalateと似たコンセプトのステージだが、釜(JavaにおけるThread?)のギミックを利用したより複雑な構成となっている。高い位置にあるゴールを目指すのは、やはりFlightというステージ名そのものだった。

最後

この記事投稿する前にエンディングを見れていないことに気づいた。

全ステージクリア(全てのCrystal取得)したからと、この記事執筆するためにネタバレを気にせず攻略情報を調べていたけど、エンディングなんてわかる訳ねえよ。The Void/Trilemmaの最後にCrystal取得とは関係ない意味深なオブジェクトがあることには気づいていたけど……。ちなみに、私のSteam実績によるとdiamondとrubieの全取得はできてないけれども、もう取得する気力はない。パズルゲームガチ勢にとっては、実績全解除を目指さない私は軟弱者に映るのだろうか? 攻略を調べずに実績全解除できる人は、高い論理的思考能力を有しているに違いない。

ログイン ユーザー登録
ようこそ ゲスト さん